From c574668b750c50ca21395435ecbe920327328b10 Mon Sep 17 00:00:00 2001 From: AnshuJalan Date: Thu, 22 Jan 2026 07:10:40 +0530 Subject: [PATCH 1/8] feat: add a POC for proposing with real time proofs --- common/src/l2/taiko_driver/models.rs | 2 + shasta/src/l1/execution_layer.rs | 24 +- shasta/src/l1/proposal_tx_builder.rs | 39 +- shasta/src/l2/abi/Bridge.json | 24094 +++++++++++++++- shasta/src/l2/abi/SurgeInbox.json | 1743 ++ shasta/src/l2/bindings.rs | 7 + shasta/src/l2/mod.rs | 2 +- .../node/proposal_manager/batch_builder.rs | 21 +- shasta/src/node/proposal_manager/mod.rs | 20 +- shasta/src/node/proposal_manager/proposal.rs | 4 + 10 files changed, 25943 insertions(+), 13 deletions(-) create mode 100644 shasta/src/l2/abi/SurgeInbox.json diff --git a/common/src/l2/taiko_driver/models.rs b/common/src/l2/taiko_driver/models.rs index 506a1a29..8e1715c0 100644 --- a/common/src/l2/taiko_driver/models.rs +++ b/common/src/l2/taiko_driver/models.rs @@ -14,6 +14,7 @@ pub struct BuildPreconfBlockRequestBody { pub struct BuildPreconfBlockResponse { pub number: u64, pub hash: B256, + pub state_root: B256, pub parent_hash: B256, } @@ -28,6 +29,7 @@ impl BuildPreconfBlockResponse { ) .ok()?, hash: Self::to_b256(header.get("hash")?.as_str()?)?, + state_root: Self::to_b256(header.get("stateRoot")?.as_str()?)?, parent_hash: Self::to_b256(header.get("parentHash")?.as_str()?)?, }) } diff --git a/shasta/src/l1/execution_layer.rs b/shasta/src/l1/execution_layer.rs index 4238431f..1648c5ce 100644 --- a/shasta/src/l1/execution_layer.rs +++ b/shasta/src/l1/execution_layer.rs @@ -22,10 +22,13 @@ use common::{ }; use pacaya::l1::traits::{OperatorError, PreconfOperator, WhitelistProvider}; use std::sync::Arc; -use taiko_bindings::inbox::{ - IForcedInclusionStore::ForcedInclusion, - IInbox::CoreState, - Inbox::{self, InboxInstance}, +use taiko_bindings::{ + anchor::ICheckpointStore::Checkpoint, + inbox::{ + IForcedInclusionStore::ForcedInclusion, + IInbox::CoreState, + Inbox::{self, InboxInstance}, + }, }; use tokio::sync::mpsc::Sender; use tracing::info; @@ -37,6 +40,8 @@ pub struct ExecutionLayer { pub transaction_monitor: TransactionMonitor, contract_addresses: ContractAddresses, inbox_instance: InboxInstance, + // Surge: For signing the state checkpoints sent as proof with proposal + checkpoint_signer: alloy::signers::local::PrivateKeySigner, } impl ELTrait for ExecutionLayer { @@ -91,6 +96,12 @@ impl ELTrait for ExecutionLayer { transaction_monitor, contract_addresses, inbox_instance, + // Surge: Hard coding the private key for the POC + // (This is the first private key from foundry anvil) + checkpoint_signer: alloy::signers::local::PrivateKeySigner::from_bytes( + &"0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80" + .parse::>()?, + )?, }) } @@ -167,6 +178,7 @@ impl ExecutionLayer { &self, l2_blocks: Vec, num_forced_inclusion: u8, + checkpoint: Checkpoint, ) -> Result<(), Error> { info!( "📦 Proposing with {} blocks | num_forced_inclusion: {}", @@ -176,13 +188,15 @@ impl ExecutionLayer { // Build propose transaction // TODO fill extra gas percentege from config - let builder = ProposalTxBuilder::new(self.provider.clone(), 10); + let builder = + ProposalTxBuilder::new(self.provider.clone(), 10, self.checkpoint_signer.clone()); let tx = builder .build_propose_tx( l2_blocks, self.preconfer_address, self.contract_addresses.shasta_inbox, num_forced_inclusion, + checkpoint, ) .await?; diff --git a/shasta/src/l1/proposal_tx_builder.rs b/shasta/src/l1/proposal_tx_builder.rs index 98d62815..9c7576af 100644 --- a/shasta/src/l1/proposal_tx_builder.rs +++ b/shasta/src/l1/proposal_tx_builder.rs @@ -1,3 +1,4 @@ +use crate::l2::bindings::SurgeInbox; use alloy::{ consensus::SidecarBuilder, eips::eip4844::BlobTransactionSidecar, @@ -8,11 +9,14 @@ use alloy::{ }, providers::{DynProvider, Provider}, rpc::types::TransactionRequest, + signers::Signer, + sol_types::SolValue, }; use alloy_json_rpc::RpcError; use anyhow::Error; use common::l1::{fees_per_gas::FeesPerGas, tools, transaction_error::TransactionError}; use common::shared::l2_block_v2::L2BlockV2; +use taiko_bindings::anchor::ICheckpointStore::Checkpoint; use taiko_bindings::inbox::{IInbox::ProposeInput, Inbox, LibBlobs::BlobReference}; use taiko_protocol::shasta::{ BlobCoder, @@ -23,13 +27,19 @@ use tracing::warn; pub struct ProposalTxBuilder { provider: DynProvider, extra_gas_percentage: u64, + checkpoint_signer: alloy::signers::local::PrivateKeySigner, } impl ProposalTxBuilder { - pub fn new(provider: DynProvider, extra_gas_percentage: u64) -> Self { + pub fn new( + provider: DynProvider, + extra_gas_percentage: u64, + checkpoint_signer: alloy::signers::local::PrivateKeySigner, + ) -> Self { Self { provider, extra_gas_percentage, + checkpoint_signer, } } @@ -40,9 +50,10 @@ impl ProposalTxBuilder { from: Address, to: Address, num_forced_inclusion: u8, + checkpoint: Checkpoint, ) -> Result { let tx_blob = self - .build_propose_blob(l2_blocks, from, to, num_forced_inclusion) + .build_propose_blob(l2_blocks, from, to, num_forced_inclusion, checkpoint) .await?; let tx_blob_gas = match self.provider.estimate_gas(tx_blob.clone()).await { Ok(gas) => gas, @@ -87,6 +98,7 @@ impl ProposalTxBuilder { from: Address, to: Address, num_forced_inclusion: u8, + checkpoint: Checkpoint, ) -> Result { let mut block_manifests = >::with_capacity(l2_blocks.len()); for l2_block in &l2_blocks { @@ -131,15 +143,36 @@ impl ProposalTxBuilder { let inbox = Inbox::new(to, self.provider.clone()); let encoded_proposal_input = inbox.encodeProposeInput(input).call().await?; + // Surge: using `proposeWithProof(..)` in Surge Inbox + let proof_data = self.build_proof_data(&checkpoint).await?; let tx = TransactionRequest::default() .with_from(from) .with_to(to) .with_blob_sidecar(sidecar) - .with_call(&Inbox::proposeCall { + .with_call(&SurgeInbox::proposeWithProofCall { _lookahead: Bytes::new(), _data: encoded_proposal_input, + _proof: proof_data, }); Ok(tx) } + + // Surge: builds the 161-byte proof data + // [0..96: ABI-encoded checkpoint][96..161: signed checkpoint digest] + async fn build_proof_data(&self, checkpoint: &Checkpoint) -> Result { + let checkpoint_encoded = checkpoint.abi_encode(); + let checkpoint_digest = alloy::primitives::keccak256(&checkpoint_encoded); + let signature = self.checkpoint_signer.sign_hash(&checkpoint_digest).await?; + + let mut signature_bytes = [0_u8; 65]; + signature_bytes[..32].copy_from_slice(signature.r().to_be_bytes::<32>().as_slice()); + signature_bytes[32..64].copy_from_slice(signature.s().to_be_bytes::<32>().as_slice()); + signature_bytes[64] = (signature.v() as u8) + 27; + + let mut proof_data = Vec::with_capacity(161); + proof_data.extend_from_slice(&checkpoint_encoded); + proof_data.extend_from_slice(&signature_bytes); + Ok(Bytes::from(proof_data)) + } } diff --git a/shasta/src/l2/abi/Bridge.json b/shasta/src/l2/abi/Bridge.json index 60f86e2d..f615734a 100644 --- a/shasta/src/l2/abi/Bridge.json +++ b/shasta/src/l2/abi/Bridge.json @@ -1 +1,24093 @@ -{"abi":[{"type":"constructor","inputs":[{"name":"_resolver","type":"address","internalType":"address"},{"name":"_signalService","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"type":"function","name":"GAS_OVERHEAD","inputs":[],"outputs":[{"name":"","type":"uint32","internalType":"uint32"}],"stateMutability":"view"},{"type":"function","name":"GAS_RESERVE","inputs":[],"outputs":[{"name":"","type":"uint32","internalType":"uint32"}],"stateMutability":"view"},{"type":"function","name":"RELAYER_MAX_PROOF_BYTES","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"acceptOwnership","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"context","inputs":[],"outputs":[{"name":"ctx_","type":"tuple","internalType":"struct IBridge.Context","components":[{"name":"msgHash","type":"bytes32","internalType":"bytes32"},{"name":"from","type":"address","internalType":"address"},{"name":"srcChainId","type":"uint64","internalType":"uint64"}]}],"stateMutability":"view"},{"type":"function","name":"failMessage","inputs":[{"name":"_message","type":"tuple","internalType":"struct IBridge.Message","components":[{"name":"id","type":"uint64","internalType":"uint64"},{"name":"fee","type":"uint64","internalType":"uint64"},{"name":"gasLimit","type":"uint32","internalType":"uint32"},{"name":"from","type":"address","internalType":"address"},{"name":"srcChainId","type":"uint64","internalType":"uint64"},{"name":"srcOwner","type":"address","internalType":"address"},{"name":"destChainId","type":"uint64","internalType":"uint64"},{"name":"destOwner","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"getMessageMinGasLimit","inputs":[{"name":"dataLength","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint32","internalType":"uint32"}],"stateMutability":"pure"},{"type":"function","name":"hashMessage","inputs":[{"name":"_message","type":"tuple","internalType":"struct IBridge.Message","components":[{"name":"id","type":"uint64","internalType":"uint64"},{"name":"fee","type":"uint64","internalType":"uint64"},{"name":"gasLimit","type":"uint32","internalType":"uint32"},{"name":"from","type":"address","internalType":"address"},{"name":"srcChainId","type":"uint64","internalType":"uint64"},{"name":"srcOwner","type":"address","internalType":"address"},{"name":"destChainId","type":"uint64","internalType":"uint64"},{"name":"destOwner","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"}]}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"pure"},{"type":"function","name":"impl","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"inNonReentrant","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"init","inputs":[{"name":"_owner","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"init2","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"isDestChainEnabled","inputs":[{"name":"_chainId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"enabled_","type":"bool","internalType":"bool"},{"name":"destBridge_","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"isMessageFailed","inputs":[{"name":"_message","type":"tuple","internalType":"struct IBridge.Message","components":[{"name":"id","type":"uint64","internalType":"uint64"},{"name":"fee","type":"uint64","internalType":"uint64"},{"name":"gasLimit","type":"uint32","internalType":"uint32"},{"name":"from","type":"address","internalType":"address"},{"name":"srcChainId","type":"uint64","internalType":"uint64"},{"name":"srcOwner","type":"address","internalType":"address"},{"name":"destChainId","type":"uint64","internalType":"uint64"},{"name":"destOwner","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"}]},{"name":"_proof","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"isMessageReceived","inputs":[{"name":"_message","type":"tuple","internalType":"struct IBridge.Message","components":[{"name":"id","type":"uint64","internalType":"uint64"},{"name":"fee","type":"uint64","internalType":"uint64"},{"name":"gasLimit","type":"uint32","internalType":"uint32"},{"name":"from","type":"address","internalType":"address"},{"name":"srcChainId","type":"uint64","internalType":"uint64"},{"name":"srcOwner","type":"address","internalType":"address"},{"name":"destChainId","type":"uint64","internalType":"uint64"},{"name":"destOwner","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"}]},{"name":"_proof","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"isMessageSent","inputs":[{"name":"_message","type":"tuple","internalType":"struct IBridge.Message","components":[{"name":"id","type":"uint64","internalType":"uint64"},{"name":"fee","type":"uint64","internalType":"uint64"},{"name":"gasLimit","type":"uint32","internalType":"uint32"},{"name":"from","type":"address","internalType":"address"},{"name":"srcChainId","type":"uint64","internalType":"uint64"},{"name":"srcOwner","type":"address","internalType":"address"},{"name":"destChainId","type":"uint64","internalType":"uint64"},{"name":"destOwner","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"}]}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"messageStatus","inputs":[{"name":"msgHash","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"status","type":"uint8","internalType":"enum IBridge.Status"}],"stateMutability":"view"},{"type":"function","name":"nextMessageId","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"owner","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"pause","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"paused","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"pendingOwner","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"processMessage","inputs":[{"name":"_message","type":"tuple","internalType":"struct IBridge.Message","components":[{"name":"id","type":"uint64","internalType":"uint64"},{"name":"fee","type":"uint64","internalType":"uint64"},{"name":"gasLimit","type":"uint32","internalType":"uint32"},{"name":"from","type":"address","internalType":"address"},{"name":"srcChainId","type":"uint64","internalType":"uint64"},{"name":"srcOwner","type":"address","internalType":"address"},{"name":"destChainId","type":"uint64","internalType":"uint64"},{"name":"destOwner","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"}]},{"name":"_proof","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"status_","type":"uint8","internalType":"enum IBridge.Status"},{"name":"reason_","type":"uint8","internalType":"enum IBridge.StatusReason"}],"stateMutability":"nonpayable"},{"type":"function","name":"proxiableUUID","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"recallMessage","inputs":[{"name":"_message","type":"tuple","internalType":"struct IBridge.Message","components":[{"name":"id","type":"uint64","internalType":"uint64"},{"name":"fee","type":"uint64","internalType":"uint64"},{"name":"gasLimit","type":"uint32","internalType":"uint32"},{"name":"from","type":"address","internalType":"address"},{"name":"srcChainId","type":"uint64","internalType":"uint64"},{"name":"srcOwner","type":"address","internalType":"address"},{"name":"destChainId","type":"uint64","internalType":"uint64"},{"name":"destOwner","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"}]},{"name":"_proof","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"renounceOwnership","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"resolver","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"retryMessage","inputs":[{"name":"_message","type":"tuple","internalType":"struct IBridge.Message","components":[{"name":"id","type":"uint64","internalType":"uint64"},{"name":"fee","type":"uint64","internalType":"uint64"},{"name":"gasLimit","type":"uint32","internalType":"uint32"},{"name":"from","type":"address","internalType":"address"},{"name":"srcChainId","type":"uint64","internalType":"uint64"},{"name":"srcOwner","type":"address","internalType":"address"},{"name":"destChainId","type":"uint64","internalType":"uint64"},{"name":"destOwner","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"}]},{"name":"_isLastAttempt","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"sendMessage","inputs":[{"name":"_message","type":"tuple","internalType":"struct IBridge.Message","components":[{"name":"id","type":"uint64","internalType":"uint64"},{"name":"fee","type":"uint64","internalType":"uint64"},{"name":"gasLimit","type":"uint32","internalType":"uint32"},{"name":"from","type":"address","internalType":"address"},{"name":"srcChainId","type":"uint64","internalType":"uint64"},{"name":"srcOwner","type":"address","internalType":"address"},{"name":"destChainId","type":"uint64","internalType":"uint64"},{"name":"destOwner","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"}]}],"outputs":[{"name":"msgHash_","type":"bytes32","internalType":"bytes32"},{"name":"message_","type":"tuple","internalType":"struct IBridge.Message","components":[{"name":"id","type":"uint64","internalType":"uint64"},{"name":"fee","type":"uint64","internalType":"uint64"},{"name":"gasLimit","type":"uint32","internalType":"uint32"},{"name":"from","type":"address","internalType":"address"},{"name":"srcChainId","type":"uint64","internalType":"uint64"},{"name":"srcOwner","type":"address","internalType":"address"},{"name":"destChainId","type":"uint64","internalType":"uint64"},{"name":"destOwner","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"}]}],"stateMutability":"payable"},{"type":"function","name":"signalForFailedMessage","inputs":[{"name":"_msgHash","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"pure"},{"type":"function","name":"signalService","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract ISignalService"}],"stateMutability":"view"},{"type":"function","name":"transferOwnership","inputs":[{"name":"newOwner","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"unpause","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"upgradeTo","inputs":[{"name":"newImplementation","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"upgradeToAndCall","inputs":[{"name":"newImplementation","type":"address","internalType":"address"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"payable"},{"type":"event","name":"AdminChanged","inputs":[{"name":"previousAdmin","type":"address","indexed":false,"internalType":"address"},{"name":"newAdmin","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"BeaconUpgraded","inputs":[{"name":"beacon","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"Initialized","inputs":[{"name":"version","type":"uint8","indexed":false,"internalType":"uint8"}],"anonymous":false},{"type":"event","name":"MessageProcessed","inputs":[{"name":"msgHash","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"message","type":"tuple","indexed":false,"internalType":"struct IBridge.Message","components":[{"name":"id","type":"uint64","internalType":"uint64"},{"name":"fee","type":"uint64","internalType":"uint64"},{"name":"gasLimit","type":"uint32","internalType":"uint32"},{"name":"from","type":"address","internalType":"address"},{"name":"srcChainId","type":"uint64","internalType":"uint64"},{"name":"srcOwner","type":"address","internalType":"address"},{"name":"destChainId","type":"uint64","internalType":"uint64"},{"name":"destOwner","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"}]},{"name":"stats","type":"tuple","indexed":false,"internalType":"struct Bridge.ProcessingStats","components":[{"name":"gasUsedInFeeCalc","type":"uint32","internalType":"uint32"},{"name":"proofSize","type":"uint32","internalType":"uint32"},{"name":"numCacheOps","type":"uint32","internalType":"uint32"},{"name":"processedByRelayer","type":"bool","internalType":"bool"}]}],"anonymous":false},{"type":"event","name":"MessageSent","inputs":[{"name":"msgHash","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"message","type":"tuple","indexed":false,"internalType":"struct IBridge.Message","components":[{"name":"id","type":"uint64","internalType":"uint64"},{"name":"fee","type":"uint64","internalType":"uint64"},{"name":"gasLimit","type":"uint32","internalType":"uint32"},{"name":"from","type":"address","internalType":"address"},{"name":"srcChainId","type":"uint64","internalType":"uint64"},{"name":"srcOwner","type":"address","internalType":"address"},{"name":"destChainId","type":"uint64","internalType":"uint64"},{"name":"destOwner","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"}]}],"anonymous":false},{"type":"event","name":"MessageStatusChanged","inputs":[{"name":"msgHash","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"status","type":"uint8","indexed":false,"internalType":"enum IBridge.Status"}],"anonymous":false},{"type":"event","name":"OwnershipTransferStarted","inputs":[{"name":"previousOwner","type":"address","indexed":true,"internalType":"address"},{"name":"newOwner","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"OwnershipTransferred","inputs":[{"name":"previousOwner","type":"address","indexed":true,"internalType":"address"},{"name":"newOwner","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"Paused","inputs":[{"name":"account","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"Unpaused","inputs":[{"name":"account","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"Upgraded","inputs":[{"name":"implementation","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"error","name":"ACCESS_DENIED","inputs":[]},{"type":"error","name":"B_INSUFFICIENT_GAS","inputs":[]},{"type":"error","name":"B_INVALID_CHAINID","inputs":[]},{"type":"error","name":"B_INVALID_CONTEXT","inputs":[]},{"type":"error","name":"B_INVALID_FEE","inputs":[]},{"type":"error","name":"B_INVALID_GAS_LIMIT","inputs":[]},{"type":"error","name":"B_INVALID_STATUS","inputs":[]},{"type":"error","name":"B_INVALID_VALUE","inputs":[]},{"type":"error","name":"B_MESSAGE_NOT_SENT","inputs":[]},{"type":"error","name":"B_PERMISSION_DENIED","inputs":[]},{"type":"error","name":"B_PROOF_TOO_LARGE","inputs":[]},{"type":"error","name":"B_RETRY_FAILED","inputs":[]},{"type":"error","name":"B_SIGNAL_NOT_RECEIVED","inputs":[]},{"type":"error","name":"ETH_TRANSFER_FAILED","inputs":[]},{"type":"error","name":"FUNC_NOT_IMPLEMENTED","inputs":[]},{"type":"error","name":"INVALID_PAUSE_STATUS","inputs":[]},{"type":"error","name":"REENTRANT_CALL","inputs":[]},{"type":"error","name":"RESOLVER_NOT_FOUND","inputs":[]},{"type":"error","name":"ZERO_ADDRESS","inputs":[]},{"type":"error","name":"ZERO_VALUE","inputs":[]}],"bytecode":{"object":"0x60e060405230608052348015610013575f5ffd5b5060405161379838038061379883398101604081905261003291610151565b8161003b61007a565b6001600160a01b03811661006257604051634b6f57f560e01b815260040160405180910390fd5b6001600160a01b0390811660a0521660c05250610182565b5f54610100900460ff16156100e55760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b5f5460ff90811614610134575f805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b80516001600160a01b038116811461014c575f5ffd5b919050565b5f5f60408385031215610162575f5ffd5b61016b83610136565b915061017960208401610136565b90509250929050565b60805160a05160c05161357c61021c5f395f8181610439015281816107310152818161085901528181610d0401528181610f0a01528181610f530152818161149401528181611514015281816117b7015281816118bb0152818161194e0152611abb01525f818161022f015261252d01525f81816111e9015281816112290152818161130b0152818161134b01526113c2015261357c5ff3fe6080604052600436106101fc575f3560e01c8063715018a611610113578063a730cdfb1161009d578063d0496d6a1161006d578063d0496d6a146105e2578063d1aaa5df1461062a578063e30c39781461064a578063eefbf17e14610667578063f2fde38b146106a5575f5ffd5b8063a730cdfb14610578578063b8acae0e1461058e578063be880c81146105ad578063c012fa77146105c3575f5ffd5b80638abf6077116100e35780638abf6077146104cb5780638da5cb5b146104df5780638e3881a9146104fc578063913b16cb1461053a5780639efc7a2e14610559575f5ffd5b8063715018a61461045b57806379ba50971461046f5780637cbadfaa146104835780638456cb59146104b7575f5ffd5b80633c6cf4731161019457806352d1902d1161016457806352d1902d146103b65780635862f6e1146103ca5780635c975abb146103e957806360620c6b1461040957806362d0945314610428575f5ffd5b80633c6cf473146103305780633f4ba83a1461036b578063422770fa1461037f5780634f1ef286146103a3575f5ffd5b80631bdb0037116101cf5780631bdb00371461029f5780632035065e146102c05780633075db56146102ed5780633659cfe614610311575f5ffd5b80630432873c1461020057806304f3bcec14610221578063069489a21461026c57806319ab453c14610280575b5f5ffd5b34801561020b575f5ffd5b5061021f61021a3660046129c9565b6106c4565b005b34801561022c575f5ffd5b507f00000000000000000000000000000000000000000000000000000000000000005b6040516001600160a01b0390911681526020015b60405180910390f35b348015610277575f5ffd5b5061021f6108fc565b34801561028b575f5ffd5b5061021f61029a366004612a3b565b6109b3565b6102b26102ad366004612a56565b610a79565b604051610263929190612be2565b3480156102cb575f5ffd5b506102df6102da366004612bfa565b610d8b565b604051610263929190612cb7565b3480156102f8575f5ffd5b506103016111c7565b6040519015158152602001610263565b34801561031c575f5ffd5b5061021f61032b366004612a3b565b6111df565b34801561033b575f5ffd5b5061035e61034a366004612ce2565b60fc6020525f908152604090205460ff1681565b6040516102639190612cf9565b348015610376575f5ffd5b5061021f6112a6565b34801561038a575f5ffd5b5061039562030d4081565b604051908152602001610263565b61021f6103b1366004612dcd565b611301565b3480156103c1575f5ffd5b506103956113b6565b3480156103d5575f5ffd5b506103016103e4366004612bfa565b611468565b3480156103f4575f5ffd5b5061030160c954610100900460ff1660021490565b348015610414575f5ffd5b50610301610423366004612a56565b6114e3565b348015610433575f5ffd5b5061024f7f000000000000000000000000000000000000000000000000000000000000000081565b348015610466575f5ffd5b5061021f6115b7565b34801561047a575f5ffd5b5061021f6115c8565b34801561048e575f5ffd5b506104a261049d366004612ce2565b61163f565b60405163ffffffff9091168152602001610263565b3480156104c2575f5ffd5b5061021f61165d565b3480156104d6575f5ffd5b5061024f6116b2565b3480156104ea575f5ffd5b506033546001600160a01b031661024f565b348015610507575f5ffd5b5061051b610516366004612e2f565b6116c0565b6040805192151583526001600160a01b03909116602083015201610263565b348015610545575f5ffd5b5061021f610554366004612a56565b6116ec565b348015610564575f5ffd5b5061021f610573366004612bfa565b61183a565b348015610583575f5ffd5b506104a26201d4c081565b348015610599575f5ffd5b506103016105a8366004612bfa565b611a8f565b3480156105b8575f5ffd5b506104a2620c350081565b3480156105ce575f5ffd5b506103956105dd366004612f48565b611af6565b3480156105ed575f5ffd5b506105f6611b25565b60408051825181526020808401516001600160a01b031690820152918101516001600160401b031690820152606001610263565b348015610635575f5ffd5b50610395610644366004612ce2565b60031890565b348015610655575f5ffd5b506065546001600160a01b031661024f565b348015610672575f5ffd5b5060fb5461068d90600160401b90046001600160401b031681565b6040516001600160401b039091168152602001610263565b3480156106b0575f5ffd5b5061021f6106bf366004612a3b565b611bcc565b6106d460e0830160c08401612e2f565b6106dd81611c3d565b6106ed60a0840160808501612e2f565b6106f681611c66565b6106fe611ca2565b610706611cd4565b6107106002611d03565b5f61071d6105dd86612f79565b905061072a816001611d19565b5f610755867f0000000000000000000000000000000000000000000000000000000000000000611d6b565b156107a0576107998661012001356188b860405180602001604052805f8152508960e00160208101906107889190612a3b565b6001600160a01b0316929190611e62565b905061081a565b6107b06060870160408801612f84565b63ffffffff1615806107bf5750845b80156107ed57506107d7610100870160e08801612a3b565b6001600160a01b0316336001600160a01b031614155b1561080b576040516372b6e1c360e11b815260040160405180910390fd5b61081786835a5f611e9f565b90505b80156108305761082b826002611fc3565b6108ea565b84156108d157610841826003611fc3565b60405163019b28af60e61b81526003831860048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906366ca2bc0906024016020604051808303815f875af11580156108a7573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108cb9190612f9d565b506108ea565b60405163161e3ead60e01b815260040160405180910390fd5b50506108f66001611d03565b50505050565b610904612080565b5f54600290610100900460ff1615801561092457505f5460ff8083169116105b6109495760405162461bcd60e51b815260040161094090612fb4565b60405180910390fd5b5f805460fb805467ffffffffffffffff1916905560ff82815561010083815561ff001991851661ffff19909316831717169091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a150565b5f54610100900460ff16158080156109d157505f54600160ff909116105b806109ea5750303b1580156109ea57505f5460ff166001145b610a065760405162461bcd60e51b815260040161094090612fb4565b5f805460ff191660011790558015610a27575f805461ff0019166101001790555b610a30826120da565b8015610a75575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b60408051610160810182525f8082526020820181905291810182905260608082018390526080820183905260a0820183905260c0820183905260e0820183905261010082018390526101208201839052610140820152610adf60c0840160a08501612a3b565b610ae881612138565b610af9610100850160e08601612a3b565b610b0281612138565b610b1461012086016101008701612a3b565b610b1d81612138565b610b2d60e0870160c08801612e2f565b610b3681611c66565b610b3e611ca2565b610b46611cd4565b610b506002611d03565b610b606060880160408901612f84565b63ffffffff165f03610ba857610b7c6040880160208901612e2f565b6001600160401b031615610ba35760405163c9f5178760e01b815260040160405180910390fd5b610bd0565b610bb18761215f565b5f03610bd0576040516308c2ad5360e01b815260040160405180910390fd5b5f610be461051660e08a0160c08b01612e2f565b50905080610c0557604051631c6c777560e31b815260040160405180910390fd5b34610c1660408a0160208b01612e2f565b610c2e906001600160401b03166101208b0135613016565b14610c4c57604051634ac2abdf60e11b815260040160405180910390fd5b610c5588612f79565b60fb8054919750600160401b9091046001600160401b0316906008610c7983613029565b82546101009290920a6001600160401b03818102199093169183160217909155908116875233606088015246166080870152610cb486611af6565b9650867fe33fd33b4f45b95b1c196242240c5b5233129d724b578f95b66ce8d8aae9351787604051610ce69190613053565b60405180910390a260405163019b28af60e61b8152600481018890527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906366ca2bc0906024016020604051808303815f875af1158015610d52573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d769190612f9d565b5050610d826001611d03565b50505050915091565b5f5f610d95611ca2565b610d9d611cd4565b610da76002611d03565b5f5a905046610dbc60e0880160c08901612e2f565b6001600160401b031614610de357604051631c6c777560e31b815260040160405180910390fd5b610df360a0870160808801612e2f565b6001600160401b03161580610e1f575046610e1460a0880160808901612e2f565b6001600160401b0316145b15610e3d57604051631c6c777560e31b815260040160405180910390fd5b604080516080810182525f808252602082018190529181018290526060810191909152610e71610100880160e08901612a3b565b6001600160a01b0316331480156060830152610ee057610e976060880160408901612f84565b63ffffffff165f03610ebc576040516372b6e1c360e11b815260040160405180910390fd5b62030d40851115610ee057604051631e3b03c960e01b815260040160405180910390fd5b5f610eed6105dd89612f79565b9050610ef9815f611d19565b63ffffffff86166020830152610f417f000000000000000000000000000000000000000000000000000000000000000082610f3a60a08c0160808d01612e2f565b8a8a6121b2565b63ffffffff1660408301525f610f77897f0000000000000000000000000000000000000000000000000000000000000000611d6b565b15610f9057506002945060019350610120880135610fd7565b5f8360600151610fa0575a610fa9565b610fa98a61215f565b9050610fbb8a84838760600151611e9f565b15610fcc57600296505f9550610fd5565b60019650600295505b505b610fe760408a0160208b01612e2f565b6001600160401b0316156111455761100560408a0160208b01612e2f565b611018906001600160401b031682613016565b90508260600151801561103f575061103660608a0160408b01612f84565b63ffffffff1615155b1561114557604083015163ffffffff16614e20025a61107c6110656101408d018d613065565b6020601f909101819004026101a00160041b919050565b63ffffffff9081168701919091036201d4c00181168086525f9183916110a59183919061225d16565b0390505f6110b960608d0160408e01612f84565b63ffffffff166110cf60408e0160208f01612e2f565b6001600160401b03168302816110e7576110e76130ae565b0490505f48830290505f61112b8e60200160208101906111079190612e2f565b6001600160401b0316848410156111235784840160011c611125565b845b90612272565b9586900395905061113f33826188b8612286565b50505050505b61116d816188b861115d6101008d0160e08e01612a3b565b6001600160a01b03169190612286565b6111778287611fc3565b817f8580f507761043ecdd2bdca084d6fb0109150b3d9842d854d34e3dea6d69387d8a856040516111a9929190613246565b60405180910390a2505050506111bf6001611d03565b935093915050565b5f60026111d660c95460ff1690565b60ff1614905090565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036112275760405162461bcd60e51b81526004016109409061329a565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166112596122c9565b6001600160a01b03161461127f5760405162461bcd60e51b8152600401610940906132e6565b611288816122e4565b604080515f808252602082019092526112a3918391906122ec565b50565b6112ae612456565b6112c260c9805461ff001916610100179055565b6040513381527f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa9060200160405180910390a16112ff335f612487565b565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036113495760405162461bcd60e51b81526004016109409061329a565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661137b6122c9565b6001600160a01b0316146113a15760405162461bcd60e51b8152600401610940906132e6565b6113aa826122e4565b610a75828260016122ec565b5f306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146114555760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c00000000000000006064820152608401610940565b505f5160206135005f395f51905f525b90565b5f4661147a60a0860160808701612e2f565b6001600160401b03161461148f57505f6114dc565b6114d97f00000000000000000000000000000000000000000000000000000000000000006114c26106446105dd88612f79565b6114d260e0880160c08901612e2f565b868661248f565b90505b9392505050565b5f466114f560a0840160808501612e2f565b6001600160401b03161461150a57505f919050565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166332676bc6306115466105dd86612f79565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401602060405180830381865afa15801561158d573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115b19190613332565b92915050565b6115bf612080565b6112ff5f612511565b60655433906001600160a01b031681146116365760405162461bcd60e51b815260206004820152602960248201527f4f776e61626c6532537465703a2063616c6c6572206973206e6f7420746865206044820152683732bb9037bbb732b960b91b6064820152608401610940565b6112a381612511565b5f6115b1620c35006101a06020601f8601819004020160041b61334d565b611665611ca2565b60c9805461ff0019166102001790556040513381527f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2589060200160405180910390a16112ff336001612487565b5f6116bb6122c9565b905090565b5f5f6116d7836562726964676560d01b600161252a565b6001600160a01b038116151594909350915050565b6116fc60e0820160c08301612e2f565b61170581611c3d565b61171560a0830160808401612e2f565b61171e81611c66565b611726611ca2565b61172e611cd4565b6117386002611d03565b611749610100840160e08501612a3b565b6001600160a01b0316336001600160a01b03161461177a576040516372b6e1c360e11b815260040160405180910390fd5b5f6117876105dd85612f79565b9050611794816001611d19565b61179f816003611fc3565b60405163019b28af60e61b81526003821860048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906366ca2bc0906024016020604051808303815f875af1158015611805573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118299190612f9d565b50506118356001611d03565b505050565b61184a60a0840160808501612e2f565b61185381611c3d565b61186360e0850160c08601612e2f565b61186c81611c66565b611874611ca2565b61187c611cd4565b6118866002611d03565b5f6118936105dd87612f79565b905061189f815f611d19565b604051631933b5e360e11b8152306004820152602481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906332676bc690604401602060405180830381865afa158015611908573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061192c9190613332565b6119495760405163ab035ad560e01b815260040160405180910390fd5b6119887f00000000000000000000000000000000000000000000000000000000000000006003831861198160e08a0160c08b01612e2f565b88886121b2565b50611994816004611fc3565b6119bd62bc399d60e11b6119ae6080890160608a01612a3b565b6001600160a01b0316906125cc565b15611a61576119dc81306119d760a08a0160808b01612e2f565b61269c565b6119ec6080870160608801612a3b565b6001600160a01b0316630178733a87610120013588846040518463ffffffff1660e01b8152600401611a1f929190613369565b5f604051808303818588803b158015611a36575f5ffd5b505af1158015611a48573d5f5f3e3d5ffd5b5050505050611a5c5f195f1b5f198061269c565b611a7d565b611a7d6101208701356188b861115d60c08a0160a08b01612a3b565b50611a886001611d03565b5050505050565b5f46611aa160e0860160c08701612e2f565b6001600160401b031614611ab657505f6114dc565b6114d97f0000000000000000000000000000000000000000000000000000000000000000611ae66105dd87612f79565b6114d260a0880160808901612e2f565b5f81604051602001611b08919061338a565b604051602081830303815290604052805190602001209050919050565b604080516060810182525f8082526020820181905291810191909152611b9c604080516060810182525f8082526020820181905291810191909152506040805160608101825260fd54815260fe546001600160a01b0381166020830152600160a01b90046001600160401b03169181019190915290565b80519091501580611bae575080515f19145b1561146557604051635ceed17360e01b815260040160405180910390fd5b611bd4612080565b606580546001600160a01b0383166001600160a01b03199091168117909155611c056033546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b46816001600160401b0316146112a357604051631c6c777560e31b815260040160405180910390fd5b6001600160401b0381161580611c84575046816001600160401b0316145b156112a357604051631c6c777560e31b815260040160405180910390fd5b611cb660c954610100900460ff1660021490565b156112ff5760405163bae6e2a960e01b815260040160405180910390fd5b6002611ce260c95460ff1690565b60ff16036112ff5760405163dfc60d8560e01b815260040160405180910390fd5b60c9805460ff191660ff92909216919091179055565b806004811115611d2b57611d2b612c8f565b5f83815260fc602052604090205460ff166004811115611d4d57611d4d612c8f565b14610a75576040516319d893ad60e21b815260040160405180910390fd5b5f80611d7f61012085016101008601612a3b565b6001600160a01b031603611d95575060016115b1565b30611da861012085016101008601612a3b565b6001600160a01b031603611dbe575060016115b1565b6001600160a01b038216611dda61012085016101008601612a3b565b6001600160a01b031603611df0575060016115b1565b6004611e00610140850185613065565b905010158015611e375750637f07c94760e01b611e21610140850185613065565b611e2a916133c0565b6001600160e01b03191614155b80156114dc57506114dc611e5361012085016101008601612a3b565b6001600160a01b03163b151590565b5f6001600160a01b038516611e8a57604051634c67134d60e11b815260040160405180910390fd5b5f5f835160208501878988f195945050505050565b5f30611eb16080870160608801612a3b565b6001600160a01b031603611ec757611ec76133f8565b610120850135158015611ee75750611ee3610140860186613065565b1590505b15611ef457506001611fbb565b825f03611f0257505f611fbb565b611f2684611f166080880160608901612a3b565b6119d760a0890160808a01612e2f565b5f611f3961012087016101008801612a3b565b90506101208601355f611f50610140890189613065565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92018290525084519495509384935083925090506020850186888cf194505a90508515611faa57611faa81886126f1565b611fb65f19808061269c565b505050505b949350505050565b806004811115611fd557611fd5612c8f565b5f83815260fc602052604090205460ff166004811115611ff757611ff7612c8f565b03612015576040516319d893ad60e21b815260040160405180910390fd5b5f82815260fc60205260409020805482919060ff1916600183600481111561203f5761203f612c8f565b0217905550817f6c51882bc2ed67617f77a1e9b9a25d2caad8448647ecb093b357a603b2575634826040516120749190612cf9565b60405180910390a25050565b6033546001600160a01b031633146112ff5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610940565b5f54610100900460ff166121005760405162461bcd60e51b81526004016109409061340c565b612108612705565b6121266001600160a01b038216156121205781612511565b33612511565b5060c9805461ff001916610100179055565b6001600160a01b0381166112a35760405163538ba4f960e01b815260040160405180910390fd5b5f80612179612172610140850185613065565b905061163f565b63ffffffff169050806121aa6121956060860160408701612f84565b63ffffffff168361225d90919063ffffffff16565b039392505050565b5f856001600160a01b031663910af6ed856121d7876562726964676560d01b5f61252a565b8887876040518663ffffffff1660e01b81526004016121fa959493929190613457565b6020604051808303815f875af1925050508015612234575060408051601f3d908101601f1916820190925261223191810190612f9d565b60015b612251576040516314504c7360e31b815260040160405180910390fd5b90505b95945050505050565b5f81831161226b57816114dc565b5090919050565b5f81831161228057826114dc565b50919050565b815f0361229257505050565b6122ac83838360405180602001604052805f815250611e62565b61183557604051634c67134d60e11b815260040160405180910390fd5b5f5160206135005f395f51905f52546001600160a01b031690565b6112a3612080565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff161561231f576118358361272b565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015612379575060408051601f3d908101601f1916820190925261237691810190612f9d565b60015b6123dc5760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b6064820152608401610940565b5f5160206135005f395f51905f52811461244a5760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b6064820152608401610940565b506118358383836127c6565b61246a60c954610100900460ff1660021490565b6112ff5760405163bae6e2a960e01b815260040160405180910390fd5b610a75612080565b5f856001600160a01b031663ce9d0820856124b4876562726964676560d01b5f61252a565b8887876040518663ffffffff1660e01b81526004016124d7959493929190613457565b5f6040518083038186803b1580156124ed575f5ffd5b505afa9250505080156124fe575060015b61250957505f612254565b506001612254565b606580546001600160a01b03191690556112a3816127ea565b5f7f0000000000000000000000000000000000000000000000000000000000000000604051633632b1fb60e11b81526001600160401b03861660048201526024810185905283151560448201526001600160a01b039190911690636c6563f690606401602060405180830381865afa1580156125a8573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114d99190613498565b6040516001600160e01b0319821660248201525f90819081906001600160a01b0386169060440160408051601f198184030181529181526020820180516001600160e01b03166301ffc9a760e01b1790525161262891906134b3565b5f60405180830381855afa9150503d805f8114612660576040519150601f19603f3d011682016040523d82523d5f602084013e612665565b606091505b5091509150818015612678575080516020145b1561269457808060200190518101906126919190613332565b92505b505092915050565b604080516060810182528481526001600160a01b03909316602084018190526001600160401b03909216920182905260fd9290925560fe8054600160a01b9092026001600160e01b0319909216909217179055565b6126fc603f826134ce565b821015610a7557fe5b5f54610100900460ff166112ff5760405162461bcd60e51b81526004016109409061340c565b6001600160a01b0381163b6127985760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610940565b5f5160206135005f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b6127cf8361283b565b5f825111806127db5750805b15611835576108f6838361287a565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b6128448161272b565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b60606114dc83836040518060600160405280602781526020016135206027913960605f5f856001600160a01b0316856040516128b691906134b3565b5f60405180830381855af49150503d805f81146128ee576040519150601f19603f3d011682016040523d82523d5f602084013e6128f3565b606091505b50915091506129048683838761290e565b9695505050505050565b6060831561297c5782515f03612975576001600160a01b0385163b6129755760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610940565b5081611fbb565b611fbb83838151156129915781518083602001fd5b8060405162461bcd60e51b815260040161094091906134ed565b5f6101608284031215612280575f5ffd5b80151581146112a3575f5ffd5b5f5f604083850312156129da575f5ffd5b82356001600160401b038111156129ef575f5ffd5b6129fb858286016129ab565b9250506020830135612a0c816129bc565b809150509250929050565b6001600160a01b03811681146112a3575f5ffd5b8035612a3681612a17565b919050565b5f60208284031215612a4b575f5ffd5b81356114dc81612a17565b5f60208284031215612a66575f5ffd5b81356001600160401b03811115612a7b575f5ffd5b611fbb848285016129ab565b5f5b83811015612aa1578181015183820152602001612a89565b50505f910152565b5f8151808452612ac0816020860160208601612a87565b601f01601f19169290920160200192915050565b80516001600160401b031682525f6020820151612afc60208501826001600160401b03169052565b506040820151612b14604085018263ffffffff169052565b506060820151612b2f60608501826001600160a01b03169052565b506080820151612b4a60808501826001600160401b03169052565b5060a0820151612b6560a08501826001600160a01b03169052565b5060c0820151612b8060c08501826001600160401b03169052565b5060e0820151612b9b60e08501826001600160a01b03169052565b50610100820151612bb86101008501826001600160a01b03169052565b50610120820151610120840152610140820151610160610140850152611fbb610160850182612aa9565b828152604060208201525f6114d96040830184612ad4565b5f5f5f60408486031215612c0c575f5ffd5b83356001600160401b03811115612c21575f5ffd5b612c2d868287016129ab565b93505060208401356001600160401b03811115612c48575f5ffd5b8401601f81018613612c58575f5ffd5b80356001600160401b03811115612c6d575f5ffd5b866020828401011115612c7e575f5ffd5b939660209190910195509293505050565b634e487b7160e01b5f52602160045260245ffd5b60058110612cb357612cb3612c8f565b9052565b60408101612cc58285612ca3565b60048310612cd557612cd5612c8f565b8260208301529392505050565b5f60208284031215612cf2575f5ffd5b5035919050565b602081016115b18284612ca3565b634e487b7160e01b5f52604160045260245ffd5b60405161016081016001600160401b0381118282101715612d3e57612d3e612d07565b60405290565b5f82601f830112612d53575f5ffd5b81356001600160401b03811115612d6c57612d6c612d07565b604051601f8201601f19908116603f011681016001600160401b0381118282101715612d9a57612d9a612d07565b604052818152838201602001851015612db1575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f5f60408385031215612dde575f5ffd5b8235612de981612a17565b915060208301356001600160401b03811115612e03575f5ffd5b612e0f85828601612d44565b9150509250929050565b80356001600160401b0381168114612a36575f5ffd5b5f60208284031215612e3f575f5ffd5b6114dc82612e19565b803563ffffffff81168114612a36575f5ffd5b5f6101608284031215612e6c575f5ffd5b612e74612d1b565b9050612e7f82612e19565b8152612e8d60208301612e19565b6020820152612e9e60408301612e48565b6040820152612eaf60608301612a2b565b6060820152612ec060808301612e19565b6080820152612ed160a08301612a2b565b60a0820152612ee260c08301612e19565b60c0820152612ef360e08301612a2b565b60e0820152612f056101008301612a2b565b61010082015261012082810135908201526101408201356001600160401b03811115612f2f575f5ffd5b612f3b84828501612d44565b6101408301525092915050565b5f60208284031215612f58575f5ffd5b81356001600160401b03811115612f6d575f5ffd5b611fbb84828501612e5b565b5f6115b13683612e5b565b5f60208284031215612f94575f5ffd5b6114dc82612e48565b5f60208284031215612fad575f5ffd5b5051919050565b6020808252602e908201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160408201526d191e481a5b9a5d1a585b1a5e995960921b606082015260800190565b634e487b7160e01b5f52601160045260245ffd5b808201808211156115b1576115b1613002565b5f6001600160401b0382166001600160401b03810361304a5761304a613002565b60010192915050565b602081525f6114dc6020830184612ad4565b5f5f8335601e1984360301811261307a575f5ffd5b8301803591506001600160401b03821115613093575f5ffd5b6020019150368190038213156130a7575f5ffd5b9250929050565b634e487b7160e01b5f52601260045260245ffd5b5f5f8335601e198436030181126130d7575f5ffd5b83016020810192503590506001600160401b038111156130f5575f5ffd5b8036038213156130a7575f5ffd5b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b6131458261313883612e19565b6001600160401b03169052565b5f61315260208301612e19565b6001600160401b0316602084015261316c60408301612e48565b63ffffffff16604084015261318360608301612a2b565b6001600160a01b0316606084015261319d60808301612e19565b6001600160401b031660808401526131b760a08301612a2b565b6001600160a01b031660a08401526131d160c08301612e19565b6001600160401b031660c08401526131eb60e08301612a2b565b6001600160a01b031660e08401526132066101008301612a2b565b6001600160a01b0316610100840152610120828101359084015261322e6101408301836130c2565b61016061014086015261269161016086018284613103565b60a081525f61325860a083018561312b565b905063ffffffff835116602083015263ffffffff602084015116604083015263ffffffff60408401511660608301526060830151151560808301529392505050565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b5f60208284031215613342575f5ffd5b81516114dc816129bc565b63ffffffff81811683821601908111156115b1576115b1613002565b604081525f61337b604083018561312b565b90508260208301529392505050565b60408152600d60408201526c5441494b4f5f4d45535341474560981b6060820152608060208201525f6114dc6080830184612ad4565b80356001600160e01b031981169060048410156133f1576001600160e01b0319600485900360031b81901b82161691505b5092915050565b634e487b7160e01b5f52600160045260245ffd5b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b6001600160401b038616815260018060a01b0385166020820152836040820152608060608201525f61348d608083018486613103565b979650505050505050565b5f602082840312156134a8575f5ffd5b81516114dc81612a17565b5f82516134c4818460208701612a87565b9190910192915050565b5f826134e857634e487b7160e01b5f52601260045260245ffd5b500490565b602081525f6114dc6020830184612aa956fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220d82c8f7c970681ddfa323cbf4b55420679e492c19c2d89df90bab3191259c47f64736f6c634300081e0033","sourceMap":"643:25624:9:-:0;;;1088:4:84;1045:48;;3630:189:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3741:9;4375:22:12;:20;:22::i;:::-;-1:-1:-1;;;;;1688:23:13;;1680:54;;;;-1:-1:-1;;;1680:54:13;;;;;;;;;;;;-1:-1:-1;;;;;1744:22:13;;;;;3766:46:9::1;;::::0;-1:-1:-1;643:25624:9;;5939:280:48;6007:13;;;;;;;6006:14;5998:66;;;;-1:-1:-1;;;5998:66:48;;696:2:150;5998:66:48;;;678:21:150;735:2;715:18;;;708:30;774:34;754:18;;;747:62;-1:-1:-1;;;825:18:150;;;818:37;872:19;;5998:66:48;;;;;;;;6078:12;;6094:15;6078:12;;;:31;6074:139;;6125:12;:30;;-1:-1:-1;;6125:30:48;6140:15;6125:30;;;;;;6174:28;;1044:36:150;;;6174:28:48;;1032:2:150;1017:18;6174:28:48;;;;;;;6074:139;5939:280::o;14:177:150:-;93:13;;-1:-1:-1;;;;;135:31:150;;125:42;;115:70;;181:1;178;171:12;115:70;14:177;;;:::o;196:293::-;275:6;283;336:2;324:9;315:7;311:23;307:32;304:52;;;352:1;349;342:12;304:52;375:40;405:9;375:40;:::i;:::-;365:50;;434:49;479:2;468:9;464:18;434:49;:::i;:::-;424:59;;196:293;;;;;:::o;902:184::-;643:25624:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x6080604052600436106101fc575f3560e01c8063715018a611610113578063a730cdfb1161009d578063d0496d6a1161006d578063d0496d6a146105e2578063d1aaa5df1461062a578063e30c39781461064a578063eefbf17e14610667578063f2fde38b146106a5575f5ffd5b8063a730cdfb14610578578063b8acae0e1461058e578063be880c81146105ad578063c012fa77146105c3575f5ffd5b80638abf6077116100e35780638abf6077146104cb5780638da5cb5b146104df5780638e3881a9146104fc578063913b16cb1461053a5780639efc7a2e14610559575f5ffd5b8063715018a61461045b57806379ba50971461046f5780637cbadfaa146104835780638456cb59146104b7575f5ffd5b80633c6cf4731161019457806352d1902d1161016457806352d1902d146103b65780635862f6e1146103ca5780635c975abb146103e957806360620c6b1461040957806362d0945314610428575f5ffd5b80633c6cf473146103305780633f4ba83a1461036b578063422770fa1461037f5780634f1ef286146103a3575f5ffd5b80631bdb0037116101cf5780631bdb00371461029f5780632035065e146102c05780633075db56146102ed5780633659cfe614610311575f5ffd5b80630432873c1461020057806304f3bcec14610221578063069489a21461026c57806319ab453c14610280575b5f5ffd5b34801561020b575f5ffd5b5061021f61021a3660046129c9565b6106c4565b005b34801561022c575f5ffd5b507f00000000000000000000000000000000000000000000000000000000000000005b6040516001600160a01b0390911681526020015b60405180910390f35b348015610277575f5ffd5b5061021f6108fc565b34801561028b575f5ffd5b5061021f61029a366004612a3b565b6109b3565b6102b26102ad366004612a56565b610a79565b604051610263929190612be2565b3480156102cb575f5ffd5b506102df6102da366004612bfa565b610d8b565b604051610263929190612cb7565b3480156102f8575f5ffd5b506103016111c7565b6040519015158152602001610263565b34801561031c575f5ffd5b5061021f61032b366004612a3b565b6111df565b34801561033b575f5ffd5b5061035e61034a366004612ce2565b60fc6020525f908152604090205460ff1681565b6040516102639190612cf9565b348015610376575f5ffd5b5061021f6112a6565b34801561038a575f5ffd5b5061039562030d4081565b604051908152602001610263565b61021f6103b1366004612dcd565b611301565b3480156103c1575f5ffd5b506103956113b6565b3480156103d5575f5ffd5b506103016103e4366004612bfa565b611468565b3480156103f4575f5ffd5b5061030160c954610100900460ff1660021490565b348015610414575f5ffd5b50610301610423366004612a56565b6114e3565b348015610433575f5ffd5b5061024f7f000000000000000000000000000000000000000000000000000000000000000081565b348015610466575f5ffd5b5061021f6115b7565b34801561047a575f5ffd5b5061021f6115c8565b34801561048e575f5ffd5b506104a261049d366004612ce2565b61163f565b60405163ffffffff9091168152602001610263565b3480156104c2575f5ffd5b5061021f61165d565b3480156104d6575f5ffd5b5061024f6116b2565b3480156104ea575f5ffd5b506033546001600160a01b031661024f565b348015610507575f5ffd5b5061051b610516366004612e2f565b6116c0565b6040805192151583526001600160a01b03909116602083015201610263565b348015610545575f5ffd5b5061021f610554366004612a56565b6116ec565b348015610564575f5ffd5b5061021f610573366004612bfa565b61183a565b348015610583575f5ffd5b506104a26201d4c081565b348015610599575f5ffd5b506103016105a8366004612bfa565b611a8f565b3480156105b8575f5ffd5b506104a2620c350081565b3480156105ce575f5ffd5b506103956105dd366004612f48565b611af6565b3480156105ed575f5ffd5b506105f6611b25565b60408051825181526020808401516001600160a01b031690820152918101516001600160401b031690820152606001610263565b348015610635575f5ffd5b50610395610644366004612ce2565b60031890565b348015610655575f5ffd5b506065546001600160a01b031661024f565b348015610672575f5ffd5b5060fb5461068d90600160401b90046001600160401b031681565b6040516001600160401b039091168152602001610263565b3480156106b0575f5ffd5b5061021f6106bf366004612a3b565b611bcc565b6106d460e0830160c08401612e2f565b6106dd81611c3d565b6106ed60a0840160808501612e2f565b6106f681611c66565b6106fe611ca2565b610706611cd4565b6107106002611d03565b5f61071d6105dd86612f79565b905061072a816001611d19565b5f610755867f0000000000000000000000000000000000000000000000000000000000000000611d6b565b156107a0576107998661012001356188b860405180602001604052805f8152508960e00160208101906107889190612a3b565b6001600160a01b0316929190611e62565b905061081a565b6107b06060870160408801612f84565b63ffffffff1615806107bf5750845b80156107ed57506107d7610100870160e08801612a3b565b6001600160a01b0316336001600160a01b031614155b1561080b576040516372b6e1c360e11b815260040160405180910390fd5b61081786835a5f611e9f565b90505b80156108305761082b826002611fc3565b6108ea565b84156108d157610841826003611fc3565b60405163019b28af60e61b81526003831860048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906366ca2bc0906024016020604051808303815f875af11580156108a7573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108cb9190612f9d565b506108ea565b60405163161e3ead60e01b815260040160405180910390fd5b50506108f66001611d03565b50505050565b610904612080565b5f54600290610100900460ff1615801561092457505f5460ff8083169116105b6109495760405162461bcd60e51b815260040161094090612fb4565b60405180910390fd5b5f805460fb805467ffffffffffffffff1916905560ff82815561010083815561ff001991851661ffff19909316831717169091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a150565b5f54610100900460ff16158080156109d157505f54600160ff909116105b806109ea5750303b1580156109ea57505f5460ff166001145b610a065760405162461bcd60e51b815260040161094090612fb4565b5f805460ff191660011790558015610a27575f805461ff0019166101001790555b610a30826120da565b8015610a75575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b60408051610160810182525f8082526020820181905291810182905260608082018390526080820183905260a0820183905260c0820183905260e0820183905261010082018390526101208201839052610140820152610adf60c0840160a08501612a3b565b610ae881612138565b610af9610100850160e08601612a3b565b610b0281612138565b610b1461012086016101008701612a3b565b610b1d81612138565b610b2d60e0870160c08801612e2f565b610b3681611c66565b610b3e611ca2565b610b46611cd4565b610b506002611d03565b610b606060880160408901612f84565b63ffffffff165f03610ba857610b7c6040880160208901612e2f565b6001600160401b031615610ba35760405163c9f5178760e01b815260040160405180910390fd5b610bd0565b610bb18761215f565b5f03610bd0576040516308c2ad5360e01b815260040160405180910390fd5b5f610be461051660e08a0160c08b01612e2f565b50905080610c0557604051631c6c777560e31b815260040160405180910390fd5b34610c1660408a0160208b01612e2f565b610c2e906001600160401b03166101208b0135613016565b14610c4c57604051634ac2abdf60e11b815260040160405180910390fd5b610c5588612f79565b60fb8054919750600160401b9091046001600160401b0316906008610c7983613029565b82546101009290920a6001600160401b03818102199093169183160217909155908116875233606088015246166080870152610cb486611af6565b9650867fe33fd33b4f45b95b1c196242240c5b5233129d724b578f95b66ce8d8aae9351787604051610ce69190613053565b60405180910390a260405163019b28af60e61b8152600481018890527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906366ca2bc0906024016020604051808303815f875af1158015610d52573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d769190612f9d565b5050610d826001611d03565b50505050915091565b5f5f610d95611ca2565b610d9d611cd4565b610da76002611d03565b5f5a905046610dbc60e0880160c08901612e2f565b6001600160401b031614610de357604051631c6c777560e31b815260040160405180910390fd5b610df360a0870160808801612e2f565b6001600160401b03161580610e1f575046610e1460a0880160808901612e2f565b6001600160401b0316145b15610e3d57604051631c6c777560e31b815260040160405180910390fd5b604080516080810182525f808252602082018190529181018290526060810191909152610e71610100880160e08901612a3b565b6001600160a01b0316331480156060830152610ee057610e976060880160408901612f84565b63ffffffff165f03610ebc576040516372b6e1c360e11b815260040160405180910390fd5b62030d40851115610ee057604051631e3b03c960e01b815260040160405180910390fd5b5f610eed6105dd89612f79565b9050610ef9815f611d19565b63ffffffff86166020830152610f417f000000000000000000000000000000000000000000000000000000000000000082610f3a60a08c0160808d01612e2f565b8a8a6121b2565b63ffffffff1660408301525f610f77897f0000000000000000000000000000000000000000000000000000000000000000611d6b565b15610f9057506002945060019350610120880135610fd7565b5f8360600151610fa0575a610fa9565b610fa98a61215f565b9050610fbb8a84838760600151611e9f565b15610fcc57600296505f9550610fd5565b60019650600295505b505b610fe760408a0160208b01612e2f565b6001600160401b0316156111455761100560408a0160208b01612e2f565b611018906001600160401b031682613016565b90508260600151801561103f575061103660608a0160408b01612f84565b63ffffffff1615155b1561114557604083015163ffffffff16614e20025a61107c6110656101408d018d613065565b6020601f909101819004026101a00160041b919050565b63ffffffff9081168701919091036201d4c00181168086525f9183916110a59183919061225d16565b0390505f6110b960608d0160408e01612f84565b63ffffffff166110cf60408e0160208f01612e2f565b6001600160401b03168302816110e7576110e76130ae565b0490505f48830290505f61112b8e60200160208101906111079190612e2f565b6001600160401b0316848410156111235784840160011c611125565b845b90612272565b9586900395905061113f33826188b8612286565b50505050505b61116d816188b861115d6101008d0160e08e01612a3b565b6001600160a01b03169190612286565b6111778287611fc3565b817f8580f507761043ecdd2bdca084d6fb0109150b3d9842d854d34e3dea6d69387d8a856040516111a9929190613246565b60405180910390a2505050506111bf6001611d03565b935093915050565b5f60026111d660c95460ff1690565b60ff1614905090565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036112275760405162461bcd60e51b81526004016109409061329a565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166112596122c9565b6001600160a01b03161461127f5760405162461bcd60e51b8152600401610940906132e6565b611288816122e4565b604080515f808252602082019092526112a3918391906122ec565b50565b6112ae612456565b6112c260c9805461ff001916610100179055565b6040513381527f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa9060200160405180910390a16112ff335f612487565b565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036113495760405162461bcd60e51b81526004016109409061329a565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661137b6122c9565b6001600160a01b0316146113a15760405162461bcd60e51b8152600401610940906132e6565b6113aa826122e4565b610a75828260016122ec565b5f306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146114555760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c00000000000000006064820152608401610940565b505f5160206135005f395f51905f525b90565b5f4661147a60a0860160808701612e2f565b6001600160401b03161461148f57505f6114dc565b6114d97f00000000000000000000000000000000000000000000000000000000000000006114c26106446105dd88612f79565b6114d260e0880160c08901612e2f565b868661248f565b90505b9392505050565b5f466114f560a0840160808501612e2f565b6001600160401b03161461150a57505f919050565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166332676bc6306115466105dd86612f79565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401602060405180830381865afa15801561158d573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115b19190613332565b92915050565b6115bf612080565b6112ff5f612511565b60655433906001600160a01b031681146116365760405162461bcd60e51b815260206004820152602960248201527f4f776e61626c6532537465703a2063616c6c6572206973206e6f7420746865206044820152683732bb9037bbb732b960b91b6064820152608401610940565b6112a381612511565b5f6115b1620c35006101a06020601f8601819004020160041b61334d565b611665611ca2565b60c9805461ff0019166102001790556040513381527f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2589060200160405180910390a16112ff336001612487565b5f6116bb6122c9565b905090565b5f5f6116d7836562726964676560d01b600161252a565b6001600160a01b038116151594909350915050565b6116fc60e0820160c08301612e2f565b61170581611c3d565b61171560a0830160808401612e2f565b61171e81611c66565b611726611ca2565b61172e611cd4565b6117386002611d03565b611749610100840160e08501612a3b565b6001600160a01b0316336001600160a01b03161461177a576040516372b6e1c360e11b815260040160405180910390fd5b5f6117876105dd85612f79565b9050611794816001611d19565b61179f816003611fc3565b60405163019b28af60e61b81526003821860048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906366ca2bc0906024016020604051808303815f875af1158015611805573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118299190612f9d565b50506118356001611d03565b505050565b61184a60a0840160808501612e2f565b61185381611c3d565b61186360e0850160c08601612e2f565b61186c81611c66565b611874611ca2565b61187c611cd4565b6118866002611d03565b5f6118936105dd87612f79565b905061189f815f611d19565b604051631933b5e360e11b8152306004820152602481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906332676bc690604401602060405180830381865afa158015611908573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061192c9190613332565b6119495760405163ab035ad560e01b815260040160405180910390fd5b6119887f00000000000000000000000000000000000000000000000000000000000000006003831861198160e08a0160c08b01612e2f565b88886121b2565b50611994816004611fc3565b6119bd62bc399d60e11b6119ae6080890160608a01612a3b565b6001600160a01b0316906125cc565b15611a61576119dc81306119d760a08a0160808b01612e2f565b61269c565b6119ec6080870160608801612a3b565b6001600160a01b0316630178733a87610120013588846040518463ffffffff1660e01b8152600401611a1f929190613369565b5f604051808303818588803b158015611a36575f5ffd5b505af1158015611a48573d5f5f3e3d5ffd5b5050505050611a5c5f195f1b5f198061269c565b611a7d565b611a7d6101208701356188b861115d60c08a0160a08b01612a3b565b50611a886001611d03565b5050505050565b5f46611aa160e0860160c08701612e2f565b6001600160401b031614611ab657505f6114dc565b6114d97f0000000000000000000000000000000000000000000000000000000000000000611ae66105dd87612f79565b6114d260a0880160808901612e2f565b5f81604051602001611b08919061338a565b604051602081830303815290604052805190602001209050919050565b604080516060810182525f8082526020820181905291810191909152611b9c604080516060810182525f8082526020820181905291810191909152506040805160608101825260fd54815260fe546001600160a01b0381166020830152600160a01b90046001600160401b03169181019190915290565b80519091501580611bae575080515f19145b1561146557604051635ceed17360e01b815260040160405180910390fd5b611bd4612080565b606580546001600160a01b0383166001600160a01b03199091168117909155611c056033546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b46816001600160401b0316146112a357604051631c6c777560e31b815260040160405180910390fd5b6001600160401b0381161580611c84575046816001600160401b0316145b156112a357604051631c6c777560e31b815260040160405180910390fd5b611cb660c954610100900460ff1660021490565b156112ff5760405163bae6e2a960e01b815260040160405180910390fd5b6002611ce260c95460ff1690565b60ff16036112ff5760405163dfc60d8560e01b815260040160405180910390fd5b60c9805460ff191660ff92909216919091179055565b806004811115611d2b57611d2b612c8f565b5f83815260fc602052604090205460ff166004811115611d4d57611d4d612c8f565b14610a75576040516319d893ad60e21b815260040160405180910390fd5b5f80611d7f61012085016101008601612a3b565b6001600160a01b031603611d95575060016115b1565b30611da861012085016101008601612a3b565b6001600160a01b031603611dbe575060016115b1565b6001600160a01b038216611dda61012085016101008601612a3b565b6001600160a01b031603611df0575060016115b1565b6004611e00610140850185613065565b905010158015611e375750637f07c94760e01b611e21610140850185613065565b611e2a916133c0565b6001600160e01b03191614155b80156114dc57506114dc611e5361012085016101008601612a3b565b6001600160a01b03163b151590565b5f6001600160a01b038516611e8a57604051634c67134d60e11b815260040160405180910390fd5b5f5f835160208501878988f195945050505050565b5f30611eb16080870160608801612a3b565b6001600160a01b031603611ec757611ec76133f8565b610120850135158015611ee75750611ee3610140860186613065565b1590505b15611ef457506001611fbb565b825f03611f0257505f611fbb565b611f2684611f166080880160608901612a3b565b6119d760a0890160808a01612e2f565b5f611f3961012087016101008801612a3b565b90506101208601355f611f50610140890189613065565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92018290525084519495509384935083925090506020850186888cf194505a90508515611faa57611faa81886126f1565b611fb65f19808061269c565b505050505b949350505050565b806004811115611fd557611fd5612c8f565b5f83815260fc602052604090205460ff166004811115611ff757611ff7612c8f565b03612015576040516319d893ad60e21b815260040160405180910390fd5b5f82815260fc60205260409020805482919060ff1916600183600481111561203f5761203f612c8f565b0217905550817f6c51882bc2ed67617f77a1e9b9a25d2caad8448647ecb093b357a603b2575634826040516120749190612cf9565b60405180910390a25050565b6033546001600160a01b031633146112ff5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610940565b5f54610100900460ff166121005760405162461bcd60e51b81526004016109409061340c565b612108612705565b6121266001600160a01b038216156121205781612511565b33612511565b5060c9805461ff001916610100179055565b6001600160a01b0381166112a35760405163538ba4f960e01b815260040160405180910390fd5b5f80612179612172610140850185613065565b905061163f565b63ffffffff169050806121aa6121956060860160408701612f84565b63ffffffff168361225d90919063ffffffff16565b039392505050565b5f856001600160a01b031663910af6ed856121d7876562726964676560d01b5f61252a565b8887876040518663ffffffff1660e01b81526004016121fa959493929190613457565b6020604051808303815f875af1925050508015612234575060408051601f3d908101601f1916820190925261223191810190612f9d565b60015b612251576040516314504c7360e31b815260040160405180910390fd5b90505b95945050505050565b5f81831161226b57816114dc565b5090919050565b5f81831161228057826114dc565b50919050565b815f0361229257505050565b6122ac83838360405180602001604052805f815250611e62565b61183557604051634c67134d60e11b815260040160405180910390fd5b5f5160206135005f395f51905f52546001600160a01b031690565b6112a3612080565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff161561231f576118358361272b565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015612379575060408051601f3d908101601f1916820190925261237691810190612f9d565b60015b6123dc5760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b6064820152608401610940565b5f5160206135005f395f51905f52811461244a5760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b6064820152608401610940565b506118358383836127c6565b61246a60c954610100900460ff1660021490565b6112ff5760405163bae6e2a960e01b815260040160405180910390fd5b610a75612080565b5f856001600160a01b031663ce9d0820856124b4876562726964676560d01b5f61252a565b8887876040518663ffffffff1660e01b81526004016124d7959493929190613457565b5f6040518083038186803b1580156124ed575f5ffd5b505afa9250505080156124fe575060015b61250957505f612254565b506001612254565b606580546001600160a01b03191690556112a3816127ea565b5f7f0000000000000000000000000000000000000000000000000000000000000000604051633632b1fb60e11b81526001600160401b03861660048201526024810185905283151560448201526001600160a01b039190911690636c6563f690606401602060405180830381865afa1580156125a8573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114d99190613498565b6040516001600160e01b0319821660248201525f90819081906001600160a01b0386169060440160408051601f198184030181529181526020820180516001600160e01b03166301ffc9a760e01b1790525161262891906134b3565b5f60405180830381855afa9150503d805f8114612660576040519150601f19603f3d011682016040523d82523d5f602084013e612665565b606091505b5091509150818015612678575080516020145b1561269457808060200190518101906126919190613332565b92505b505092915050565b604080516060810182528481526001600160a01b03909316602084018190526001600160401b03909216920182905260fd9290925560fe8054600160a01b9092026001600160e01b0319909216909217179055565b6126fc603f826134ce565b821015610a7557fe5b5f54610100900460ff166112ff5760405162461bcd60e51b81526004016109409061340c565b6001600160a01b0381163b6127985760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610940565b5f5160206135005f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b6127cf8361283b565b5f825111806127db5750805b15611835576108f6838361287a565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b6128448161272b565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b60606114dc83836040518060600160405280602781526020016135206027913960605f5f856001600160a01b0316856040516128b691906134b3565b5f60405180830381855af49150503d805f81146128ee576040519150601f19603f3d011682016040523d82523d5f602084013e6128f3565b606091505b50915091506129048683838761290e565b9695505050505050565b6060831561297c5782515f03612975576001600160a01b0385163b6129755760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610940565b5081611fbb565b611fbb83838151156129915781518083602001fd5b8060405162461bcd60e51b815260040161094091906134ed565b5f6101608284031215612280575f5ffd5b80151581146112a3575f5ffd5b5f5f604083850312156129da575f5ffd5b82356001600160401b038111156129ef575f5ffd5b6129fb858286016129ab565b9250506020830135612a0c816129bc565b809150509250929050565b6001600160a01b03811681146112a3575f5ffd5b8035612a3681612a17565b919050565b5f60208284031215612a4b575f5ffd5b81356114dc81612a17565b5f60208284031215612a66575f5ffd5b81356001600160401b03811115612a7b575f5ffd5b611fbb848285016129ab565b5f5b83811015612aa1578181015183820152602001612a89565b50505f910152565b5f8151808452612ac0816020860160208601612a87565b601f01601f19169290920160200192915050565b80516001600160401b031682525f6020820151612afc60208501826001600160401b03169052565b506040820151612b14604085018263ffffffff169052565b506060820151612b2f60608501826001600160a01b03169052565b506080820151612b4a60808501826001600160401b03169052565b5060a0820151612b6560a08501826001600160a01b03169052565b5060c0820151612b8060c08501826001600160401b03169052565b5060e0820151612b9b60e08501826001600160a01b03169052565b50610100820151612bb86101008501826001600160a01b03169052565b50610120820151610120840152610140820151610160610140850152611fbb610160850182612aa9565b828152604060208201525f6114d96040830184612ad4565b5f5f5f60408486031215612c0c575f5ffd5b83356001600160401b03811115612c21575f5ffd5b612c2d868287016129ab565b93505060208401356001600160401b03811115612c48575f5ffd5b8401601f81018613612c58575f5ffd5b80356001600160401b03811115612c6d575f5ffd5b866020828401011115612c7e575f5ffd5b939660209190910195509293505050565b634e487b7160e01b5f52602160045260245ffd5b60058110612cb357612cb3612c8f565b9052565b60408101612cc58285612ca3565b60048310612cd557612cd5612c8f565b8260208301529392505050565b5f60208284031215612cf2575f5ffd5b5035919050565b602081016115b18284612ca3565b634e487b7160e01b5f52604160045260245ffd5b60405161016081016001600160401b0381118282101715612d3e57612d3e612d07565b60405290565b5f82601f830112612d53575f5ffd5b81356001600160401b03811115612d6c57612d6c612d07565b604051601f8201601f19908116603f011681016001600160401b0381118282101715612d9a57612d9a612d07565b604052818152838201602001851015612db1575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f5f60408385031215612dde575f5ffd5b8235612de981612a17565b915060208301356001600160401b03811115612e03575f5ffd5b612e0f85828601612d44565b9150509250929050565b80356001600160401b0381168114612a36575f5ffd5b5f60208284031215612e3f575f5ffd5b6114dc82612e19565b803563ffffffff81168114612a36575f5ffd5b5f6101608284031215612e6c575f5ffd5b612e74612d1b565b9050612e7f82612e19565b8152612e8d60208301612e19565b6020820152612e9e60408301612e48565b6040820152612eaf60608301612a2b565b6060820152612ec060808301612e19565b6080820152612ed160a08301612a2b565b60a0820152612ee260c08301612e19565b60c0820152612ef360e08301612a2b565b60e0820152612f056101008301612a2b565b61010082015261012082810135908201526101408201356001600160401b03811115612f2f575f5ffd5b612f3b84828501612d44565b6101408301525092915050565b5f60208284031215612f58575f5ffd5b81356001600160401b03811115612f6d575f5ffd5b611fbb84828501612e5b565b5f6115b13683612e5b565b5f60208284031215612f94575f5ffd5b6114dc82612e48565b5f60208284031215612fad575f5ffd5b5051919050565b6020808252602e908201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160408201526d191e481a5b9a5d1a585b1a5e995960921b606082015260800190565b634e487b7160e01b5f52601160045260245ffd5b808201808211156115b1576115b1613002565b5f6001600160401b0382166001600160401b03810361304a5761304a613002565b60010192915050565b602081525f6114dc6020830184612ad4565b5f5f8335601e1984360301811261307a575f5ffd5b8301803591506001600160401b03821115613093575f5ffd5b6020019150368190038213156130a7575f5ffd5b9250929050565b634e487b7160e01b5f52601260045260245ffd5b5f5f8335601e198436030181126130d7575f5ffd5b83016020810192503590506001600160401b038111156130f5575f5ffd5b8036038213156130a7575f5ffd5b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b6131458261313883612e19565b6001600160401b03169052565b5f61315260208301612e19565b6001600160401b0316602084015261316c60408301612e48565b63ffffffff16604084015261318360608301612a2b565b6001600160a01b0316606084015261319d60808301612e19565b6001600160401b031660808401526131b760a08301612a2b565b6001600160a01b031660a08401526131d160c08301612e19565b6001600160401b031660c08401526131eb60e08301612a2b565b6001600160a01b031660e08401526132066101008301612a2b565b6001600160a01b0316610100840152610120828101359084015261322e6101408301836130c2565b61016061014086015261269161016086018284613103565b60a081525f61325860a083018561312b565b905063ffffffff835116602083015263ffffffff602084015116604083015263ffffffff60408401511660608301526060830151151560808301529392505050565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b5f60208284031215613342575f5ffd5b81516114dc816129bc565b63ffffffff81811683821601908111156115b1576115b1613002565b604081525f61337b604083018561312b565b90508260208301529392505050565b60408152600d60408201526c5441494b4f5f4d45535341474560981b6060820152608060208201525f6114dc6080830184612ad4565b80356001600160e01b031981169060048410156133f1576001600160e01b0319600485900360031b81901b82161691505b5092915050565b634e487b7160e01b5f52600160045260245ffd5b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b6001600160401b038616815260018060a01b0385166020820152836040820152608060608201525f61348d608083018486613103565b979650505050505050565b5f602082840312156134a8575f5ffd5b81516114dc81612a17565b5f82516134c4818460208701612a87565b9190910192915050565b5f826134e857634e487b7160e01b5f52601260045260245ffd5b500490565b602081525f6114dc6020830184612aa956fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220d82c8f7c970681ddfa323cbf4b55420679e492c19c2d89df90bab3191259c47f64736f6c634300081e0033","sourceMap":"643:25624:9:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11832:1159;;;;;;;;;;-1:-1:-1;11832:1159:9;;;;;:::i;:::-;;:::i;:::-;;5694:92:12;;;;;;;;;;-1:-1:-1;5769:10:12;5694:92;;;-1:-1:-1;;;;;1061:32:150;;;1043:51;;1031:2;1016:18;5694:92:12;;;;;;;;4320:196:9;;;;;;;;;;;;;:::i;4142:92::-;;;;;;;;;;-1:-1:-1;4142:92:9;;;;;:::i;:::-;;:::i;4550:1319::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;7586:4212::-;;;;;;;;;;-1:-1:-1;7586:4212:9;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;5484:104:12:-;;;;;;;;;;;;;:::i;:::-;;;5930:14:150;;5923:22;5905:41;;5893:2;5878:18;5484:104:12;5765:187:150;3143:195:84;;;;;;;;;;-1:-1:-1;3143:195:84;;;;;:::i;:::-;;:::i;2641:62:9:-;;;;;;;;;;-1:-1:-1;2641:62:9;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;:::i;4911:245:12:-;;;;;;;;;;;;;:::i;1713:57:9:-;;;;;;;;;;;;1763:7;1713:57;;;;;6495:25:150;;;6483:2;6468:18;1713:57:9;6349:177:150;3657:220:84;;;;;;:::i;:::-;;:::i;2762:131::-;;;;;;;;;;;;;:::i;14121:410:9:-;;;;;;;;;;-1:-1:-1;14121:410:9;;;;;:::i;:::-;;:::i;5384:94:12:-;;;;;;;;;;;;5454:8;;;;;:17;:8;650:1;5454:17;;5384:94;13578:250:9;;;;;;;;;;-1:-1:-1;13578:250:9;;;;;:::i;:::-;;:::i;2372:45::-;;;;;;;;;;;;;;;2085:101:43;;;;;;;;;;;;;:::i;2031:212:42:-;;;;;;;;;;;;;:::i;16688:150:9:-;;;;;;;;;;-1:-1:-1;16688:150:9;;;;;:::i;:::-;;:::i;:::-;;;8946:10:150;8934:23;;;8916:42;;8904:2;8889:18;16688:150:9;8772:192:150;4625:241:12;;;;;;;;;;;;;:::i;5162:90::-;;;;;;;;;;;;;:::i;1462:85:43:-;;;;;;;;;;-1:-1:-1;1534:6:43;;-1:-1:-1;;;;;1534:6:43;1462:85;;15412:249:9;;;;;;;;;;-1:-1:-1;15412:249:9;;;;;:::i;:::-;;:::i;:::-;;;;9527:14:150;;9520:22;9502:41;;-1:-1:-1;;;;;9579:32:150;;;9574:2;9559:18;;9552:60;9475:18;15412:249:9;9334:284:150;13025:519:9;;;;;;;;;;-1:-1:-1;13025:519:9;;;;;:::i;:::-;;:::i;5903:1380::-;;;;;;;;;;-1:-1:-1;5903:1380:9;;;;;:::i;:::-;;:::i;1584:45::-;;;;;;;;;;;;1622:7;1584:45;;14835:329;;;;;;;;;;-1:-1:-1;14835:329:9;;;;;:::i;:::-;;:::i;1354:44::-;;;;;;;;;;;;1391:7;1354:44;;15996:148;;;;;;;;;;-1:-1:-1;15996:148:9;;;;;:::i;:::-;;:::i;15737:225::-;;;;;;;;;;;;;:::i;:::-;;;;11466:13:150;;11448:32;;11540:4;11528:17;;;11522:24;-1:-1:-1;;;;;11518:50:150;11496:20;;;11489:80;11617:17;;;11611:24;-1:-1:-1;;;;;11607:49:150;11585:20;;;11578:79;11436:2;11421:18;15737:225:9;11252:411:150;16325:146:9;;;;;;;;;;-1:-1:-1;16325:146:9;;;;;:::i;:::-;16449:13;16422:42;;16325:146;1144:99:42;;;;;;;;;;-1:-1:-1;1223:13:42;;-1:-1:-1;;;;;1223:13:42;1144:99;;2514:27:9;;;;;;;;;;-1:-1:-1;2514:27:9;;;;-1:-1:-1;;;2514:27:9;;-1:-1:-1;;;;;2514:27:9;;;;;;-1:-1:-1;;;;;11830:31:150;;;11812:50;;11800:2;11785:18;2514:27:9;11668:200:150;1436:178:42;;;;;;;;;;-1:-1:-1;1436:178:42;;;;;:::i;:::-;;:::i;11832:1159:9:-;11959:20;;;;;;;;:::i;:::-;3486:25;3502:8;3486:15;:25::i;:::-;11999:19:::1;::::0;;;::::1;::::0;::::1;;:::i;:::-;3581:25;3597:8;3581:15;:25::i;:::-;2739:17:12::2;:15;:17::i;:::-;2345:18:::3;:16;:18::i;:::-;2373:24;650:1;2373:17;:24::i;:::-;12077:15:9::4;12095:21;;12107:8:::0;12095:21:::4;:::i;:::-;12077:39;;12126;12139:7;12148:16;12126:12;:39::i;:::-;12176:14;12204:51;12231:8;12241:13;12204:26;:51::i;:::-;12200:472;;;12283:71;12312:8;:14;;;2230:6;12283:71;;;;;;;;;;;::::0;:8:::4;:18;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;12283:28:9::4;::::0;:71;;:28:::4;:71::i;:::-;12271:83;;12200:472;;;12390:17;::::0;;;::::4;::::0;::::4;;:::i;:::-;:22;;::::0;;:40:::4;;;12416:14;12390:40;12389:78;;;;-1:-1:-1::0;12449:18:9::4;::::0;;;::::4;::::0;::::4;;:::i;:::-;-1:-1:-1::0;;;;;12435:32:9::4;:10;-1:-1:-1::0;;;;;12435:32:9::4;;;12389:78;12385:145;;;12494:21;;-1:-1:-1::0;;;12494:21:9::4;;;;;;;;;;;12385:145;12606:55;12625:8;12635:7;12644:9;12655:5;12606:18;:55::i;:::-;12594:67;;12200:472;12686:9;12682:303;;;12711:42;12732:7;12741:11;12711:20;:42::i;:::-;12682:303;;;12774:14;12770:215;;;12804:44;12825:7;12834:13;12804:20;:44::i;:::-;12863:57;::::0;-1:-1:-1;;;12863:57:9;;16449:13;16422:42;;12863:57:::4;::::0;::::4;6495:25:150::0;12863:13:9::4;-1:-1:-1::0;;;;;12863:24:9::4;::::0;::::4;::::0;6468:18:150;;12863:57:9::4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;12770:215;;;12958:16;;-1:-1:-1::0;;;12958:16:9::4;;;;;;;;;;;12770:215;12067:924;;2418:25:12::3;611:1;2418:17;:25::i;:::-;3521:1:9::1;11832:1159:::0;;;:::o;4320:196::-;1355:13:43;:11;:13::i;:::-;4882::48::1;::::0;4370:1:9::1;::::0;4882:13:48::1;::::0;::::1;;;4881:14;:40:::0;::::1;;;-1:-1:-1::0;4899:12:48::1;::::0;:22:::1;::::0;;::::1;:12:::0;::::1;:22;4881:40;4873:99;;;;-1:-1:-1::0;;;4873:99:48::1;;;;;;;:::i;:::-;;;;;;;;;4982:12;:22:::0;;4444:11:9::2;:15:::0;;-1:-1:-1;;4444:15:9::2;::::0;;4982:22:48::1;4469:15:9::0;;;4982:22:48::1;4494:15:9::0;;;-1:-1:-1;;4982:22:48;;::::1;-1:-1:-1::0;;5014:20:48;;;;;::::1;5055:21;::::0;;;5091:20:::1;::::0;13006:36:150;;;5091:20:48::1;::::0;12994:2:150;12979:18;5091:20:48::1;;;;;;;1378:1:43;4320:196:9:o:0;4142:92::-;3279:19:48;3302:13;;;;;;3301:14;;3347:34;;;;-1:-1:-1;3365:12:48;;3380:1;3365:12;;;;:16;3347:34;3346:108;;;-1:-1:-1;3426:4:48;1713:19:64;:23;;;3387:66:48;;-1:-1:-1;3436:12:48;;;;;:17;3387:66;3325:201;;;;-1:-1:-1;;;3325:201:48;;;;;;;:::i;:::-;3536:12;:16;;-1:-1:-1;;3536:16:48;3551:1;3536:16;;;3562:65;;;;3596:13;:20;;-1:-1:-1;;3596:20:48;;;;;3562:65;4203:24:9::1;4220:6;4203:16;:24::i;:::-;3651:14:48::0;3647:99;;;3697:5;3681:21;;-1:-1:-1;;3681:21:48;;;3721:14;;-1:-1:-1;13006:36:150;;3721:14:48;;12994:2:150;12979:18;3721:14:48;;;;;;;3647:99;3269:483;4142:92:9;:::o;4550:1319::-;-1:-1:-1;;;;;;;;4860:16:9;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4668:17:9;;;;;;;;:::i;:::-;2950:24:12;2968:5;2950:17;:24::i;:::-;4707:18:9::1;::::0;;;::::1;::::0;::::1;;:::i;:::-;2950:24:12;2968:5;2950:17;:24::i;:::-;4747:11:9::2;::::0;;;::::2;::::0;::::2;;:::i;:::-;2950:24:12;2968:5;2950:17;:24::i;:::-;4778:20:9::3;::::0;;;::::3;::::0;::::3;;:::i;:::-;3581:25;3597:8;3581:15;:25::i;:::-;2739:17:12::4;:15;:17::i;:::-;2345:18:::5;:16;:18::i;:::-;2373:24;650:1;2373:17;:24::i;:::-;4921:17:9::6;::::0;;;::::6;::::0;::::6;;:::i;:::-;:22;;4942:1;4921:22:::0;4917:197:::6;;4963:12;::::0;;;::::6;::::0;::::6;;:::i;:::-;-1:-1:-1::0;;;;;4963:17:9::6;::::0;4959:45:::6;;4989:15;;-1:-1:-1::0;;;4989:15:9::6;;;;;;;;;;;4959:45;4917:197;;;5025:29;5045:8;5025:19;:29::i;:::-;5058:1;5025:34:::0;5021:93:::6;;5082:21;;-1:-1:-1::0;;;5082:21:9::6;;;;;;;;;;;5021:93;5179:21;5205:40;5224:20;::::0;;;::::6;::::0;::::6;;:::i;5205:40::-;5178:67;;;5298:16;5293:49;;5323:19;;-1:-1:-1::0;;;5323:19:9::6;;;;;;;;;;;5293:49;5452:9;5436:12;::::0;;;::::6;::::0;::::6;;:::i;:::-;5419:29;::::0;-1:-1:-1;;;;;5419:29:9::6;:14;::::0;::::6;;:29;:::i;:::-;:42;5415:72;;5470:17;;-1:-1:-1::0;;;5470:17:9::6;;;;;;;;;;;5415:72;5498:19;5509:8:::0;5498:19:::6;:::i;:::-;5624:13;:15:::0;;5498:19;;-1:-1:-1;;;;5624:15:9;;::::6;-1:-1:-1::0;;;;;5624:15:9::6;::::0;:13:::6;:15;::::0;::::6;:::i;:::-;::::0;;::::6;::::0;;;::::6;-1:-1:-1::0;;;;;5624:15:9;;::::6;;::::0;;::::6;::::0;;::::6;;;::::0;;;5610:29;;::::6;::::0;;5665:10:::6;5649:13;::::0;::::6;:26:::0;5714:13:::6;5685:43;:19;::::0;::::6;:43:::0;5750:21:::6;5610:29:::0;5750:11:::6;:21::i;:::-;5739:32;;5799:8;5787:31;5809:8;5787:31;;;;;;:::i;:::-;;;;;;;;5828:34;::::0;-1:-1:-1;;;5828:34:9;;::::6;::::0;::::6;6495:25:150::0;;;5828:13:9::6;-1:-1:-1::0;;;;;5828:24:9::6;::::0;::::6;::::0;6468:18:150;;5828:34:9::6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;4907:962;2418:25:12::5;611:1;2418:17;:25::i;:::-;2984:1:::3;::::2;::::1;4550:1319:9::0;;;;:::o;7586:4212::-;7759:14;7775:20;2739:17:12;:15;:17::i;:::-;2345:18:::1;:16;:18::i;:::-;2373:24;650:1;2373:17;:24::i;:::-;7811:16:9::2;7830:9;7811:28:::0;-1:-1:-1;7958:13:9::2;7934:20;::::0;;;::::2;::::0;::::2;;:::i;:::-;-1:-1:-1::0;;;;;7934:37:9::2;;7930:69;;7980:19;;-1:-1:-1::0;;;7980:19:9::2;;;;;;;;;;;7930:69;8093:19;::::0;;;::::2;::::0;::::2;;:::i;:::-;-1:-1:-1::0;;;;;8093:24:9::2;::::0;;:64:::2;;-1:-1:-1::0;8144:13:9::2;8121:19;::::0;;;::::2;::::0;::::2;;:::i;:::-;-1:-1:-1::0;;;;;8121:36:9::2;;8093:64;8089:121;;;8180:19;;-1:-1:-1::0;;;8180:19:9::2;;;;;;;;;;;8089:121;-1:-1:-1::0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8299:18:9::2;::::0;;;::::2;::::0;::::2;;:::i;:::-;-1:-1:-1::0;;;;;8285:32:9::2;:10;:32;::::0;::::2;8258:24;::::0;::::2;:59:::0;8412:196:::2;;8460:17;::::0;;;::::2;::::0;::::2;;:::i;:::-;:22;;8481:1;8460:22:::0;8456:56:::2;;8491:21;;-1:-1:-1::0;;;8491:21:9::2;;;;;;;;;;;8456:56;1763:7;8530:39:::0;::::2;8526:71;;;8578:19;;-1:-1:-1::0;;;8578:19:9::2;;;;;;;;;;;8526:71;8618:15;8636:21;;8648:8:::0;8636:21:::2;:::i;:::-;8618:39;;8668:33;8681:7;8690:10;8668:12;:33::i;:::-;8712:39;::::0;::::2;:15;::::0;::::2;:39:::0;8793:73:::2;8814:13;8829:7:::0;8838:19:::2;::::0;;;::::2;::::0;::::2;;:::i;:::-;8859:6;;8793:20;:73::i;:::-;8761:105;;:17;::::0;::::2;:105:::0;8877:20:::2;8911:51;8938:8:::0;8948:13:::2;8911:26;:51::i;:::-;8907:829;;;-1:-1:-1::0;9214:11:9::2;::::0;-1:-1:-1;9249:34:9::2;::::0;-1:-1:-1;9176:14:9::2;::::0;::::2;;8907:829;;;9314:16;9333:5;:24;;;:68;;9392:9;9333:68;;;9360:29;9380:8;9360:19;:29::i;:::-;9314:87;;9420:73;9439:8;9449:7;9458:8;9468:5;:24;;;9420:18;:73::i;:::-;9416:310;;;9523:11;9513:21;;9562:26;9552:36;;9416:310;;;9637:16;9627:26;;9681:30;9671:40;;9416:310;9300:436;8907:829;9750:12;::::0;;;::::2;::::0;::::2;;:::i;:::-;-1:-1:-1::0;;;;;9750:17:9::2;::::0;9746:1855:::2;;9799:12;::::0;;;::::2;::::0;::::2;;:::i;:::-;9783:28;::::0;-1:-1:-1;;;;;9783:28:9::2;::::0;::::2;:::i;:::-;;;9830:5;:24;;;:50;;;;-1:-1:-1::0;9858:17:9::2;::::0;;;::::2;::::0;::::2;;:::i;:::-;:22;;::::0;::::2;9830:50;9826:1765;;;10616:17;::::0;::::2;::::0;:51:::2;;1906:6;10616:51;11037:9;10964:42;10985:13;;::::0;::::2;:8:::0;:13:::2;:::i;:::-;22623:2:::0;22617;22604:15;;;22603:22;;;:27;22633:3;22603:33;22641:1;22602:40;;;-1:-1:-1;22056:604:9;10964:42:::2;10938:68;::::0;;::::2;::::0;;:108;;;;1622:7:::2;10938:108:::0;10881:187;::::2;::::0;;;:22:::2;::::0;11149:6;;11112:34:::2;::::0;11149:6;;10881:187;11112:10:::2;:34;:::i;:::-;:43;::::0;-1:-1:-1;11177:14:9::2;11222:17;::::0;;;::::2;::::0;::::2;;:::i;:::-;11194:45;;11207:12;::::0;;;::::2;::::0;::::2;;:::i;:::-;-1:-1:-1::0;;;;;11194:25:9::2;:10;:25;:45;;;;;:::i;:::-;;11177:62;;11261:15;11292:13;11279:10;:26;11261:44;;11327:11;11365:72;11424:8;:12;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;11365:72:9::2;11377:6;11366:7;:17;;:52;;11396:16:::0;;::::2;11417:1;11395:23;11366:52;;;11386:6;11366:52;11365:58:::0;::::2;:72::i;:::-;11460:19:::0;;;::::2;::::0;11327:110;-1:-1:-1;11501:57:9::2;:10;11327:110:::0;2230:6:::2;11501:29;:57::i;:::-;9900:1677;;;;;9826:1765;11611:74;11649:12:::0;2230:6:::2;11611:18;::::0;;;::::2;::::0;::::2;;:::i;:::-;-1:-1:-1::0;;;;;11611:37:9::2;::::0;:74;:37:::2;:74::i;:::-;11696:38;11717:7;11726;11696:20;:38::i;:::-;11766:7;11749:42;11775:8;11785:5;11749:42;;;;;;;:::i;:::-;;;;;;;;7801:3997;;;;2418:25:12::1;611:1;2418:17;:25::i;:::-;7586:4212:9::0;;;;;;:::o;5484:104:12:-;5531:4;650:1;5554:18;6882:9;;;;;6786:112;5554:18;:27;;;5547:34;;5484:104;:::o;3143:195:84:-;-1:-1:-1;;;;;1654:6:84;1637:23;1645:4;1637:23;1629:80;;;;-1:-1:-1;;;1629:80:84;;;;;;;:::i;:::-;1751:6;-1:-1:-1;;;;;1727:30:84;:20;:18;:20::i;:::-;-1:-1:-1;;;;;1727:30:84;;1719:87;;;;-1:-1:-1;;;1719:87:84;;;;;;;:::i;:::-;3224:36:::1;3242:17;3224;:36::i;:::-;3311:12;::::0;;3321:1:::1;3311:12:::0;;;::::1;::::0;::::1;::::0;;;3270:61:::1;::::0;3292:17;;3311:12;3270:21:::1;:61::i;:::-;3143:195:::0;:::o;4911:245:12:-;2575:14;:12;:14::i;:::-;4958:10:::1;6435:8:::0;:17;;-1:-1:-1;;6435:17:12;;;;;6388:71;4958:10:::1;4983:20;::::0;4992:10:::1;1043:51:150::0;;4983:20:12::1;::::0;1031:2:150;1016:18;4983:20:12::1;;;;;;;5115:34;5131:10;5143:5;5115:15;:34::i;:::-;4911:245::o:0;3657:220:84:-;-1:-1:-1;;;;;1654:6:84;1637:23;1645:4;1637:23;1629:80;;;;-1:-1:-1;;;1629:80:84;;;;;;;:::i;:::-;1751:6;-1:-1:-1;;;;;1727:30:84;:20;:18;:20::i;:::-;-1:-1:-1;;;;;1727:30:84;;1719:87;;;;-1:-1:-1;;;1719:87:84;;;;;;;:::i;:::-;3772:36:::1;3790:17;3772;:36::i;:::-;3818:52;3840:17;3859:4;3865;3818:21;:52::i;2762:131::-:0;2840:7;2080:4;-1:-1:-1;;;;;2089:6:84;2072:23;;2064:92;;;;-1:-1:-1;;;2064:92:84;;18600:2:150;2064:92:84;;;18582:21:150;18639:2;18619:18;;;18612:30;18678:34;18658:18;;;18651:62;18749:26;18729:18;;;18722:54;18793:19;;2064:92:84;18398:420:150;2064:92:84;-1:-1:-1;;;;;;;;;;;;2166:1:84::1;2762:131:::0;:::o;14121:410:9:-;14265:4;14312:13;14289:19;;;;;;;;:::i;:::-;-1:-1:-1;;;;;14289:36:9;;14285:54;;-1:-1:-1;14334:5:9;14327:12;;14285:54;14357:167;14388:13;14415:45;14438:21;;14450:8;14438:21;:::i;14415:45::-;14474:20;;;;;;;;:::i;:::-;14508:6;;14357:17;:167::i;:::-;14350:174;;14121:410;;;;;;:::o;13578:250::-;13651:4;13694:13;13671:19;;;;;;;;:::i;:::-;-1:-1:-1;;;;;13671:36:9;;13667:54;;-1:-1:-1;13716:5:9;;13578:250;-1:-1:-1;13578:250:9:o;13667:54::-;-1:-1:-1;;;;;13738:13:9;:26;;13781:4;13797:21;;13809:8;13797:21;:::i;:::-;13738:83;;-1:-1:-1;;;;;;13738:83:9;;;;;;;-1:-1:-1;;;;;19015:32:150;;;13738:83:9;;;18997:51:150;19064:18;;;19057:34;18970:18;;13738:83:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13731:90;13578:250;-1:-1:-1;;13578:250:9:o;2085:101:43:-;1355:13;:11;:13::i;:::-;2149:30:::1;2176:1;2149:18;:30::i;2031:212:42:-:0;1223:13;;965:10:65;;-1:-1:-1;;;;;1223:13:42;2130:24;;2122:78;;;;-1:-1:-1;;;2122:78:42;;19554:2:150;2122:78:42;;;19536:21:150;19593:2;19573:18;;;19566:30;19632:34;19612:18;;;19605:62;-1:-1:-1;;;19683:18:150;;;19676:39;19732:19;;2122:78:42;19352:405:150;2122:78:42;2210:26;2229:6;2210:18;:26::i;16688:150:9:-;16760:6;16785:46;1391:7;22633:3;22623:2;22617;22604:15;;22603:22;;;:27;:33;22641:1;22602:40;16785:46;:::i;4625:241:12:-;2739:17;:15;:17::i;:::-;6359:8;:16;;-1:-1:-1;;6359:16:12;;;;;4696:18:::1;::::0;4703:10:::1;1043:51:150::0;;4696:18:12::1;::::0;1031:2:150;1016:18;4696::12::1;;;;;;;4826:33;4842:10;4854:4;4826:15;:33::i;5162:90::-:0;5199:7;5225:20;:18;:20::i;:::-;5218:27;;5162:90;:::o;15412:249:9:-;15502:13;15517:19;15566:42;15574:8;-1:-1:-1;;;15603:4:9;15566:7;:42::i;:::-;-1:-1:-1;;;;;15629:25:9;;;;;15552:56;;-1:-1:-1;15412:249:9;-1:-1:-1;;15412:249:9:o;13025:519::-;13108:20;;;;;;;;:::i;:::-;3486:25;3502:8;3486:15;:25::i;:::-;13148:19:::1;::::0;;;::::1;::::0;::::1;;:::i;:::-;3581:25;3597:8;3581:15;:25::i;:::-;2739:17:12::2;:15;:17::i;:::-;2345:18:::3;:16;:18::i;:::-;2373:24;650:1;2373:17;:24::i;:::-;13244:18:9::4;::::0;;;::::4;::::0;::::4;;:::i;:::-;-1:-1:-1::0;;;;;13230:32:9::4;:10;-1:-1:-1::0;;;;;13230:32:9::4;;13226:91;;13285:21;;-1:-1:-1::0;;;13285:21:9::4;;;;;;;;;;;13226:91;13327:15;13345:21;;13357:8:::0;13345:21:::4;:::i;:::-;13327:39;;13376;13389:7;13398:16;13376:12;:39::i;:::-;13426:44;13447:7;13456:13;13426:20;:44::i;:::-;13480:57;::::0;-1:-1:-1;;;13480:57:9;;16449:13;16422:42;;13480:57:::4;::::0;::::4;6495:25:150::0;13480:13:9::4;-1:-1:-1::0;;;;;13480:24:9::4;::::0;::::4;::::0;6468:18:150;;13480:57:9::4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;13216:328;2418:25:12::3;611:1;2418:17;:25::i;:::-;3521:1:9::1;13025:519:::0;;:::o;5903:1380::-;6033:19;;;;;;;;:::i;:::-;3486:25;3502:8;3486:15;:25::i;:::-;6072:20:::1;::::0;;;::::1;::::0;::::1;;:::i;:::-;3581:25;3597:8;3581:15;:25::i;:::-;2739:17:12::2;:15;:17::i;:::-;2345:18:::3;:16;:18::i;:::-;2373:24;650:1;2373:17;:24::i;:::-;6151:15:9::4;6169:21;;6181:8:::0;6169:21:::4;:::i;:::-;6151:39;;6200:33;6213:7;6222:10;6200:12;:33::i;:::-;6249:50;::::0;-1:-1:-1;;;6249:50:9;;6284:4:::4;6249:50;::::0;::::4;18997:51:150::0;19064:18;;;19057:34;;;6249:13:9::4;-1:-1:-1::0;;;;;6249:26:9::4;::::0;::::4;::::0;18970:18:150;;6249:50:9::4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6244:109;;6322:20;;-1:-1:-1::0;;;6322:20:9::4;;;;;;;;;;;6244:109;6363:120;6397:13;16449::::0;16422:42;;6445:20:::4;::::0;;;::::4;::::0;::::4;;:::i;:::-;6467:6;;6363:20;:120::i;:::-;;6494:46;6515:7;6524:15;6494:20;:46::i;:::-;6670:68;-1:-1:-1::0;;;6670:13:9::4;::::0;;;::::4;::::0;::::4;;:::i;:::-;-1:-1:-1::0;;;;;6670:31:9::4;::::0;::::4;:68::i;:::-;6666:611;;;6754:58;6768:7:::0;6785:4:::4;6792:19;::::0;;;::::4;::::0;::::4;;:::i;:::-;6754:13;:58::i;:::-;6875:13;::::0;;;::::4;::::0;::::4;;:::i;:::-;-1:-1:-1::0;;;;;6857:63:9::4;;6929:8;:14;;;6946:8;6956:7;6857:107;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7040:120;-1:-1:-1::0;;7071:21:9::4;;-1:-1:-1::0;;2348:17:9;7040:13:::4;:120::i;:::-;6666:611;;;7191:75;7228:14;::::0;::::4;;2230:6;7191:17;::::0;;;::::4;::::0;::::4;;:::i;:75::-;6141:1142;2418:25:12::3;611:1;2418:17;:25::i;:::-;3521:1:9::1;5903:1380:::0;;;;:::o;14835:329::-;14981:4;15029:13;15005:20;;;;;;;;:::i;:::-;-1:-1:-1;;;;;15005:37:9;;15001:55;;-1:-1:-1;15051:5:9;15044:12;;15001:55;15073:84;15091:13;15106:21;;15118:8;15106:21;:::i;:::-;15129:19;;;;;;;;:::i;15996:148::-;16063:7;16127:8;16099:37;;;;;;;;:::i;:::-;;;;;;;;;;;;;16089:48;;;;;;16082:55;;15996:148;;;:::o;15737:225::-;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;15817:14:9;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;20226:12:9;;;;;;;;20233:5;20226:12;;;;;-1:-1:-1;;;;;20226:12:9;;;;;;-1:-1:-1;;;20226:12:9;;-1:-1:-1;;;;;20226:12:9;;;;;;;;;20145:100;15817:14;15845:12;;15810:21;;-1:-1:-1;15845:17:9;;:58;;-1:-1:-1;15866:12:9;;-1:-1:-1;;15866:37:9;15845:58;15841:115;;;15926:19;;-1:-1:-1;;;15926:19:9;;;;;;;;;;;1436:178:42;1355:13:43;:11;:13::i;:::-;1525::42::1;:24:::0;;-1:-1:-1;;;;;1525:24:42;::::1;-1:-1:-1::0;;;;;;1525:24:42;;::::1;::::0;::::1;::::0;;;1589:7:::1;1534:6:43::0;;-1:-1:-1;;;;;1534:6:43;;1462:85;1589:7:42::1;-1:-1:-1::0;;;;;1564:43:42::1;;;;;;;;;;;1436:178:::0;:::o;25982:130:9:-;26064:13;26052:8;-1:-1:-1;;;;;26052:25:9;;26048:57;;26086:19;;-1:-1:-1;;;26086:19:9;;;;;;;;;;;26118:147;-1:-1:-1;;;;;26188:13:9;;;;:42;;;26217:13;26205:8;-1:-1:-1;;;;;26205:25:9;;26188:42;26184:74;;;26239:19;;-1:-1:-1;;;26239:19:9;;;;;;;;;;;7435:99:12;7494:8;5454;;;;;:17;:8;650:1;5454:17;;5384:94;7494:8;7493:9;7485:42;;;;-1:-1:-1;;;7485:42:12;;;;;;;;;;;7216:112;650:1;7275:18;6882:9;;;;;6786:112;7275:18;:27;;;7267:54;;;;-1:-1:-1;;;7267:54:12;;;;;;;;;;;6653:97;6723:9;:20;;-1:-1:-1;;6723:20:12;;;;;;;;;;;;6653:97::o;21073:167:9:-;21191:15;21164:42;;;;;;;;:::i;:::-;:23;;;;:13;:23;;;;;;;;:42;;;;;;;;:::i;:::-;;21160:73;;21215:18;;-1:-1:-1;;;21215:18:9;;;;;;;;;;;21246:521;21408:4;;21432:11;;;;;;;;:::i;:::-;-1:-1:-1;;;;;21432:25:9;;21428:42;;-1:-1:-1;21466:4:9;21459:11;;21428:42;21507:4;21484:11;;;;;;;;:::i;:::-;-1:-1:-1;;;;;21484:28:9;;21480:45;;-1:-1:-1;21521:4:9;21514:11;;21480:45;-1:-1:-1;;;;;21539:38:9;;:11;;;;;;;;:::i;:::-;-1:-1:-1;;;;;21539:38:9;;21535:55;;-1:-1:-1;21586:4:9;21579:11;;21535:55;21632:1;21608:13;;;;:8;:13;:::i;:::-;:20;;:25;;:112;;;;-1:-1:-1;;;;21656:13:9;;;;:8;:13;:::i;:::-;21649:21;;;:::i;:::-;-1:-1:-1;;;;;;21649:71:9;;;21608:112;:152;;;;-1:-1:-1;21736:24:9;:11;;;;;;;;:::i;:::-;-1:-1:-1;;;;;21736:22:9;1713:19:64;:23;;;1423:320;810:850:19;974:13;-1:-1:-1;;;;;1058:17:19;;1050:49;;;;-1:-1:-1;;;1050:49:19;;;;;;;;;;;;1619:1;1590;1553:9;1547:16;1515:4;1504:9;1500:20;1460:7;1426:3;1392:9;1370:274;1358:286;810:850;-1:-1:-1;;;;;810:850:19:o;17315:949:9:-;17509:13;17570:4;17545:13;;;;;;;;:::i;:::-;-1:-1:-1;;;;;17545:30:9;;17538:38;;;;:::i;:::-;17591:14;;;;:19;:48;;;;-1:-1:-1;17614:13:9;;;;:8;:13;:::i;:::-;:25;;-1:-1:-1;17591:48:9;17587:65;;;-1:-1:-1;17648:4:9;17641:11;;17587:65;17667:9;17680:1;17667:14;17663:32;;-1:-1:-1;17690:5:9;17683:12;;17663:32;17706:59;17720:8;17730:13;;;;;;;;:::i;:::-;17745:19;;;;;;;;:::i;17706:59::-;17776:10;17789:11;;;;;;;;:::i;:::-;17776:24;-1:-1:-1;17826:14:9;;;;17810:13;17870;;;;17826:8;17870:13;:::i;:::-;17850:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;17998:11:9;;17850:33;;-1:-1:-1;17850:33:9;;;-1:-1:-1;17850:33:9;;-1:-1:-1;17998:11:9;-1:-1:-1;17991:4:9;17981:15;;17974:5;17970:2;17959:9;17954:62;17942:74;;18040:5;18029:16;;18069:24;18065:93;;;18109:38;18128:7;18137:9;18109:18;:38::i;:::-;18167:90;-1:-1:-1;;2348:17:9;;18167:13;:90::i;:::-;17528:736;;;;17315:949;;;;;;;:::o;18568:251::-;18681:7;18654:34;;;;;;;;:::i;:::-;:23;;;;:13;:23;;;;;;;;:34;;;;;;;;:::i;:::-;;18650:65;;18697:18;;-1:-1:-1;;;18697:18:9;;;;;;;;;;;18650:65;18725:23;;;;:13;:23;;;;;:33;;18751:7;;18725:23;-1:-1:-1;;18725:33:9;;18751:7;18725:33;;;;;;;;:::i;:::-;;;;;;18794:8;18773:39;18804:7;18773:39;;;;;;:::i;:::-;;;;;;;;18568:251;;:::o;1620:130:43:-;1534:6;;-1:-1:-1;;;;;1534:6:43;965:10:65;1683:23:43;1675:68;;;;-1:-1:-1;;;1675:68:43;;21454:2:150;1675:68:43;;;21436:21:150;;;21473:18;;;21466:30;21532:34;21512:18;;;21505:62;21584:18;;1675:68:43;21252:356:150;6100:208:12;5374:13:48;;;;;;;5366:69;;;;-1:-1:-1;;;5366:69:48;;;;;;;:::i;:::-;6186:16:12::1;:14;:16::i;:::-;6212:62;-1:-1:-1::0;;;;;6231:20:12;::::1;::::0;:42:::1;;6267:6;6212:18;:62::i;6231:42::-;6254:10;6212:18;:62::i;:::-;-1:-1:-1::0;6284:8:12::1;:17:::0;;-1:-1:-1;;6284:17:12::1;;;::::0;;6100:208::o;7540:116::-;-1:-1:-1;;;;;7613:19:12;;7605:44;;;;-1:-1:-1;;;7605:44:12;;;;;;;;;;;21773:277:9;21851:7;;21895:43;21917:13;;;;:8;:13;:::i;:::-;:20;;21895:21;:43::i;:::-;21870:68;;;-1:-1:-1;21870:68:9;21979:37;21998:17;;;;;;;;:::i;:::-;21979:37;;:14;:18;;:37;;;;:::i;:::-;:54;;21773:277;-1:-1:-1;;;21773:277:9:o;19512:536::-;19701:19;19740:14;-1:-1:-1;;;;;19740:34:9;;19788:8;19798:43;19806:8;-1:-1:-1;;;19835:5:9;19798:7;:43::i;:::-;19843:7;19852:6;;19740:128;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;-1:-1:-1;19740:128:9;;;;;;;;-1:-1:-1;;19740:128:9;;;;;;;;;;;;:::i;:::-;;;19736:306;;20008:23;;-1:-1:-1;;;20008:23:9;;;;;;;;;;;19736:306;19957:11;-1:-1:-1;19736:306:9;19512:536;;;;;;;:::o;731:110:22:-;791:7;822:2;817;:7;:17;;832:2;817:17;;;-1:-1:-1;827:2:22;;731:110;-1:-1:-1;731:110:22:o;416:::-;476:7;507:2;502;:7;:17;;517:2;502:17;;;-1:-1:-1;512:2:22;416:110;-1:-1:-1;416:110:22:o;1939:207:19:-;2039:7;2050:1;2039:12;2035:25;;1939:207;;;:::o;2035:25::-;2077:38;2087:3;2092:7;2101:9;2077:38;;;;;;;;;;;;:9;:38::i;:::-;2069:70;;;;-1:-1:-1;;;2069:70:19;;;;;;;;;;;1175:140:80;-1:-1:-1;;;;;;;;;;;1254:54:80;-1:-1:-1;;;;;1254:54:80;;1175:140::o;6465:75:12:-;1355:13:43;:11;:13::i;2494:922:80:-;689:66;2910:48;;;2906:504;;;2974:37;2993:17;2974:18;:37::i;2906:504::-;3064:17;-1:-1:-1;;;;;3046:50:80;;:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3046:52:80;;;;;;;;-1:-1:-1;;3046:52:80;;;;;;;;;;;;:::i;:::-;;;3042:291;;3262:56;;-1:-1:-1;;;3262:56:80;;22929:2:150;3262:56:80;;;22911:21:150;22968:2;22948:18;;;22941:30;23007:34;22987:18;;;22980:62;-1:-1:-1;;;23058:18:150;;;23051:44;23112:19;;3262:56:80;22727:410:150;3042:291:80;-1:-1:-1;;;;;;;;;;;3148:28:80;;3140:82;;;;-1:-1:-1;;;3140:82:80;;23344:2:150;3140:82:80;;;23326:21:150;23383:2;23363:18;;;23356:30;23422:34;23402:18;;;23395:62;-1:-1:-1;;;23473:18:150;;;23466:39;23522:19;;3140:82:80;23142:405:150;3140:82:80;3099:138;3346:53;3364:17;3383:4;3389:9;3346:17;:53::i;7334:95:12:-;7389:8;5454;;;;;:17;:8;650:1;5454:17;;5384:94;7389:8;7381:41;;;;-1:-1:-1;;;7381:41:12;;;;;;;;;;;6546:70;1355:13:43;:11;:13::i;20628:439:9:-;20827:4;20851:14;-1:-1:-1;;;;;20851:35:9;;20900:8;20910:43;20918:8;-1:-1:-1;;;20947:5:9;20910:7;:43::i;:::-;20955:7;20964:6;;20851:129;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20847:214;;-1:-1:-1;21045:5:9;21038:12;;20847:214;-1:-1:-1;21002:4:9;20995:11;;1798:153:42;1887:13;1880:20;;-1:-1:-1;;;;;;1880:20:42;;;1910:34;1935:8;1910:24;:34::i;2232:252:13:-;2382:7;5769:10:12;2412:65:13;;-1:-1:-1;;;2412:65:13;;-1:-1:-1;;;;;23765:31:150;;2412:65:13;;;23747:50:150;23813:18;;;23806:34;;;23883:14;;23876:22;23856:18;;;23849:50;-1:-1:-1;;;;;2412:29:13;;;;;;;23720:18:150;;2412:65:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;2485:392:19:-;2710:57;;-1:-1:-1;;;;;;24328:33:150;;2710:57:19;;;24310:52:150;2617:12:19;;;;;;-1:-1:-1;;;;;2693:16:19;;;24283:18:150;;2710:57:19;;;-1:-1:-1;;2710:57:19;;;;;;;;;;;;;;-1:-1:-1;;;;;2710:57:19;-1:-1:-1;;;2710:57:19;;;2693:75;;;2710:57;2693:75;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2645:123;;;;2782:7;:28;;;;;2793:4;:11;2808:2;2793:17;2782:28;2778:93;;;2847:4;2836:24;;;;;;;;;;;;:::i;:::-;2826:34;;2778:93;2635:242;;2485:392;;;;:::o;18998:155:9:-;19109:37;;;;;;;;;;;-1:-1:-1;;;;;19109:37:9;;;;;;;;;-1:-1:-1;;;;;19109:37:9;;;;;;;;19101:5;:45;;;;;;;-1:-1:-1;;;19101:45:9;;;-1:-1:-1;;;;;;19101:45:9;;;;;;;;;18998:155::o;23684:2292::-;25512:18;25528:2;25512:13;:18;:::i;:::-;25501:8;:29;25497:473;;;25937:9;747:59:65;5374:13:48;;;;;;;5366:69;;;;-1:-1:-1;;;5366:69:48;;;;;;;:::i;1406:259:80:-;-1:-1:-1;;;;;1713:19:64;;;1479:95:80;;;;-1:-1:-1;;;1479:95:80;;25089:2:150;1479:95:80;;;25071:21:150;25128:2;25108:18;;;25101:30;25167:34;25147:18;;;25140:62;-1:-1:-1;;;25218:18:150;;;25211:43;25271:19;;1479:95:80;24887:409:150;1479:95:80;-1:-1:-1;;;;;;;;;;;1584:74:80;;-1:-1:-1;;;;;;1584:74:80;-1:-1:-1;;;;;1584:74:80;;;;;;;;;;1406:259::o;2057:265::-;2165:29;2176:17;2165:10;:29::i;:::-;2222:1;2208:4;:11;:15;:28;;;;2227:9;2208:28;2204:112;;;2252:53;2281:17;2300:4;2252:28;:53::i;2687:187:43:-;2779:6;;;-1:-1:-1;;;;;2795:17:43;;;-1:-1:-1;;;;;;2795:17:43;;;;;;;2827:40;;2779:6;;;2795:17;2779:6;;2827:40;;2760:16;;2827:40;2750:124;2687:187;:::o;1771:152:80:-;1837:37;1856:17;1837:18;:37::i;:::-;1889:27;;-1:-1:-1;;;;;1889:27:80;;;;;;;;1771:152;:::o;6674:198:94:-;6757:12;6788:77;6809:6;6817:4;6788:77;;;;;;;;;;;;;;;;;7199:12;7224;7238:23;7265:6;-1:-1:-1;;;;;7265:19:94;7285:4;7265:25;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7223:67;;;;7307:69;7334:6;7342:7;7351:10;7363:12;7307:26;:69::i;:::-;7300:76;7058:325;-1:-1:-1;;;;;;7058:325:94:o;7671:628::-;7851:12;7879:7;7875:418;;;7906:10;:17;7927:1;7906:22;7902:286;;-1:-1:-1;;;;;1713:19:64;;;8113:60:94;;;;-1:-1:-1;;;8113:60:94;;25503:2:150;8113:60:94;;;25485:21:150;25542:2;25522:18;;;25515:30;25581:31;25561:18;;;25554:59;25630:18;;8113:60:94;25301:353:150;8113:60:94;-1:-1:-1;8208:10:94;8201:17;;7875:418;8249:33;8257:10;8269:12;8980:17;;:21;8976:379;;9208:10;9202:17;9264:15;9251:10;9247:2;9243:19;9236:44;8976:379;9331:12;9324:20;;-1:-1:-1;;;9324:20:94;;;;;;;;:::i;14:156:150:-;74:5;119:3;110:6;105:3;101:16;97:26;94:46;;;136:1;133;126:12;175:118;261:5;254:13;247:21;240:5;237:32;227:60;;283:1;280;273:12;298:485;390:6;398;451:2;439:9;430:7;426:23;422:32;419:52;;;467:1;464;457:12;419:52;507:9;494:23;-1:-1:-1;;;;;532:6:150;529:30;526:50;;;572:1;569;562:12;526:50;595:67;654:7;645:6;634:9;630:22;595:67;:::i;:::-;585:77;;;712:2;701:9;697:18;684:32;725:28;747:5;725:28;:::i;:::-;772:5;762:15;;;298:485;;;;;:::o;1105:131::-;-1:-1:-1;;;;;1180:31:150;;1170:42;;1160:70;;1226:1;1223;1216:12;1241:134;1309:20;;1338:31;1309:20;1338:31;:::i;:::-;1241:134;;;:::o;1380:247::-;1439:6;1492:2;1480:9;1471:7;1467:23;1463:32;1460:52;;;1508:1;1505;1498:12;1460:52;1547:9;1534:23;1566:31;1591:5;1566:31;:::i;1632:356::-;1718:6;1771:2;1759:9;1750:7;1746:23;1742:32;1739:52;;;1787:1;1784;1777:12;1739:52;1827:9;1814:23;-1:-1:-1;;;;;1852:6:150;1849:30;1846:50;;;1892:1;1889;1882:12;1846:50;1915:67;1974:7;1965:6;1954:9;1950:22;1915:67;:::i;2199:250::-;2284:1;2294:113;2308:6;2305:1;2302:13;2294:113;;;2384:11;;;2378:18;2365:11;;;2358:39;2330:2;2323:10;2294:113;;;-1:-1:-1;;2441:1:150;2423:16;;2416:27;2199:250::o;2454:270::-;2495:3;2533:5;2527:12;2560:6;2555:3;2548:19;2576:76;2645:6;2638:4;2633:3;2629:14;2622:4;2615:5;2611:16;2576:76;:::i;:::-;2706:2;2685:15;-1:-1:-1;;2681:29:150;2672:39;;;;2713:4;2668:50;;2454:270;-1:-1:-1;;2454:270:150:o;2729:1233::-;2815:12;;-1:-1:-1;;;;;2058:30:150;2046:43;;2779:3;2879:4;2872:5;2868:16;2862:23;2894:47;2935:4;2930:3;2926:14;2912:12;-1:-1:-1;;;;;2058:30:150;2046:43;;1993:102;2894:47;;2989:4;2982:5;2978:16;2972:23;3004:49;3047:4;3042:3;3038:14;3022;2176:10;2165:22;2153:35;;2100:94;3004:49;;3101:4;3094:5;3090:16;3084:23;3116:50;3160:4;3155:3;3151:14;3135;-1:-1:-1;;;;;854:31:150;842:44;;788:104;3116:50;;3214:4;3207:5;3203:16;3197:23;3229:49;3272:4;3267:3;3263:14;3247;-1:-1:-1;;;;;2058:30:150;2046:43;;1993:102;3229:49;;3326:4;3319:5;3315:16;3309:23;3341:50;3385:4;3380:3;3376:14;3360;-1:-1:-1;;;;;854:31:150;842:44;;788:104;3341:50;;3439:4;3432:5;3428:16;3422:23;3454:49;3497:4;3492:3;3488:14;3472;-1:-1:-1;;;;;2058:30:150;2046:43;;1993:102;3454:49;;3551:4;3544:5;3540:16;3534:23;3566:50;3610:4;3605:3;3601:14;3585;-1:-1:-1;;;;;854:31:150;842:44;;788:104;3566:50;;3664:6;3657:5;3653:18;3647:25;3681:52;3725:6;3720:3;3716:16;3700:14;-1:-1:-1;;;;;854:31:150;842:44;;788:104;3681:52;;3784:6;3777:5;3773:18;3767:25;3758:6;3753:3;3749:16;3742:51;3841:6;3834:5;3830:18;3824:25;3883:6;3874;3869:3;3865:16;3858:32;3906:50;3948:6;3943:3;3939:16;3923:14;3906:50;:::i;3967:329::-;4174:6;4163:9;4156:25;4217:2;4212;4201:9;4197:18;4190:30;4137:4;4237:53;4286:2;4275:9;4271:18;4263:6;4237:53;:::i;4301:836::-;4407:6;4415;4423;4476:2;4464:9;4455:7;4451:23;4447:32;4444:52;;;4492:1;4489;4482:12;4444:52;4532:9;4519:23;-1:-1:-1;;;;;4557:6:150;4554:30;4551:50;;;4597:1;4594;4587:12;4551:50;4620:67;4679:7;4670:6;4659:9;4655:22;4620:67;:::i;:::-;4610:77;;;4740:2;4729:9;4725:18;4712:32;-1:-1:-1;;;;;4759:8:150;4756:32;4753:52;;;4801:1;4798;4791:12;4753:52;4824:24;;4879:4;4871:13;;4867:27;-1:-1:-1;4857:55:150;;4908:1;4905;4898:12;4857:55;4948:2;4935:16;-1:-1:-1;;;;;4966:6:150;4963:30;4960:50;;;5006:1;5003;4996:12;4960:50;5051:7;5046:2;5037:6;5033:2;5029:15;5025:24;5022:37;5019:57;;;5072:1;5069;5062:12;5019:57;4301:836;;5103:2;5095:11;;;;;-1:-1:-1;5125:6:150;;-1:-1:-1;;;4301:836:150:o;5142:127::-;5203:10;5198:3;5194:20;5191:1;5184:31;5234:4;5231:1;5224:15;5258:4;5255:1;5248:15;5274:137;5352:1;5345:5;5342:12;5332:46;;5358:18;;:::i;:::-;5387;;5274:137::o;5416:344::-;5602:2;5587:18;;5614:41;5591:9;5637:6;5614:41;:::i;:::-;5685:1;5677:6;5674:13;5664:47;;5691:18;;:::i;:::-;5747:6;5742:2;5731:9;5727:18;5720:34;5416:344;;;;;:::o;5957:180::-;6016:6;6069:2;6057:9;6048:7;6044:23;6040:32;6037:52;;;6085:1;6082;6075:12;6037:52;-1:-1:-1;6108:23:150;;5957:180;-1:-1:-1;5957:180:150:o;6142:202::-;6285:2;6270:18;;6297:41;6274:9;6320:6;6297:41;:::i;6531:127::-;6592:10;6587:3;6583:20;6580:1;6573:31;6623:4;6620:1;6613:15;6647:4;6644:1;6637:15;6663:250;6730:2;6724:9;6772:6;6760:19;;-1:-1:-1;;;;;6794:34:150;;6830:22;;;6791:62;6788:88;;;6856:18;;:::i;:::-;6892:2;6885:22;6663:250;:::o;6918:745::-;6960:5;7013:3;7006:4;6998:6;6994:17;6990:27;6980:55;;7031:1;7028;7021:12;6980:55;7071:6;7058:20;-1:-1:-1;;;;;7093:6:150;7090:30;7087:56;;;7123:18;;:::i;:::-;7192:2;7186:9;7284:2;7246:17;;-1:-1:-1;;7242:31:150;;;7275:2;7238:40;7234:54;7222:67;;-1:-1:-1;;;;;7304:34:150;;7340:22;;;7301:62;7298:88;;;7366:18;;:::i;:::-;7402:2;7395:22;7426;;;7467:19;;;7488:4;7463:30;7460:39;-1:-1:-1;7457:59:150;;;7512:1;7509;7502:12;7457:59;7576:6;7569:4;7561:6;7557:17;7550:4;7542:6;7538:17;7525:58;7631:1;7603:19;;;7624:4;7599:30;7592:41;;;;7607:6;6918:745;-1:-1:-1;;;6918:745:150:o;7668:455::-;7745:6;7753;7806:2;7794:9;7785:7;7781:23;7777:32;7774:52;;;7822:1;7819;7812:12;7774:52;7861:9;7848:23;7880:31;7905:5;7880:31;:::i;:::-;7930:5;-1:-1:-1;7986:2:150;7971:18;;7958:32;-1:-1:-1;;;;;8002:30:150;;7999:50;;;8045:1;8042;8035:12;7999:50;8068:49;8109:7;8100:6;8089:9;8085:22;8068:49;:::i;:::-;8058:59;;;7668:455;;;;;:::o;8969:171::-;9036:20;;-1:-1:-1;;;;;9085:30:150;;9075:41;;9065:69;;9130:1;9127;9120:12;9145:184;9203:6;9256:2;9244:9;9235:7;9231:23;9227:32;9224:52;;;9272:1;9269;9262:12;9224:52;9295:28;9313:9;9295:28;:::i;9623:163::-;9690:20;;9750:10;9739:22;;9729:33;;9719:61;;9776:1;9773;9766:12;9791:1106;9845:5;9893:6;9881:9;9876:3;9872:19;9868:32;9865:52;;;9913:1;9910;9903:12;9865:52;9935:17;;:::i;:::-;9926:26;;9975:28;9993:9;9975:28;:::i;:::-;9968:5;9961:43;10036:37;10069:2;10058:9;10054:18;10036:37;:::i;:::-;10031:2;10024:5;10020:14;10013:61;10106:37;10139:2;10128:9;10124:18;10106:37;:::i;:::-;10101:2;10094:5;10090:14;10083:61;10176:38;10210:2;10199:9;10195:18;10176:38;:::i;:::-;10171:2;10164:5;10160:14;10153:62;10248:38;10281:3;10270:9;10266:19;10248:38;:::i;:::-;10242:3;10235:5;10231:15;10224:63;10320:39;10354:3;10343:9;10339:19;10320:39;:::i;:::-;10314:3;10307:5;10303:15;10296:64;10393:38;10426:3;10415:9;10411:19;10393:38;:::i;:::-;10387:3;10380:5;10376:15;10369:63;10465:39;10499:3;10488:9;10484:19;10465:39;:::i;:::-;10459:3;10452:5;10448:15;10441:64;10538:39;10572:3;10561:9;10557:19;10538:39;:::i;:::-;10532:3;10521:15;;10514:64;10651:3;10636:19;;;10623:33;10672:15;;;10665:32;10748:3;10733:19;;10720:33;-1:-1:-1;;;;;10765:30:150;;10762:50;;;10808:1;10805;10798:12;10762:50;10845:45;10886:3;10877:6;10866:9;10862:22;10845:45;:::i;:::-;10839:3;10832:5;10828:15;10821:70;;9791:1106;;;;:::o;10902:345::-;10986:6;11039:2;11027:9;11018:7;11014:23;11010:32;11007:52;;;11055:1;11052;11045:12;11007:52;11095:9;11082:23;-1:-1:-1;;;;;11120:6:150;11117:30;11114:50;;;11160:1;11157;11150:12;11114:50;11183:58;11233:7;11224:6;11213:9;11209:22;11183:58;:::i;11873:193::-;11975:9;12012:48;12045:14;12038:5;12012:48;:::i;12071:184::-;12129:6;12182:2;12170:9;12161:7;12157:23;12153:32;12150:52;;;12198:1;12195;12188:12;12150:52;12221:28;12239:9;12221:28;:::i;12260:184::-;12330:6;12383:2;12371:9;12362:7;12358:23;12354:32;12351:52;;;12399:1;12396;12389:12;12351:52;-1:-1:-1;12422:16:150;;12260:184;-1:-1:-1;12260:184:150:o;12449:410::-;12651:2;12633:21;;;12690:2;12670:18;;;12663:30;12729:34;12724:2;12709:18;;12702:62;-1:-1:-1;;;12795:2:150;12780:18;;12773:44;12849:3;12834:19;;12449:410::o;13252:127::-;13313:10;13308:3;13304:20;13301:1;13294:31;13344:4;13341:1;13334:15;13368:4;13365:1;13358:15;13384:125;13449:9;;;13470:10;;;13467:36;;;13483:18;;:::i;13514:204::-;13552:3;-1:-1:-1;;;;;13589:5:150;13585:30;-1:-1:-1;;;;;13630:7:150;13627:31;13624:57;;13661:18;;:::i;:::-;13710:1;13697:15;;13514:204;-1:-1:-1;;13514:204:150:o;13723:258::-;13902:2;13891:9;13884:21;13865:4;13922:53;13971:2;13960:9;13956:18;13948:6;13922:53;:::i;13986:521::-;14063:4;14069:6;14129:11;14116:25;14223:2;14219:7;14208:8;14192:14;14188:29;14184:43;14164:18;14160:68;14150:96;;14242:1;14239;14232:12;14150:96;14269:33;;14321:20;;;-1:-1:-1;;;;;;14353:30:150;;14350:50;;;14396:1;14393;14386:12;14350:50;14429:4;14417:17;;-1:-1:-1;14460:14:150;14456:27;;;14446:38;;14443:58;;;14497:1;14494;14487:12;14443:58;13986:521;;;;;:::o;14512:127::-;14573:10;14568:3;14564:20;14561:1;14554:31;14604:4;14601:1;14594:15;14628:4;14625:1;14618:15;14644:500;14702:5;14709:6;14769:3;14756:17;14855:2;14851:7;14840:8;14824:14;14820:29;14816:43;14796:18;14792:68;14782:96;;14874:1;14871;14864:12;14782:96;14902:33;;15006:4;14993:18;;;-1:-1:-1;14954:21:150;;-1:-1:-1;;;;;;15023:30:150;;15020:50;;;15066:1;15063;15056:12;15020:50;15113:6;15097:14;15093:27;15086:5;15082:39;15079:59;;;15134:1;15131;15124:12;15149:266;15237:6;15232:3;15225:19;15289:6;15282:5;15275:4;15270:3;15266:14;15253:43;-1:-1:-1;15341:1:150;15316:16;;;15334:4;15312:27;;;15305:38;;;;15397:2;15376:15;;;-1:-1:-1;;15372:29:150;15363:39;;;15359:50;;15149:266::o;15420:1482::-;15497:48;15541:3;15515:24;15533:5;15515:24;:::i;:::-;-1:-1:-1;;;;;2058:30:150;2046:43;;1993:102;15497:48;15479:3;15574:35;15603:4;15596:5;15592:16;15574:35;:::i;:::-;-1:-1:-1;;;;;2058:30:150;15659:4;15650:14;;2046:43;15696:35;15725:4;15714:16;;15696:35;:::i;:::-;2176:10;2165:22;15783:4;15774:14;;2153:35;15820:36;15850:4;15839:16;;15820:36;:::i;:::-;-1:-1:-1;;;;;854:31:150;15909:4;15900:14;;842:44;15946:35;15975:4;15964:16;;15946:35;:::i;:::-;-1:-1:-1;;;;;2058:30:150;16033:4;16024:14;;2046:43;16070:36;16100:4;16089:16;;16070:36;:::i;:::-;-1:-1:-1;;;;;854:31:150;16159:4;16150:14;;842:44;16196:35;16225:4;16214:16;;16196:35;:::i;:::-;-1:-1:-1;;;;;2058:30:150;16283:4;16274:14;;2046:43;16320:36;16350:4;16339:16;;16320:36;:::i;:::-;-1:-1:-1;;;;;854:31:150;16409:4;16400:14;;842:44;16446:38;16476:6;16465:18;;16446:38;:::i;:::-;-1:-1:-1;;;;;854:31:150;16537:6;16528:16;;842:44;16614:6;16603:18;;;16590:32;16638:16;;;16631:33;16709:57;16758:6;16747:18;;16603;16709:57;:::i;:::-;16800:6;16791;16786:3;16782:16;16775:32;16823:73;16888:6;16883:3;16879:16;16865:12;16849:14;16823:73;:::i;16907:660::-;17182:3;17171:9;17164:22;17145:4;17203:63;17261:3;17250:9;17246:19;17238:6;17203:63;:::i;:::-;17195:71;;17321:10;17312:6;17306:13;17302:30;17297:2;17286:9;17282:18;17275:58;17397:10;17391:2;17383:6;17379:15;17373:22;17369:39;17364:2;17353:9;17349:18;17342:67;17473:10;17467:2;17459:6;17455:15;17449:22;17445:39;17440:2;17429:9;17425:18;17418:67;17554:2;17546:6;17542:15;17536:22;17529:30;17522:38;17516:3;17505:9;17501:19;17494:67;16907:660;;;;;:::o;17572:408::-;17774:2;17756:21;;;17813:2;17793:18;;;17786:30;17852:34;17847:2;17832:18;;17825:62;-1:-1:-1;;;17918:2:150;17903:18;;17896:42;17970:3;17955:19;;17572:408::o;17985:::-;18187:2;18169:21;;;18226:2;18206:18;;;18199:30;18265:34;18260:2;18245:18;;18238:62;-1:-1:-1;;;18331:2:150;18316:18;;18309:42;18383:3;18368:19;;17985:408::o;19102:245::-;19169:6;19222:2;19210:9;19201:7;19197:23;19193:32;19190:52;;;19238:1;19235;19228:12;19190:52;19270:9;19264:16;19289:28;19311:5;19289:28;:::i;19762:167::-;19857:10;19830:18;;;19850;;;19826:43;;19881:19;;19878:45;;;19903:18;;:::i;19934:340::-;20143:2;20132:9;20125:21;20106:4;20163:62;20221:2;20210:9;20206:18;20198:6;20163:62;:::i;:::-;20155:70;;20261:6;20256:2;20245:9;20241:18;20234:34;19934:340;;;;;:::o;20279:493::-;20559:2;20548:9;20541:21;20598:2;20593;20582:9;20578:18;20571:30;-1:-1:-1;;;20632:2:150;20621:9;20617:18;20610:43;20691:3;20684:4;20673:9;20669:20;20662:33;20522:4;20712:54;20761:3;20750:9;20746:19;20738:6;20712:54;:::i;20777:338::-;20897:19;;-1:-1:-1;;;;;;20934:29:150;;;20983:1;20975:10;;20972:137;;;-1:-1:-1;;;;;;21044:1:150;21040:11;;;21037:1;21033:19;21029:46;;;21021:55;;21017:82;;-1:-1:-1;20972:137:150;;20777:338;;;;:::o;21120:127::-;21181:10;21176:3;21172:20;21169:1;21162:31;21212:4;21209:1;21202:15;21236:4;21233:1;21226:15;21613:407;21815:2;21797:21;;;21854:2;21834:18;;;21827:30;21893:34;21888:2;21873:18;;21866:62;-1:-1:-1;;;21959:2:150;21944:18;;21937:41;22010:3;21995:19;;21613:407::o;22025:508::-;-1:-1:-1;;;;;22268:6:150;22264:31;22253:9;22246:50;22361:1;22357;22352:3;22348:11;22344:19;22336:6;22332:32;22327:2;22316:9;22312:18;22305:60;22401:6;22396:2;22385:9;22381:18;22374:34;22444:3;22439:2;22428:9;22424:18;22417:31;22227:4;22465:62;22522:3;22511:9;22507:19;22499:6;22491;22465:62;:::i;:::-;22457:70;22025:508;-1:-1:-1;;;;;;;22025:508:150:o;23910:251::-;23980:6;24033:2;24021:9;24012:7;24008:23;24004:32;24001:52;;;24049:1;24046;24039:12;24001:52;24081:9;24075:16;24100:31;24125:5;24100:31;:::i;24373:287::-;24502:3;24540:6;24534:13;24556:66;24615:6;24610:3;24603:4;24595:6;24591:17;24556:66;:::i;:::-;24638:16;;;;;24373:287;-1:-1:-1;;24373:287:150:o;24665:217::-;24705:1;24731;24721:132;;24775:10;24770:3;24766:20;24763:1;24756:31;24810:4;24807:1;24800:15;24838:4;24835:1;24828:15;24721:132;-1:-1:-1;24867:9:150;;24665:217::o;25659:219::-;25808:2;25797:9;25790:21;25771:4;25828:44;25868:2;25857:9;25853:18;25845:6;25828:44;:::i","linkReferences":{},"immutableReferences":{"20913":[{"start":4585,"length":32},{"start":4649,"length":32},{"start":4875,"length":32},{"start":4939,"length":32},{"start":5058,"length":32}],"2530":[{"start":1081,"length":32},{"start":1841,"length":32},{"start":2137,"length":32},{"start":3332,"length":32},{"start":3850,"length":32},{"start":3923,"length":32},{"start":5268,"length":32},{"start":5396,"length":32},{"start":6071,"length":32},{"start":6331,"length":32},{"start":6478,"length":32},{"start":6843,"length":32}],"4312":[{"start":559,"length":32},{"start":9517,"length":32}]}},"methodIdentifiers":{"GAS_OVERHEAD()":"a730cdfb","GAS_RESERVE()":"be880c81","RELAYER_MAX_PROOF_BYTES()":"422770fa","acceptOwnership()":"79ba5097","context()":"d0496d6a","failMessage((uint64,uint64,uint32,address,uint64,address,uint64,address,address,uint256,bytes))":"913b16cb","getMessageMinGasLimit(uint256)":"7cbadfaa","hashMessage((uint64,uint64,uint32,address,uint64,address,uint64,address,address,uint256,bytes))":"c012fa77","impl()":"8abf6077","inNonReentrant()":"3075db56","init(address)":"19ab453c","init2()":"069489a2","isDestChainEnabled(uint64)":"8e3881a9","isMessageFailed((uint64,uint64,uint32,address,uint64,address,uint64,address,address,uint256,bytes),bytes)":"5862f6e1","isMessageReceived((uint64,uint64,uint32,address,uint64,address,uint64,address,address,uint256,bytes),bytes)":"b8acae0e","isMessageSent((uint64,uint64,uint32,address,uint64,address,uint64,address,address,uint256,bytes))":"60620c6b","messageStatus(bytes32)":"3c6cf473","nextMessageId()":"eefbf17e","owner()":"8da5cb5b","pause()":"8456cb59","paused()":"5c975abb","pendingOwner()":"e30c3978","processMessage((uint64,uint64,uint32,address,uint64,address,uint64,address,address,uint256,bytes),bytes)":"2035065e","proxiableUUID()":"52d1902d","recallMessage((uint64,uint64,uint32,address,uint64,address,uint64,address,address,uint256,bytes),bytes)":"9efc7a2e","renounceOwnership()":"715018a6","resolver()":"04f3bcec","retryMessage((uint64,uint64,uint32,address,uint64,address,uint64,address,address,uint256,bytes),bool)":"0432873c","sendMessage((uint64,uint64,uint32,address,uint64,address,uint64,address,address,uint256,bytes))":"1bdb0037","signalForFailedMessage(bytes32)":"d1aaa5df","signalService()":"62d09453","transferOwnership(address)":"f2fde38b","unpause()":"3f4ba83a","upgradeTo(address)":"3659cfe6","upgradeToAndCall(address,bytes)":"4f1ef286"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_resolver\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_signalService\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"ACCESS_DENIED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"B_INSUFFICIENT_GAS\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"B_INVALID_CHAINID\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"B_INVALID_CONTEXT\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"B_INVALID_FEE\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"B_INVALID_GAS_LIMIT\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"B_INVALID_STATUS\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"B_INVALID_VALUE\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"B_MESSAGE_NOT_SENT\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"B_PERMISSION_DENIED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"B_PROOF_TOO_LARGE\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"B_RETRY_FAILED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"B_SIGNAL_NOT_RECEIVED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ETH_TRANSFER_FAILED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FUNC_NOT_IMPLEMENTED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"INVALID_PAUSE_STATUS\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"REENTRANT_CALL\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"RESOLVER_NOT_FOUND\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZERO_ADDRESS\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZERO_VALUE\",\"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\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"msgHash\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"uint64\",\"name\":\"id\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"fee\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"gasLimit\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"srcChainId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"srcOwner\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"destChainId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"destOwner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"indexed\":false,\"internalType\":\"struct IBridge.Message\",\"name\":\"message\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"gasUsedInFeeCalc\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"proofSize\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"numCacheOps\",\"type\":\"uint32\"},{\"internalType\":\"bool\",\"name\":\"processedByRelayer\",\"type\":\"bool\"}],\"indexed\":false,\"internalType\":\"struct Bridge.ProcessingStats\",\"name\":\"stats\",\"type\":\"tuple\"}],\"name\":\"MessageProcessed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"msgHash\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"uint64\",\"name\":\"id\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"fee\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"gasLimit\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"srcChainId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"srcOwner\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"destChainId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"destOwner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"indexed\":false,\"internalType\":\"struct IBridge.Message\",\"name\":\"message\",\"type\":\"tuple\"}],\"name\":\"MessageSent\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"msgHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"enum IBridge.Status\",\"name\":\"status\",\"type\":\"uint8\"}],\"name\":\"MessageStatusChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferStarted\",\"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\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Paused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Unpaused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"GAS_OVERHEAD\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"GAS_RESERVE\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"RELAYER_MAX_PROOF_BYTES\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"acceptOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"context\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"msgHash\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"srcChainId\",\"type\":\"uint64\"}],\"internalType\":\"struct IBridge.Context\",\"name\":\"ctx_\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"id\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"fee\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"gasLimit\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"srcChainId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"srcOwner\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"destChainId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"destOwner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"internalType\":\"struct IBridge.Message\",\"name\":\"_message\",\"type\":\"tuple\"}],\"name\":\"failMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"dataLength\",\"type\":\"uint256\"}],\"name\":\"getMessageMinGasLimit\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"id\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"fee\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"gasLimit\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"srcChainId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"srcOwner\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"destChainId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"destOwner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"internalType\":\"struct IBridge.Message\",\"name\":\"_message\",\"type\":\"tuple\"}],\"name\":\"hashMessage\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"impl\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"inNonReentrant\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_owner\",\"type\":\"address\"}],\"name\":\"init\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"init2\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"_chainId\",\"type\":\"uint64\"}],\"name\":\"isDestChainEnabled\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"enabled_\",\"type\":\"bool\"},{\"internalType\":\"address\",\"name\":\"destBridge_\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"id\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"fee\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"gasLimit\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"srcChainId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"srcOwner\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"destChainId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"destOwner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"internalType\":\"struct IBridge.Message\",\"name\":\"_message\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"_proof\",\"type\":\"bytes\"}],\"name\":\"isMessageFailed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"id\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"fee\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"gasLimit\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"srcChainId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"srcOwner\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"destChainId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"destOwner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"internalType\":\"struct IBridge.Message\",\"name\":\"_message\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"_proof\",\"type\":\"bytes\"}],\"name\":\"isMessageReceived\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"id\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"fee\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"gasLimit\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"srcChainId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"srcOwner\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"destChainId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"destOwner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"internalType\":\"struct IBridge.Message\",\"name\":\"_message\",\"type\":\"tuple\"}],\"name\":\"isMessageSent\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"msgHash\",\"type\":\"bytes32\"}],\"name\":\"messageStatus\",\"outputs\":[{\"internalType\":\"enum IBridge.Status\",\"name\":\"status\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"nextMessageId\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"paused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pendingOwner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"id\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"fee\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"gasLimit\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"srcChainId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"srcOwner\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"destChainId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"destOwner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"internalType\":\"struct IBridge.Message\",\"name\":\"_message\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"_proof\",\"type\":\"bytes\"}],\"name\":\"processMessage\",\"outputs\":[{\"internalType\":\"enum IBridge.Status\",\"name\":\"status_\",\"type\":\"uint8\"},{\"internalType\":\"enum IBridge.StatusReason\",\"name\":\"reason_\",\"type\":\"uint8\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"proxiableUUID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"id\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"fee\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"gasLimit\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"srcChainId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"srcOwner\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"destChainId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"destOwner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"internalType\":\"struct IBridge.Message\",\"name\":\"_message\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"_proof\",\"type\":\"bytes\"}],\"name\":\"recallMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"resolver\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"id\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"fee\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"gasLimit\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"srcChainId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"srcOwner\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"destChainId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"destOwner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"internalType\":\"struct IBridge.Message\",\"name\":\"_message\",\"type\":\"tuple\"},{\"internalType\":\"bool\",\"name\":\"_isLastAttempt\",\"type\":\"bool\"}],\"name\":\"retryMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"id\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"fee\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"gasLimit\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"srcChainId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"srcOwner\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"destChainId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"destOwner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"internalType\":\"struct IBridge.Message\",\"name\":\"_message\",\"type\":\"tuple\"}],\"name\":\"sendMessage\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"msgHash_\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"uint64\",\"name\":\"id\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"fee\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"gasLimit\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"srcChainId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"srcOwner\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"destChainId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"destOwner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"internalType\":\"struct IBridge.Message\",\"name\":\"message_\",\"type\":\"tuple\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_msgHash\",\"type\":\"bytes32\"}],\"name\":\"signalForFailedMessage\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"signalService\",\"outputs\":[{\"internalType\":\"contract ISignalService\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"unpause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"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\"}],\"devdoc\":{\"custom:security-contact\":\"security@taiko.xyz\",\"details\":\"Labeled in address resolver as \\\"bridge\\\". Additionally, the code hash for the same address on L1 and L2 may be different.\",\"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.\"},\"MessageProcessed(bytes32,(uint64,uint64,uint32,address,uint64,address,uint64,address,address,uint256,bytes),(uint32,uint32,uint32,bool))\":{\"details\":\"A debug event for fine-tuning gas related constants in the future.\"},\"MessageSent(bytes32,(uint64,uint64,uint32,address,uint64,address,uint64,address,address,uint256,bytes))\":{\"params\":{\"message\":\"The message.\",\"msgHash\":\"The hash of the message.\"}},\"MessageStatusChanged(bytes32,uint8)\":{\"params\":{\"msgHash\":\"The hash of the message.\",\"status\":\"The new status of the message.\"}},\"Paused(address)\":{\"params\":{\"account\":\"The account that paused the contract.\"}},\"Unpaused(address)\":{\"params\":{\"account\":\"The account that unpaused the contract.\"}},\"Upgraded(address)\":{\"details\":\"Emitted when the implementation is upgraded.\"}},\"kind\":\"dev\",\"methods\":{\"acceptOwnership()\":{\"details\":\"The new owner accepts the ownership transfer.\"},\"context()\":{\"returns\":{\"ctx_\":\"The context of the current bridge operation.\"}},\"failMessage((uint64,uint64,uint32,address,uint64,address,uint64,address,address,uint256,bytes))\":{\"details\":\"This function can only be called by `message.destOwner`.\",\"params\":{\"_message\":\"The message to fail. message.\"}},\"getMessageMinGasLimit(uint256)\":{\"params\":{\"dataLength\":\"The length of message.data.\"},\"returns\":{\"_0\":\"The minimal gas limit required for sending this message.\"}},\"hashMessage((uint64,uint64,uint32,address,uint64,address,uint64,address,address,uint256,bytes))\":{\"params\":{\"_message\":\"The message struct variable to be hashed.\"},\"returns\":{\"_0\":\"The message's hash.\"}},\"init(address)\":{\"params\":{\"_owner\":\"The owner of this contract. msg.sender will be used if this value is zero.\"}},\"isDestChainEnabled(uint64)\":{\"params\":{\"_chainId\":\"The destination chain ID.\"},\"returns\":{\"destBridge_\":\"The bridge of the destination chain.\",\"enabled_\":\"True if the destination chain is enabled.\"}},\"isMessageFailed((uint64,uint64,uint32,address,uint64,address,uint64,address,address,uint256,bytes),bytes)\":{\"params\":{\"_message\":\"The message.\",\"_proof\":\"The merkle inclusion proof.\"},\"returns\":{\"_0\":\"true if the message has failed, false otherwise.\"}},\"isMessageReceived((uint64,uint64,uint32,address,uint64,address,uint64,address,address,uint256,bytes),bytes)\":{\"params\":{\"_message\":\"The message.\",\"_proof\":\"The merkle inclusion proof.\"},\"returns\":{\"_0\":\"true if the message has been received, false otherwise.\"}},\"isMessageSent((uint64,uint64,uint32,address,uint64,address,uint64,address,address,uint256,bytes))\":{\"params\":{\"_message\":\"The message.\"},\"returns\":{\"_0\":\"true if the message was sent.\"}},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"paused()\":{\"returns\":{\"_0\":\"true if paused, false otherwise.\"}},\"pendingOwner()\":{\"details\":\"Returns the address of the pending owner.\"},\"processMessage((uint64,uint64,uint32,address,uint64,address,uint64,address,address,uint256,bytes),bytes)\":{\"details\":\"To ensure successful execution, we recommend this transaction's gas limit not to be smaller than: `(message.gasLimit - GAS_RESERVE) * 64 / 63 + GAS_RESERVE`, Or we can use a simplified rule: `tx.gaslimit = message.gaslimit * 102%`.\",\"params\":{\"_message\":\"The message to be processed.\",\"_proof\":\"The merkle inclusion proof.\"},\"returns\":{\"status_\":\"The message's status after processing and the reason for the change.\"}},\"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.\"},\"recallMessage((uint64,uint64,uint32,address,uint64,address,uint64,address,address,uint256,bytes),bytes)\":{\"details\":\"Verifies via proof that the message was marked FAILED on the destination chain's Bridge, then releases the associated Ether or tokens on the source chain.\",\"params\":{\"_message\":\"The message whose associated Ether should be released.\",\"_proof\":\"The merkle inclusion proof.\"}},\"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.\"},\"resolver()\":{\"returns\":{\"_0\":\"The address of this contract.\"}},\"retryMessage((uint64,uint64,uint32,address,uint64,address,uint64,address,address,uint256,bytes),bool)\":{\"details\":\"This function can be called by any address, including the `message.destOwner`. It attempts to invoke the messageCall and updates the message status accordingly.\",\"params\":{\"_isLastAttempt\":\"Specifies if this is the last attempt to retry the message.\",\"_message\":\"The message to retry.\"}},\"sendMessage((uint64,uint64,uint32,address,uint64,address,uint64,address,address,uint256,bytes))\":{\"params\":{\"_message\":\"The message to be sent.\"},\"returns\":{\"message_\":\"The updated message sent.\",\"msgHash_\":\"The hash of the sent message.\"}},\"signalForFailedMessage(bytes32)\":{\"params\":{\"_msgHash\":\"The message hash.\"},\"returns\":{\"_0\":\"The failed representation of it as bytes32.\"}},\"transferOwnership(address)\":{\"details\":\"Starts the ownership transfer of the contract to a new account. Replaces the pending transfer if there is one. Can only be called by the current owner.\"},\"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.\"}},\"stateVariables\":{\"GAS_OVERHEAD\":{\"details\":\"The gas overhead for both receiving and invoking a message, as well as the proof calldata cost. This value should be fine-tuned with production data.\"},\"GAS_RESERVE\":{\"details\":\"The amount of gas that will be deducted from message.gasLimit before calculating the invocation gas limit. This value should be fine-tuned with production data.\"},\"RELAYER_MAX_PROOF_BYTES\":{\"details\":\"The max proof size for a message to be processable by a relayer.\"},\"_GAS_REFUND_PER_CACHE_OPERATION\":{\"details\":\"The amount of gas not to charge fee per cache operation.\"},\"_PLACEHOLDER\":{\"details\":\"Place holder value when not using transient storage\"},\"_SEND_ETHER_GAS_LIMIT\":{\"details\":\"Gas limit for sending Ether.\"},\"__ctx\":{\"details\":\"Slots 3 and 4\"},\"__reserved1\":{\"details\":\"Slot 1.\"},\"__reserved2\":{\"details\":\"Slot 5.\"},\"__reserved3\":{\"details\":\"Slot 6.\"},\"messageStatus\":{\"details\":\"Slot 2.\"},\"nextMessageId\":{\"return\":\"A unique id\",\"returns\":{\"_0\":\"A unique id\"}}},\"title\":\"Bridge\",\"version\":1},\"userdoc\":{\"events\":{\"MessageSent(bytes32,(uint64,uint64,uint32,address,uint64,address,uint64,address,address,uint256,bytes))\":{\"notice\":\"Emitted when a message is sent.\"},\"MessageStatusChanged(bytes32,uint8)\":{\"notice\":\"Emitted when the status of a message changes.\"},\"Paused(address)\":{\"notice\":\"Emitted when the contract is paused.\"},\"Unpaused(address)\":{\"notice\":\"Emitted when the contract is unpaused.\"}},\"kind\":\"user\",\"methods\":{\"context()\":{\"notice\":\"Gets the current context.\"},\"failMessage((uint64,uint64,uint32,address,uint64,address,uint64,address,address,uint256,bytes))\":{\"notice\":\"Mark a message as failed if the message is currently retriable.\"},\"getMessageMinGasLimit(uint256)\":{\"notice\":\"Returns the minimal gas limit required for sending a given message.\"},\"hashMessage((uint64,uint64,uint32,address,uint64,address,uint64,address,address,uint256,bytes))\":{\"notice\":\"Hash the message\"},\"init(address)\":{\"notice\":\"Initializes the contract.\"},\"init2()\":{\"notice\":\"This function shall be called by previously deployed contracts.\"},\"isDestChainEnabled(uint64)\":{\"notice\":\"Checks if the destination chain is enabled.\"},\"isMessageFailed((uint64,uint64,uint32,address,uint64,address,uint64,address,address,uint256,bytes),bytes)\":{\"notice\":\"Checks if a msgHash has failed on its destination chain. This is the 'readonly' version of proveMessageFailed.\"},\"isMessageReceived((uint64,uint64,uint32,address,uint64,address,uint64,address,address,uint256,bytes),bytes)\":{\"notice\":\"Checks if a msgHash has been received on its source chain. This is the 'readonly' version of proveMessageReceived.\"},\"isMessageSent((uint64,uint64,uint32,address,uint64,address,uint64,address,address,uint256,bytes))\":{\"notice\":\"Checks if the message was sent.\"},\"messageStatus(bytes32)\":{\"notice\":\"Mapping to store the status of a message from its hash.\"},\"nextMessageId()\":{\"notice\":\"Returns the unique id of the next bridge message\"},\"pause()\":{\"notice\":\"Pauses the contract.\"},\"paused()\":{\"notice\":\"Returns true if the contract is paused, and false otherwise.\"},\"processMessage((uint64,uint64,uint32,address,uint64,address,uint64,address,address,uint256,bytes),bytes)\":{\"notice\":\"Processes a bridge message on the destination chain. This function is callable by any address, including the `message.destOwner`.\"},\"recallMessage((uint64,uint64,uint32,address,uint64,address,uint64,address,address,uint256,bytes),bytes)\":{\"notice\":\"Recalls a message on its source chain after it has failed on the destination chain, releasing associated assets on the source chain.\"},\"resolver()\":{\"notice\":\"Returns the address of this contract.\"},\"retryMessage((uint64,uint64,uint32,address,uint64,address,uint64,address,address,uint256,bytes),bool)\":{\"notice\":\"Retries to invoke the messageCall after releasing associated Ether and tokens.\"},\"sendMessage((uint64,uint64,uint32,address,uint64,address,uint64,address,address,uint256,bytes))\":{\"notice\":\"Sends a message to the destination chain and takes custody of Ether required in this contract.\"},\"signalForFailedMessage(bytes32)\":{\"notice\":\"Returns a signal representing a failed/recalled message.\"},\"unpause()\":{\"notice\":\"Unpauses the contract.\"}},\"notice\":\"See the documentation for {IBridge}.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/shared/bridge/Bridge.sol\":\"Bridge\"},\"evmVersion\":\"shanghai\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@eth-fabric/urc/=node_modules/urc/src/\",\":@openzeppelin-upgrades/contracts/=node_modules/@openzeppelin/contracts-upgradeable/\",\":@openzeppelin/=node_modules/@openzeppelin/\",\":@optimism/=node_modules/optimism/\",\":@p256-verifier/contracts/=node_modules/p256-verifier/src/\",\":@risc0/contracts/=node_modules/risc0-ethereum/contracts/src/\",\":@solady/=node_modules/solady/\",\":@sp1-contracts/=node_modules/sp1-contracts/contracts/\",\":ds-test/=node_modules/ds-test/\",\":forge-std/=node_modules/forge-std/\",\":openzeppelin/=node_modules/@openzeppelin/\",\":optimism/=node_modules/optimism/\",\":p256-verifier/=node_modules/p256-verifier/\",\":risc0-ethereum/=node_modules/risc0-ethereum/\",\":script/=script/\",\":solady/src/=node_modules/solady/src/\",\":solady/utils/=node_modules/solady/src/utils/\",\":sp1-contracts/=node_modules/sp1-contracts/\",\":src/=contracts/\",\":test/=test/\",\":urc/=node_modules/urc/\"]},\"sources\":{\"contracts/shared/bridge/Bridge.sol\":{\"keccak256\":\"0x58d4c542b77fe23d3078c3b9de781db54f1f318ed817d18af39cf915c3100c1e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7482d1d403d37f1a925b5ae979cdb7fba1463b87cfa882cafa54454f9868283d\",\"dweb:/ipfs/QmdhKFvapFkQD11AanqR1v28CRC8ZrMRu4dnVw8QoqGqNR\"]},\"contracts/shared/bridge/IBridge.sol\":{\"keccak256\":\"0x6b200a3471c7d1e2150c7a2f07f9fc4e619b93c72e61a937ecaf2f659f17a6e1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://51633f9d1c2799a6943d94324c7a4630adfbf46aad0639670870835a08ea563e\",\"dweb:/ipfs/Qmbt7P6LSkvgKomUkD5E85128t35kc6QUPXCWSEGrG5n9W\"]},\"contracts/shared/common/EssentialContract.sol\":{\"keccak256\":\"0x23f5e92e919911e82b308b25cf5c06050fd7c7799d44156d8492c2879a12c0a6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://800f8bc7c8a362c8c684906e20c060d893cd4e8badf74cf12026e0cc159c846f\",\"dweb:/ipfs/QmPbre9Skvfz5K7TWVHYTGGnec99VMnY9EUFbB6VqMsd9C\"]},\"contracts/shared/common/EssentialResolverContract.sol\":{\"keccak256\":\"0x5736a30fa45c48e3ff6d53170d980942ad42b788de81f5542a66397fb572b457\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://06d2dcf4d83335d05a12272507991ca23d23ed5a893fd2f97e75324135858ed2\",\"dweb:/ipfs/QmfWRCDnq6TXg8uwv2odpeLFguRSeLKuhL3VPMmGyyh9Eh\"]},\"contracts/shared/common/IResolver.sol\":{\"keccak256\":\"0x01273635aa0be2ad8d6218ad520f824f2003eab82be1d14c46da58f2516a48dd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://122dd3456077cf0be42bb974954c9918dca296415b076faeba0336ecee33de8e\",\"dweb:/ipfs/QmSr4WQEFDJwqyqpextmY8Fp3b7Z96SBHgAEKsvXe6dEZV\"]},\"contracts/shared/libs/LibAddress.sol\":{\"keccak256\":\"0x06e39ae119af22feb19ebf8cbd9ee8514118b84388ef93c4650779fd10da8538\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e0284aa60ade3d0f87134e6f39c181cca41c345af766b2f8f72c6de50ccf9841\",\"dweb:/ipfs/QmYNcjXmgVVPForNL34yrcZ97H2hKef4jL1DaQy6oNFhmY\"]},\"contracts/shared/libs/LibMath.sol\":{\"keccak256\":\"0x3e2ce1ccb5a4d94c6f97e09ebdb1e731c0bae466981be52147f15063b3742d69\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3530b4db00c1f357562d2dbab8978613c09b30ce1a6312de864399c7af82f9c7\",\"dweb:/ipfs/Qmbp9HeWwPAx5Krcjuu8UCJB3so6rZu4TUTPD6vRKDDBjg\"]},\"contracts/shared/libs/LibNames.sol\":{\"keccak256\":\"0x1227d014ad714497f4779b334da558a7da409860a6139b8ba88e53044bf8fb17\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f743c99518df4f1b1a8cdcbcdcc9a60357b81684e40f68573d4b9eef230d67ee\",\"dweb:/ipfs/QmapJMW5WhFjg8FK598gRitW3EwzkRn6TQ9fLuGjoMcaMP\"]},\"contracts/shared/libs/LibNetwork.sol\":{\"keccak256\":\"0xb5c6769cffcf864f725f8a76f98806f668f94a516125b854faa983b29d8f91ee\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://de4a9c2ae643272308f42ec150bae3b2a88145357e78eac074e8f68ff3d04595\",\"dweb:/ipfs/QmWNdKbTUvpR33nDunSjzKtR3ZQPPkFDD538fqhr9m6VY1\"]},\"contracts/shared/signal/ICheckpointStore.sol\":{\"keccak256\":\"0x82d7e6a1a6297ee7126ab7a83039900e453f76c9a0dff367be5699c742312067\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1db8501e9b6cadfdefd1ca1bb0cc9d241c9643abab73ec68d12e17aa8e543679\",\"dweb:/ipfs/QmVMFkLduiSeYoZ3NynDNoAcxZi53Lt6Gct7TtXXTyY4LE\"]},\"contracts/shared/signal/ISignalService.sol\":{\"keccak256\":\"0xda39e5766d2a3cc48e19aa0bd8c1235dd7e44bf6df18f0025999e08e25ad0639\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://71d6bb884be8db07e4b89f792aa8e3ad69c1045912be23cfb114935572fe6274\",\"dweb:/ipfs/QmZBuTtCSs4HtKVWo1zsKdU2WndsVDKX8H9VBwyCYbCGeN\"]},\"node_modules/@openzeppelin/contracts-upgradeable/access/Ownable2StepUpgradeable.sol\":{\"keccak256\":\"0x9140dabc466abab21b48b72dbda26736b1183a310d0e677d3719d201df026510\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://75267b14b60dc216d01d596a4008189a6c44d3314e53eded0edb1e757d95be16\",\"dweb:/ipfs/QmQoMaxTRT6V7uQj9USfdQH9jh1crywB9auVjThzUSAbG2\"]},\"node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol\":{\"keccak256\":\"0x359a1ab89b46b9aba7bcad3fb651924baf4893d15153049b9976b0fc9be1358e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e89863421b4014b96a4b62be76eb3b9f0a8afe9684664a6f389124c0964bfe5c\",\"dweb:/ipfs/Qmbk7xr1irpDuU1WdxXgxELBXxs61rHhCgod7heVcvFx16\"]},\"node_modules/@openzeppelin/contracts-upgradeable/governance/utils/IVotesUpgradeable.sol\":{\"keccak256\":\"0x2d600bbef9320309cd2a86c1d087eb9d6dbcc00430713ee54bbc5c5a2a11ba31\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://52a5380b861d676adef15f33f8f643e236a1acb2d9456beb4065307eaa22bc2a\",\"dweb:/ipfs/QmdwSfxrafQubVvCoQCU5T7bbPR8JDWU1WotSDXSiUdm33\"]},\"node_modules/@openzeppelin/contracts-upgradeable/interfaces/IERC5267Upgradeable.sol\":{\"keccak256\":\"0xe562dab443278837fa50faddb76743399e942181881db8dccaea3bd1712994db\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://79ebe0e661396045cefe94f4256398cf632756d779a6871319db374c9eb128c9\",\"dweb:/ipfs/QmfCTCivb9fFhyCX8hzushzcKunvKL2N9RDsnRNdvbd11M\"]},\"node_modules/@openzeppelin/contracts-upgradeable/interfaces/IERC5805Upgradeable.sol\":{\"keccak256\":\"0x19848eec9045c8b91f1ab6b1853966443e3e36bcbc307593ed37a9f0df179d69\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a07972c1330ee99a5d051b393260e01412ac4c14c7bc4d75d80b7cce291a6412\",\"dweb:/ipfs/QmQx1ZiAo4AbSobN41c1xUEtyX1QejydWCmY7Sj3H5aDNv\"]},\"node_modules/@openzeppelin/contracts-upgradeable/interfaces/IERC6372Upgradeable.sol\":{\"keccak256\":\"0x3026befd6d69d1b46960bdc35a2ad37c0e1352f26983ee3728dd61fd32aa308a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c2001b7209fd4920ec7674f194db7fe163dfea7a7af2dd25fe6c0e5a94dc595c\",\"dweb:/ipfs/QmXX2zTFyiNWoDxivV3trKcKWifAENMqNAB34NgjWq5feX\"]},\"node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x89be10e757d242e9b18d5a32c9fbe2019f6d63052bbe46397a430a1d60d7f794\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f103ee2e4aecd37aac6ceefe670709cdd7613dee25fa2d4d9feaf7fc0aaa155e\",\"dweb:/ipfs/QmRiNZLoJk5k3HPMYGPGjZFd2ke1ZxjhJZkM45Ec9GH9hv\"]},\"node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol\":{\"keccak256\":\"0xa9311aeb22f459e57d4dac77ee76cf43fb28ad3215278456211b5852b0e9e970\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ebdf0d3e42bd25223e45a213311d6d7e177d56a2c541a78b58c0c9d10bbdfbf9\",\"dweb:/ipfs/QmfMyehJ6pxHrh7yL4793J6i7dofXnS2zH3cTtC8JdQMV9\"]},\"node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol\":{\"keccak256\":\"0x0e1f0f5f62f67a881cd1a9597acbc0a5e4071f3c2c10449a183b922ae7272e3f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c25f742ff154998d19a669e2508c3597b363e123ce9144cd0fcf6521229f401f\",\"dweb:/ipfs/QmQXRuFzStEWqeEPbhQU6cAg9PaSowxJVo4PDKyRod7dco\"]},\"node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/extensions/ERC20PermitUpgradeable.sol\":{\"keccak256\":\"0x3d159b9049d4ef465c1fb41f7ff7620f18f52bf6f8f3018bae4ed95c2df537d3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://38f7cfa624d878eec3c97e30dac64c6c00a79c65aa2799cebbf683e74488cd27\",\"dweb:/ipfs/QmdtMH3xSGXNqvBcndsxWCUfmjta6kebnUYwKasJZucTfP\"]},\"node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/extensions/ERC20VotesUpgradeable.sol\":{\"keccak256\":\"0x82d5c2e8d5c7209f5cd2e7a40807ba264cb8bc577db1b121eda5f14f62d609c2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://024b99222ec16e75ff1b719c8f0dacf2d8e26250b3c076bd184ac1dadae47492\",\"dweb:/ipfs/QmP11f3Dumw3CYg4ZtBLJrh8juULgodSuQfCqqgX5DqpJE\"]},\"node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/extensions/IERC20MetadataUpgradeable.sol\":{\"keccak256\":\"0x605434219ebbe4653f703640f06969faa5a1d78f0bfef878e5ddbb1ca369ceeb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4c9c634f99dd02d73ce7498b03a6305e251c05eeebb71457306561c1fab0fa7d\",\"dweb:/ipfs/QmbYRBbZHy8YoaQKXdPryiL3CSS7uUaRfRYi1TUj9cTqJQ\"]},\"node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/extensions/IERC20PermitUpgradeable.sol\":{\"keccak256\":\"0x07e881de3b9f6d2c07909f193f24b96c7fe4ea60013260f3f25aecd8bab3c2f8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1fed09b97ccb0ff9ba9b6a94224f1d489026bf6b4b7279bfe64fb6e8749dee4d\",\"dweb:/ipfs/QmcRAzaSP1UnGr4vrGkfJmB2L9aiTYoXfV1Lg9gqrVRWn8\"]},\"node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol\":{\"keccak256\":\"0x9c80f545915582e63fe206c6ce27cbe85a86fc10b9cd2a0e8c9488fb7c2ee422\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://310136ad60820af4177a11a61d77a3686faf5fca4942b600e08fc940db38396b\",\"dweb:/ipfs/QmbCzMNSTL7Zi7M4UCSqBrkHtp4jjxUnGbkneCZKdR1qeq\"]},\"node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0x75097e35253e7fb282ee4d7f27a80eaacfa759923185bf17302a89cbc059c5ef\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8b06267c5f80bad727af3e48b1382333d591dad51376399ef2f6b0ee6d58bf95\",\"dweb:/ipfs/QmdU5La1agcQvghnfMpWZGDPz2TUDTCxUwTLKmuMRXBpAx\"]},\"node_modules/@openzeppelin/contracts-upgradeable/utils/CountersUpgradeable.sol\":{\"keccak256\":\"0x798741e231b22b81e2dd2eddaaf8832dee4baf5cd8e2dbaa5c1dd12a1c053c4d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c41e8a7a906b8f362c8b760a44edadc61782008ea2ecf377ac5b5325bf6c3912\",\"dweb:/ipfs/QmcXr19zuH3YLzD6RZNE6UTzvsKSckdxZQnagPoDGkCHu2\"]},\"node_modules/@openzeppelin/contracts-upgradeable/utils/StringsUpgradeable.sol\":{\"keccak256\":\"0xb96dc79b65b7c37937919dcdb356a969ce0aa2e8338322bf4dc027a3c9c9a7eb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f8613145881436fc0480fff22da4868d611e2b0c0c3da083334eb4362ce1945a\",\"dweb:/ipfs/QmPqpP3YeRbBdTJRe6Gv2eGsUaANf4J6RwTNRW36iYahfV\"]},\"node_modules/@openzeppelin/contracts-upgradeable/utils/cryptography/ECDSAUpgradeable.sol\":{\"keccak256\":\"0xa014f65d84b02827055d99993ccdbfb4b56b2c9e91eb278d82a93330659d06e4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://50a7e716a74f3d48a7f549086faa94afcd58b9f18ac8e9f74af4571f3a1d8d5c\",\"dweb:/ipfs/QmTkDNWkq5o9Cv2jS7s6JvSmsPBkeunZhPe7Z2njGL31wo\"]},\"node_modules/@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol\":{\"keccak256\":\"0x7077d7f3369b21f286840c0d69b09a8a6d3d6e522fff67bfc240fd0a6cdf178c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0f59e7a19530bd6ee236285f9a87c930d27b73464f6b7398e29a6f4cfc2670ac\",\"dweb:/ipfs/QmVfN4gHvJNac7KiuhLhtgtbdDo5a6Mw5hMcwJkzYugq5R\"]},\"node_modules/@openzeppelin/contracts-upgradeable/utils/math/MathUpgradeable.sol\":{\"keccak256\":\"0x2bc0007987c229ae7624eb29be6a9b84f6a6a5872f76248b15208b131ea41c4e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2b2835c737d073ef8b82a4cc246495a9740f43e7ff2cf130906b2449ff9bfb91\",\"dweb:/ipfs/QmSCWfNoSvvTN57ic7o1RW6NqSxxGAqbBTnLKc7QHe27qB\"]},\"node_modules/@openzeppelin/contracts-upgradeable/utils/math/SafeCastUpgradeable.sol\":{\"keccak256\":\"0xcef50f95b43b038aa40aed25b62fc45906c681a5c1d504a4fdcf3bc6330a8d4b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ef883699a00970d5469e502514e2854704cd53d7a49825078aa807a2f056315c\",\"dweb:/ipfs/QmRjpN9oxgw6zHCVjfWNB9MzaYpNPPgqu7Rrwqwabmhpis\"]},\"node_modules/@openzeppelin/contracts-upgradeable/utils/math/SignedMathUpgradeable.sol\":{\"keccak256\":\"0x88f6b7bba3ee33eeb741f9a0f5bc98b6e6e352d0fe4905377bb328590f84095a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://88ace2d60f265752f18903d839910be4e4e104340b2957678585b812447825d4\",\"dweb:/ipfs/QmXFkNxMc3AAGzhs2wUEZyErWQjsvoTGyYjuU5oZkFki5Z\"]},\"node_modules/@openzeppelin/contracts/interfaces/IERC1967.sol\":{\"keccak256\":\"0x3cbef5ebc24b415252e2f8c0c9254555d30d9f085603b4b80d9b5ed20ab87e90\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e8fa670c3bdce78e642cc6ae11c4cb38b133499cdce5e1990a9979d424703263\",\"dweb:/ipfs/QmVxeCUk4jL2pXQyhsoNJwyU874wRufS2WvGe8TgPKPqhE\"]},\"node_modules/@openzeppelin/contracts/interfaces/draft-IERC1822.sol\":{\"keccak256\":\"0x1d4afe6cb24200cc4545eed814ecf5847277dfe5d613a1707aad5fceecebcfff\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://383fb7b8181016ac5ccf07bc9cdb7c1b5045ea36e2cc4df52bcbf20396fc7688\",\"dweb:/ipfs/QmYJ7Cg4WmE3rR8KGQxjUCXFfTH6TcwZ2Z1f6tPrq7jHFr\"]},\"node_modules/@openzeppelin/contracts/proxy/ERC1967/ERC1967Upgrade.sol\":{\"keccak256\":\"0x3b21ae06bf5957f73fa16754b0669c77b7abd8ba6c072d35c3281d446fdb86c2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2db8e18505e86e02526847005d7287a33e397ed7fb9eaba3fd4a4a197add16e2\",\"dweb:/ipfs/QmW9BSuKTzHWHBNSHF4L8XfVuU1uJrP2vLg84YtBd8mL82\"]},\"node_modules/@openzeppelin/contracts/proxy/beacon/IBeacon.sol\":{\"keccak256\":\"0xd50a3421ac379ccb1be435fa646d66a65c986b4924f0849839f08692f39dde61\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ada1e030c0231db8d143b44ce92b4d1158eedb087880cad6d8cc7bd7ebe7b354\",\"dweb:/ipfs/QmWZ2NHZweRpz1U9GF6R1h65ri76dnX7fNxLBeM2t5N5Ce\"]},\"node_modules/@openzeppelin/contracts/proxy/utils/UUPSUpgradeable.sol\":{\"keccak256\":\"0xc6619957bcc6641fe8984bfaf9ff11a9e4b97d8149c0495f608f9a2416d7c5cf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://543be67f7fa43b1b932637c1c7f12035f0f4b0f7ee2bd3c33841186f79c165c1\",\"dweb:/ipfs/QmSBPM2UVKbmJqWfD9i6hSiqbaE8TV4TSqfuiivziRRLKM\"]},\"node_modules/@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0x006dd67219697fe68d7fbfdea512e7c4cb64a43565ed86171d67e844982da6fa\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2455248c8ddd9cc6a7af76a13973cddf222072427e7b0e2a7d1aff345145e931\",\"dweb:/ipfs/QmfYjnjRbWqYpuxurqveE6HtzsY1Xx323J428AKQgtBJZm\"]},\"node_modules/@openzeppelin/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0xf09e68aa0dc6722a25bc46490e8d48ed864466d17313b8a0b254c36b54e49899\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e26daf81e2252dc1fe1ce0e4b55c2eb7c6d1ee84ae6558d1a9554432ea1d32da\",\"dweb:/ipfs/Qmb1UANWiWq5pCKbmHSu772hd4nt374dVaghGmwSVNuk8Q\"]},\"node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f\",\"dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.30+commit.73712a01"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"_resolver","type":"address"},{"internalType":"address","name":"_signalService","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"type":"error","name":"ACCESS_DENIED"},{"inputs":[],"type":"error","name":"B_INSUFFICIENT_GAS"},{"inputs":[],"type":"error","name":"B_INVALID_CHAINID"},{"inputs":[],"type":"error","name":"B_INVALID_CONTEXT"},{"inputs":[],"type":"error","name":"B_INVALID_FEE"},{"inputs":[],"type":"error","name":"B_INVALID_GAS_LIMIT"},{"inputs":[],"type":"error","name":"B_INVALID_STATUS"},{"inputs":[],"type":"error","name":"B_INVALID_VALUE"},{"inputs":[],"type":"error","name":"B_MESSAGE_NOT_SENT"},{"inputs":[],"type":"error","name":"B_PERMISSION_DENIED"},{"inputs":[],"type":"error","name":"B_PROOF_TOO_LARGE"},{"inputs":[],"type":"error","name":"B_RETRY_FAILED"},{"inputs":[],"type":"error","name":"B_SIGNAL_NOT_RECEIVED"},{"inputs":[],"type":"error","name":"ETH_TRANSFER_FAILED"},{"inputs":[],"type":"error","name":"FUNC_NOT_IMPLEMENTED"},{"inputs":[],"type":"error","name":"INVALID_PAUSE_STATUS"},{"inputs":[],"type":"error","name":"REENTRANT_CALL"},{"inputs":[],"type":"error","name":"RESOLVER_NOT_FOUND"},{"inputs":[],"type":"error","name":"ZERO_ADDRESS"},{"inputs":[],"type":"error","name":"ZERO_VALUE"},{"inputs":[{"internalType":"address","name":"previousAdmin","type":"address","indexed":false},{"internalType":"address","name":"newAdmin","type":"address","indexed":false}],"type":"event","name":"AdminChanged","anonymous":false},{"inputs":[{"internalType":"address","name":"beacon","type":"address","indexed":true}],"type":"event","name":"BeaconUpgraded","anonymous":false},{"inputs":[{"internalType":"uint8","name":"version","type":"uint8","indexed":false}],"type":"event","name":"Initialized","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"msgHash","type":"bytes32","indexed":true},{"internalType":"struct IBridge.Message","name":"message","type":"tuple","components":[{"internalType":"uint64","name":"id","type":"uint64"},{"internalType":"uint64","name":"fee","type":"uint64"},{"internalType":"uint32","name":"gasLimit","type":"uint32"},{"internalType":"address","name":"from","type":"address"},{"internalType":"uint64","name":"srcChainId","type":"uint64"},{"internalType":"address","name":"srcOwner","type":"address"},{"internalType":"uint64","name":"destChainId","type":"uint64"},{"internalType":"address","name":"destOwner","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"indexed":false},{"internalType":"struct Bridge.ProcessingStats","name":"stats","type":"tuple","components":[{"internalType":"uint32","name":"gasUsedInFeeCalc","type":"uint32"},{"internalType":"uint32","name":"proofSize","type":"uint32"},{"internalType":"uint32","name":"numCacheOps","type":"uint32"},{"internalType":"bool","name":"processedByRelayer","type":"bool"}],"indexed":false}],"type":"event","name":"MessageProcessed","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"msgHash","type":"bytes32","indexed":true},{"internalType":"struct IBridge.Message","name":"message","type":"tuple","components":[{"internalType":"uint64","name":"id","type":"uint64"},{"internalType":"uint64","name":"fee","type":"uint64"},{"internalType":"uint32","name":"gasLimit","type":"uint32"},{"internalType":"address","name":"from","type":"address"},{"internalType":"uint64","name":"srcChainId","type":"uint64"},{"internalType":"address","name":"srcOwner","type":"address"},{"internalType":"uint64","name":"destChainId","type":"uint64"},{"internalType":"address","name":"destOwner","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"indexed":false}],"type":"event","name":"MessageSent","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"msgHash","type":"bytes32","indexed":true},{"internalType":"enum IBridge.Status","name":"status","type":"uint8","indexed":false}],"type":"event","name":"MessageStatusChanged","anonymous":false},{"inputs":[{"internalType":"address","name":"previousOwner","type":"address","indexed":true},{"internalType":"address","name":"newOwner","type":"address","indexed":true}],"type":"event","name":"OwnershipTransferStarted","anonymous":false},{"inputs":[{"internalType":"address","name":"previousOwner","type":"address","indexed":true},{"internalType":"address","name":"newOwner","type":"address","indexed":true}],"type":"event","name":"OwnershipTransferred","anonymous":false},{"inputs":[{"internalType":"address","name":"account","type":"address","indexed":false}],"type":"event","name":"Paused","anonymous":false},{"inputs":[{"internalType":"address","name":"account","type":"address","indexed":false}],"type":"event","name":"Unpaused","anonymous":false},{"inputs":[{"internalType":"address","name":"implementation","type":"address","indexed":true}],"type":"event","name":"Upgraded","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"GAS_OVERHEAD","outputs":[{"internalType":"uint32","name":"","type":"uint32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"GAS_RESERVE","outputs":[{"internalType":"uint32","name":"","type":"uint32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"RELAYER_MAX_PROOF_BYTES","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"acceptOwnership"},{"inputs":[],"stateMutability":"view","type":"function","name":"context","outputs":[{"internalType":"struct IBridge.Context","name":"ctx_","type":"tuple","components":[{"internalType":"bytes32","name":"msgHash","type":"bytes32"},{"internalType":"address","name":"from","type":"address"},{"internalType":"uint64","name":"srcChainId","type":"uint64"}]}]},{"inputs":[{"internalType":"struct IBridge.Message","name":"_message","type":"tuple","components":[{"internalType":"uint64","name":"id","type":"uint64"},{"internalType":"uint64","name":"fee","type":"uint64"},{"internalType":"uint32","name":"gasLimit","type":"uint32"},{"internalType":"address","name":"from","type":"address"},{"internalType":"uint64","name":"srcChainId","type":"uint64"},{"internalType":"address","name":"srcOwner","type":"address"},{"internalType":"uint64","name":"destChainId","type":"uint64"},{"internalType":"address","name":"destOwner","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}]}],"stateMutability":"nonpayable","type":"function","name":"failMessage"},{"inputs":[{"internalType":"uint256","name":"dataLength","type":"uint256"}],"stateMutability":"pure","type":"function","name":"getMessageMinGasLimit","outputs":[{"internalType":"uint32","name":"","type":"uint32"}]},{"inputs":[{"internalType":"struct IBridge.Message","name":"_message","type":"tuple","components":[{"internalType":"uint64","name":"id","type":"uint64"},{"internalType":"uint64","name":"fee","type":"uint64"},{"internalType":"uint32","name":"gasLimit","type":"uint32"},{"internalType":"address","name":"from","type":"address"},{"internalType":"uint64","name":"srcChainId","type":"uint64"},{"internalType":"address","name":"srcOwner","type":"address"},{"internalType":"uint64","name":"destChainId","type":"uint64"},{"internalType":"address","name":"destOwner","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}]}],"stateMutability":"pure","type":"function","name":"hashMessage","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"impl","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"inNonReentrant","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"_owner","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"init"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"init2"},{"inputs":[{"internalType":"uint64","name":"_chainId","type":"uint64"}],"stateMutability":"view","type":"function","name":"isDestChainEnabled","outputs":[{"internalType":"bool","name":"enabled_","type":"bool"},{"internalType":"address","name":"destBridge_","type":"address"}]},{"inputs":[{"internalType":"struct IBridge.Message","name":"_message","type":"tuple","components":[{"internalType":"uint64","name":"id","type":"uint64"},{"internalType":"uint64","name":"fee","type":"uint64"},{"internalType":"uint32","name":"gasLimit","type":"uint32"},{"internalType":"address","name":"from","type":"address"},{"internalType":"uint64","name":"srcChainId","type":"uint64"},{"internalType":"address","name":"srcOwner","type":"address"},{"internalType":"uint64","name":"destChainId","type":"uint64"},{"internalType":"address","name":"destOwner","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}]},{"internalType":"bytes","name":"_proof","type":"bytes"}],"stateMutability":"view","type":"function","name":"isMessageFailed","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"struct IBridge.Message","name":"_message","type":"tuple","components":[{"internalType":"uint64","name":"id","type":"uint64"},{"internalType":"uint64","name":"fee","type":"uint64"},{"internalType":"uint32","name":"gasLimit","type":"uint32"},{"internalType":"address","name":"from","type":"address"},{"internalType":"uint64","name":"srcChainId","type":"uint64"},{"internalType":"address","name":"srcOwner","type":"address"},{"internalType":"uint64","name":"destChainId","type":"uint64"},{"internalType":"address","name":"destOwner","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}]},{"internalType":"bytes","name":"_proof","type":"bytes"}],"stateMutability":"view","type":"function","name":"isMessageReceived","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"struct IBridge.Message","name":"_message","type":"tuple","components":[{"internalType":"uint64","name":"id","type":"uint64"},{"internalType":"uint64","name":"fee","type":"uint64"},{"internalType":"uint32","name":"gasLimit","type":"uint32"},{"internalType":"address","name":"from","type":"address"},{"internalType":"uint64","name":"srcChainId","type":"uint64"},{"internalType":"address","name":"srcOwner","type":"address"},{"internalType":"uint64","name":"destChainId","type":"uint64"},{"internalType":"address","name":"destOwner","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}]}],"stateMutability":"view","type":"function","name":"isMessageSent","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"bytes32","name":"msgHash","type":"bytes32"}],"stateMutability":"view","type":"function","name":"messageStatus","outputs":[{"internalType":"enum IBridge.Status","name":"status","type":"uint8"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"nextMessageId","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"pause"},{"inputs":[],"stateMutability":"view","type":"function","name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"pendingOwner","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"struct IBridge.Message","name":"_message","type":"tuple","components":[{"internalType":"uint64","name":"id","type":"uint64"},{"internalType":"uint64","name":"fee","type":"uint64"},{"internalType":"uint32","name":"gasLimit","type":"uint32"},{"internalType":"address","name":"from","type":"address"},{"internalType":"uint64","name":"srcChainId","type":"uint64"},{"internalType":"address","name":"srcOwner","type":"address"},{"internalType":"uint64","name":"destChainId","type":"uint64"},{"internalType":"address","name":"destOwner","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}]},{"internalType":"bytes","name":"_proof","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"processMessage","outputs":[{"internalType":"enum IBridge.Status","name":"status_","type":"uint8"},{"internalType":"enum IBridge.StatusReason","name":"reason_","type":"uint8"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"proxiableUUID","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"struct IBridge.Message","name":"_message","type":"tuple","components":[{"internalType":"uint64","name":"id","type":"uint64"},{"internalType":"uint64","name":"fee","type":"uint64"},{"internalType":"uint32","name":"gasLimit","type":"uint32"},{"internalType":"address","name":"from","type":"address"},{"internalType":"uint64","name":"srcChainId","type":"uint64"},{"internalType":"address","name":"srcOwner","type":"address"},{"internalType":"uint64","name":"destChainId","type":"uint64"},{"internalType":"address","name":"destOwner","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}]},{"internalType":"bytes","name":"_proof","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"recallMessage"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"renounceOwnership"},{"inputs":[],"stateMutability":"view","type":"function","name":"resolver","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"struct IBridge.Message","name":"_message","type":"tuple","components":[{"internalType":"uint64","name":"id","type":"uint64"},{"internalType":"uint64","name":"fee","type":"uint64"},{"internalType":"uint32","name":"gasLimit","type":"uint32"},{"internalType":"address","name":"from","type":"address"},{"internalType":"uint64","name":"srcChainId","type":"uint64"},{"internalType":"address","name":"srcOwner","type":"address"},{"internalType":"uint64","name":"destChainId","type":"uint64"},{"internalType":"address","name":"destOwner","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}]},{"internalType":"bool","name":"_isLastAttempt","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"retryMessage"},{"inputs":[{"internalType":"struct IBridge.Message","name":"_message","type":"tuple","components":[{"internalType":"uint64","name":"id","type":"uint64"},{"internalType":"uint64","name":"fee","type":"uint64"},{"internalType":"uint32","name":"gasLimit","type":"uint32"},{"internalType":"address","name":"from","type":"address"},{"internalType":"uint64","name":"srcChainId","type":"uint64"},{"internalType":"address","name":"srcOwner","type":"address"},{"internalType":"uint64","name":"destChainId","type":"uint64"},{"internalType":"address","name":"destOwner","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}]}],"stateMutability":"payable","type":"function","name":"sendMessage","outputs":[{"internalType":"bytes32","name":"msgHash_","type":"bytes32"},{"internalType":"struct IBridge.Message","name":"message_","type":"tuple","components":[{"internalType":"uint64","name":"id","type":"uint64"},{"internalType":"uint64","name":"fee","type":"uint64"},{"internalType":"uint32","name":"gasLimit","type":"uint32"},{"internalType":"address","name":"from","type":"address"},{"internalType":"uint64","name":"srcChainId","type":"uint64"},{"internalType":"address","name":"srcOwner","type":"address"},{"internalType":"uint64","name":"destChainId","type":"uint64"},{"internalType":"address","name":"destOwner","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}]}]},{"inputs":[{"internalType":"bytes32","name":"_msgHash","type":"bytes32"}],"stateMutability":"pure","type":"function","name":"signalForFailedMessage","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"signalService","outputs":[{"internalType":"contract ISignalService","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"transferOwnership"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"unpause"},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"upgradeTo"},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"payable","type":"function","name":"upgradeToAndCall"}],"devdoc":{"kind":"dev","methods":{"acceptOwnership()":{"details":"The new owner accepts the ownership transfer."},"context()":{"returns":{"ctx_":"The context of the current bridge operation."}},"failMessage((uint64,uint64,uint32,address,uint64,address,uint64,address,address,uint256,bytes))":{"details":"This function can only be called by `message.destOwner`.","params":{"_message":"The message to fail. message."}},"getMessageMinGasLimit(uint256)":{"params":{"dataLength":"The length of message.data."},"returns":{"_0":"The minimal gas limit required for sending this message."}},"hashMessage((uint64,uint64,uint32,address,uint64,address,uint64,address,address,uint256,bytes))":{"params":{"_message":"The message struct variable to be hashed."},"returns":{"_0":"The message's hash."}},"init(address)":{"params":{"_owner":"The owner of this contract. msg.sender will be used if this value is zero."}},"isDestChainEnabled(uint64)":{"params":{"_chainId":"The destination chain ID."},"returns":{"destBridge_":"The bridge of the destination chain.","enabled_":"True if the destination chain is enabled."}},"isMessageFailed((uint64,uint64,uint32,address,uint64,address,uint64,address,address,uint256,bytes),bytes)":{"params":{"_message":"The message.","_proof":"The merkle inclusion proof."},"returns":{"_0":"true if the message has failed, false otherwise."}},"isMessageReceived((uint64,uint64,uint32,address,uint64,address,uint64,address,address,uint256,bytes),bytes)":{"params":{"_message":"The message.","_proof":"The merkle inclusion proof."},"returns":{"_0":"true if the message has been received, false otherwise."}},"isMessageSent((uint64,uint64,uint32,address,uint64,address,uint64,address,address,uint256,bytes))":{"params":{"_message":"The message."},"returns":{"_0":"true if the message was sent."}},"owner()":{"details":"Returns the address of the current owner."},"paused()":{"returns":{"_0":"true if paused, false otherwise."}},"pendingOwner()":{"details":"Returns the address of the pending owner."},"processMessage((uint64,uint64,uint32,address,uint64,address,uint64,address,address,uint256,bytes),bytes)":{"details":"To ensure successful execution, we recommend this transaction's gas limit not to be smaller than: `(message.gasLimit - GAS_RESERVE) * 64 / 63 + GAS_RESERVE`, Or we can use a simplified rule: `tx.gaslimit = message.gaslimit * 102%`.","params":{"_message":"The message to be processed.","_proof":"The merkle inclusion proof."},"returns":{"status_":"The message's status after processing and the reason for the change."}},"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."},"recallMessage((uint64,uint64,uint32,address,uint64,address,uint64,address,address,uint256,bytes),bytes)":{"details":"Verifies via proof that the message was marked FAILED on the destination chain's Bridge, then releases the associated Ether or tokens on the source chain.","params":{"_message":"The message whose associated Ether should be released.","_proof":"The merkle inclusion proof."}},"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."},"resolver()":{"returns":{"_0":"The address of this contract."}},"retryMessage((uint64,uint64,uint32,address,uint64,address,uint64,address,address,uint256,bytes),bool)":{"details":"This function can be called by any address, including the `message.destOwner`. It attempts to invoke the messageCall and updates the message status accordingly.","params":{"_isLastAttempt":"Specifies if this is the last attempt to retry the message.","_message":"The message to retry."}},"sendMessage((uint64,uint64,uint32,address,uint64,address,uint64,address,address,uint256,bytes))":{"params":{"_message":"The message to be sent."},"returns":{"message_":"The updated message sent.","msgHash_":"The hash of the sent message."}},"signalForFailedMessage(bytes32)":{"params":{"_msgHash":"The message hash."},"returns":{"_0":"The failed representation of it as bytes32."}},"transferOwnership(address)":{"details":"Starts the ownership transfer of the contract to a new account. Replaces the pending transfer if there is one. Can only be called by the current owner."},"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":{"kind":"user","methods":{"context()":{"notice":"Gets the current context."},"failMessage((uint64,uint64,uint32,address,uint64,address,uint64,address,address,uint256,bytes))":{"notice":"Mark a message as failed if the message is currently retriable."},"getMessageMinGasLimit(uint256)":{"notice":"Returns the minimal gas limit required for sending a given message."},"hashMessage((uint64,uint64,uint32,address,uint64,address,uint64,address,address,uint256,bytes))":{"notice":"Hash the message"},"init(address)":{"notice":"Initializes the contract."},"init2()":{"notice":"This function shall be called by previously deployed contracts."},"isDestChainEnabled(uint64)":{"notice":"Checks if the destination chain is enabled."},"isMessageFailed((uint64,uint64,uint32,address,uint64,address,uint64,address,address,uint256,bytes),bytes)":{"notice":"Checks if a msgHash has failed on its destination chain. This is the 'readonly' version of proveMessageFailed."},"isMessageReceived((uint64,uint64,uint32,address,uint64,address,uint64,address,address,uint256,bytes),bytes)":{"notice":"Checks if a msgHash has been received on its source chain. This is the 'readonly' version of proveMessageReceived."},"isMessageSent((uint64,uint64,uint32,address,uint64,address,uint64,address,address,uint256,bytes))":{"notice":"Checks if the message was sent."},"messageStatus(bytes32)":{"notice":"Mapping to store the status of a message from its hash."},"nextMessageId()":{"notice":"Returns the unique id of the next bridge message"},"pause()":{"notice":"Pauses the contract."},"paused()":{"notice":"Returns true if the contract is paused, and false otherwise."},"processMessage((uint64,uint64,uint32,address,uint64,address,uint64,address,address,uint256,bytes),bytes)":{"notice":"Processes a bridge message on the destination chain. This function is callable by any address, including the `message.destOwner`."},"recallMessage((uint64,uint64,uint32,address,uint64,address,uint64,address,address,uint256,bytes),bytes)":{"notice":"Recalls a message on its source chain after it has failed on the destination chain, releasing associated assets on the source chain."},"resolver()":{"notice":"Returns the address of this contract."},"retryMessage((uint64,uint64,uint32,address,uint64,address,uint64,address,address,uint256,bytes),bool)":{"notice":"Retries to invoke the messageCall after releasing associated Ether and tokens."},"sendMessage((uint64,uint64,uint32,address,uint64,address,uint64,address,address,uint256,bytes))":{"notice":"Sends a message to the destination chain and takes custody of Ether required in this contract."},"signalForFailedMessage(bytes32)":{"notice":"Returns a signal representing a failed/recalled message."},"unpause()":{"notice":"Unpauses the contract."}},"version":1}},"settings":{"remappings":["@eth-fabric/urc/=node_modules/urc/src/","@openzeppelin-upgrades/contracts/=node_modules/@openzeppelin/contracts-upgradeable/","@openzeppelin/=node_modules/@openzeppelin/","@optimism/=node_modules/optimism/","@p256-verifier/contracts/=node_modules/p256-verifier/src/","@risc0/contracts/=node_modules/risc0-ethereum/contracts/src/","@solady/=node_modules/solady/","@sp1-contracts/=node_modules/sp1-contracts/contracts/","ds-test/=node_modules/ds-test/","forge-std/=node_modules/forge-std/","openzeppelin/=node_modules/@openzeppelin/","optimism/=node_modules/optimism/","p256-verifier/=node_modules/p256-verifier/","risc0-ethereum/=node_modules/risc0-ethereum/","script/=script/","solady/src/=node_modules/solady/src/","solady/utils/=node_modules/solady/src/utils/","sp1-contracts/=node_modules/sp1-contracts/","src/=contracts/","test/=test/","urc/=node_modules/urc/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"contracts/shared/bridge/Bridge.sol":"Bridge"},"evmVersion":"shanghai","libraries":{}},"sources":{"contracts/shared/bridge/Bridge.sol":{"keccak256":"0x58d4c542b77fe23d3078c3b9de781db54f1f318ed817d18af39cf915c3100c1e","urls":["bzz-raw://7482d1d403d37f1a925b5ae979cdb7fba1463b87cfa882cafa54454f9868283d","dweb:/ipfs/QmdhKFvapFkQD11AanqR1v28CRC8ZrMRu4dnVw8QoqGqNR"],"license":"MIT"},"contracts/shared/bridge/IBridge.sol":{"keccak256":"0x6b200a3471c7d1e2150c7a2f07f9fc4e619b93c72e61a937ecaf2f659f17a6e1","urls":["bzz-raw://51633f9d1c2799a6943d94324c7a4630adfbf46aad0639670870835a08ea563e","dweb:/ipfs/Qmbt7P6LSkvgKomUkD5E85128t35kc6QUPXCWSEGrG5n9W"],"license":"MIT"},"contracts/shared/common/EssentialContract.sol":{"keccak256":"0x23f5e92e919911e82b308b25cf5c06050fd7c7799d44156d8492c2879a12c0a6","urls":["bzz-raw://800f8bc7c8a362c8c684906e20c060d893cd4e8badf74cf12026e0cc159c846f","dweb:/ipfs/QmPbre9Skvfz5K7TWVHYTGGnec99VMnY9EUFbB6VqMsd9C"],"license":"MIT"},"contracts/shared/common/EssentialResolverContract.sol":{"keccak256":"0x5736a30fa45c48e3ff6d53170d980942ad42b788de81f5542a66397fb572b457","urls":["bzz-raw://06d2dcf4d83335d05a12272507991ca23d23ed5a893fd2f97e75324135858ed2","dweb:/ipfs/QmfWRCDnq6TXg8uwv2odpeLFguRSeLKuhL3VPMmGyyh9Eh"],"license":"MIT"},"contracts/shared/common/IResolver.sol":{"keccak256":"0x01273635aa0be2ad8d6218ad520f824f2003eab82be1d14c46da58f2516a48dd","urls":["bzz-raw://122dd3456077cf0be42bb974954c9918dca296415b076faeba0336ecee33de8e","dweb:/ipfs/QmSr4WQEFDJwqyqpextmY8Fp3b7Z96SBHgAEKsvXe6dEZV"],"license":"MIT"},"contracts/shared/libs/LibAddress.sol":{"keccak256":"0x06e39ae119af22feb19ebf8cbd9ee8514118b84388ef93c4650779fd10da8538","urls":["bzz-raw://e0284aa60ade3d0f87134e6f39c181cca41c345af766b2f8f72c6de50ccf9841","dweb:/ipfs/QmYNcjXmgVVPForNL34yrcZ97H2hKef4jL1DaQy6oNFhmY"],"license":"MIT"},"contracts/shared/libs/LibMath.sol":{"keccak256":"0x3e2ce1ccb5a4d94c6f97e09ebdb1e731c0bae466981be52147f15063b3742d69","urls":["bzz-raw://3530b4db00c1f357562d2dbab8978613c09b30ce1a6312de864399c7af82f9c7","dweb:/ipfs/Qmbp9HeWwPAx5Krcjuu8UCJB3so6rZu4TUTPD6vRKDDBjg"],"license":"MIT"},"contracts/shared/libs/LibNames.sol":{"keccak256":"0x1227d014ad714497f4779b334da558a7da409860a6139b8ba88e53044bf8fb17","urls":["bzz-raw://f743c99518df4f1b1a8cdcbcdcc9a60357b81684e40f68573d4b9eef230d67ee","dweb:/ipfs/QmapJMW5WhFjg8FK598gRitW3EwzkRn6TQ9fLuGjoMcaMP"],"license":"MIT"},"contracts/shared/libs/LibNetwork.sol":{"keccak256":"0xb5c6769cffcf864f725f8a76f98806f668f94a516125b854faa983b29d8f91ee","urls":["bzz-raw://de4a9c2ae643272308f42ec150bae3b2a88145357e78eac074e8f68ff3d04595","dweb:/ipfs/QmWNdKbTUvpR33nDunSjzKtR3ZQPPkFDD538fqhr9m6VY1"],"license":"MIT"},"contracts/shared/signal/ICheckpointStore.sol":{"keccak256":"0x82d7e6a1a6297ee7126ab7a83039900e453f76c9a0dff367be5699c742312067","urls":["bzz-raw://1db8501e9b6cadfdefd1ca1bb0cc9d241c9643abab73ec68d12e17aa8e543679","dweb:/ipfs/QmVMFkLduiSeYoZ3NynDNoAcxZi53Lt6Gct7TtXXTyY4LE"],"license":"MIT"},"contracts/shared/signal/ISignalService.sol":{"keccak256":"0xda39e5766d2a3cc48e19aa0bd8c1235dd7e44bf6df18f0025999e08e25ad0639","urls":["bzz-raw://71d6bb884be8db07e4b89f792aa8e3ad69c1045912be23cfb114935572fe6274","dweb:/ipfs/QmZBuTtCSs4HtKVWo1zsKdU2WndsVDKX8H9VBwyCYbCGeN"],"license":"MIT"},"node_modules/@openzeppelin/contracts-upgradeable/access/Ownable2StepUpgradeable.sol":{"keccak256":"0x9140dabc466abab21b48b72dbda26736b1183a310d0e677d3719d201df026510","urls":["bzz-raw://75267b14b60dc216d01d596a4008189a6c44d3314e53eded0edb1e757d95be16","dweb:/ipfs/QmQoMaxTRT6V7uQj9USfdQH9jh1crywB9auVjThzUSAbG2"],"license":"MIT"},"node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol":{"keccak256":"0x359a1ab89b46b9aba7bcad3fb651924baf4893d15153049b9976b0fc9be1358e","urls":["bzz-raw://e89863421b4014b96a4b62be76eb3b9f0a8afe9684664a6f389124c0964bfe5c","dweb:/ipfs/Qmbk7xr1irpDuU1WdxXgxELBXxs61rHhCgod7heVcvFx16"],"license":"MIT"},"node_modules/@openzeppelin/contracts-upgradeable/governance/utils/IVotesUpgradeable.sol":{"keccak256":"0x2d600bbef9320309cd2a86c1d087eb9d6dbcc00430713ee54bbc5c5a2a11ba31","urls":["bzz-raw://52a5380b861d676adef15f33f8f643e236a1acb2d9456beb4065307eaa22bc2a","dweb:/ipfs/QmdwSfxrafQubVvCoQCU5T7bbPR8JDWU1WotSDXSiUdm33"],"license":"MIT"},"node_modules/@openzeppelin/contracts-upgradeable/interfaces/IERC5267Upgradeable.sol":{"keccak256":"0xe562dab443278837fa50faddb76743399e942181881db8dccaea3bd1712994db","urls":["bzz-raw://79ebe0e661396045cefe94f4256398cf632756d779a6871319db374c9eb128c9","dweb:/ipfs/QmfCTCivb9fFhyCX8hzushzcKunvKL2N9RDsnRNdvbd11M"],"license":"MIT"},"node_modules/@openzeppelin/contracts-upgradeable/interfaces/IERC5805Upgradeable.sol":{"keccak256":"0x19848eec9045c8b91f1ab6b1853966443e3e36bcbc307593ed37a9f0df179d69","urls":["bzz-raw://a07972c1330ee99a5d051b393260e01412ac4c14c7bc4d75d80b7cce291a6412","dweb:/ipfs/QmQx1ZiAo4AbSobN41c1xUEtyX1QejydWCmY7Sj3H5aDNv"],"license":"MIT"},"node_modules/@openzeppelin/contracts-upgradeable/interfaces/IERC6372Upgradeable.sol":{"keccak256":"0x3026befd6d69d1b46960bdc35a2ad37c0e1352f26983ee3728dd61fd32aa308a","urls":["bzz-raw://c2001b7209fd4920ec7674f194db7fe163dfea7a7af2dd25fe6c0e5a94dc595c","dweb:/ipfs/QmXX2zTFyiNWoDxivV3trKcKWifAENMqNAB34NgjWq5feX"],"license":"MIT"},"node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol":{"keccak256":"0x89be10e757d242e9b18d5a32c9fbe2019f6d63052bbe46397a430a1d60d7f794","urls":["bzz-raw://f103ee2e4aecd37aac6ceefe670709cdd7613dee25fa2d4d9feaf7fc0aaa155e","dweb:/ipfs/QmRiNZLoJk5k3HPMYGPGjZFd2ke1ZxjhJZkM45Ec9GH9hv"],"license":"MIT"},"node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol":{"keccak256":"0xa9311aeb22f459e57d4dac77ee76cf43fb28ad3215278456211b5852b0e9e970","urls":["bzz-raw://ebdf0d3e42bd25223e45a213311d6d7e177d56a2c541a78b58c0c9d10bbdfbf9","dweb:/ipfs/QmfMyehJ6pxHrh7yL4793J6i7dofXnS2zH3cTtC8JdQMV9"],"license":"MIT"},"node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol":{"keccak256":"0x0e1f0f5f62f67a881cd1a9597acbc0a5e4071f3c2c10449a183b922ae7272e3f","urls":["bzz-raw://c25f742ff154998d19a669e2508c3597b363e123ce9144cd0fcf6521229f401f","dweb:/ipfs/QmQXRuFzStEWqeEPbhQU6cAg9PaSowxJVo4PDKyRod7dco"],"license":"MIT"},"node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/extensions/ERC20PermitUpgradeable.sol":{"keccak256":"0x3d159b9049d4ef465c1fb41f7ff7620f18f52bf6f8f3018bae4ed95c2df537d3","urls":["bzz-raw://38f7cfa624d878eec3c97e30dac64c6c00a79c65aa2799cebbf683e74488cd27","dweb:/ipfs/QmdtMH3xSGXNqvBcndsxWCUfmjta6kebnUYwKasJZucTfP"],"license":"MIT"},"node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/extensions/ERC20VotesUpgradeable.sol":{"keccak256":"0x82d5c2e8d5c7209f5cd2e7a40807ba264cb8bc577db1b121eda5f14f62d609c2","urls":["bzz-raw://024b99222ec16e75ff1b719c8f0dacf2d8e26250b3c076bd184ac1dadae47492","dweb:/ipfs/QmP11f3Dumw3CYg4ZtBLJrh8juULgodSuQfCqqgX5DqpJE"],"license":"MIT"},"node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/extensions/IERC20MetadataUpgradeable.sol":{"keccak256":"0x605434219ebbe4653f703640f06969faa5a1d78f0bfef878e5ddbb1ca369ceeb","urls":["bzz-raw://4c9c634f99dd02d73ce7498b03a6305e251c05eeebb71457306561c1fab0fa7d","dweb:/ipfs/QmbYRBbZHy8YoaQKXdPryiL3CSS7uUaRfRYi1TUj9cTqJQ"],"license":"MIT"},"node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/extensions/IERC20PermitUpgradeable.sol":{"keccak256":"0x07e881de3b9f6d2c07909f193f24b96c7fe4ea60013260f3f25aecd8bab3c2f8","urls":["bzz-raw://1fed09b97ccb0ff9ba9b6a94224f1d489026bf6b4b7279bfe64fb6e8749dee4d","dweb:/ipfs/QmcRAzaSP1UnGr4vrGkfJmB2L9aiTYoXfV1Lg9gqrVRWn8"],"license":"MIT"},"node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol":{"keccak256":"0x9c80f545915582e63fe206c6ce27cbe85a86fc10b9cd2a0e8c9488fb7c2ee422","urls":["bzz-raw://310136ad60820af4177a11a61d77a3686faf5fca4942b600e08fc940db38396b","dweb:/ipfs/QmbCzMNSTL7Zi7M4UCSqBrkHtp4jjxUnGbkneCZKdR1qeq"],"license":"MIT"},"node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol":{"keccak256":"0x75097e35253e7fb282ee4d7f27a80eaacfa759923185bf17302a89cbc059c5ef","urls":["bzz-raw://8b06267c5f80bad727af3e48b1382333d591dad51376399ef2f6b0ee6d58bf95","dweb:/ipfs/QmdU5La1agcQvghnfMpWZGDPz2TUDTCxUwTLKmuMRXBpAx"],"license":"MIT"},"node_modules/@openzeppelin/contracts-upgradeable/utils/CountersUpgradeable.sol":{"keccak256":"0x798741e231b22b81e2dd2eddaaf8832dee4baf5cd8e2dbaa5c1dd12a1c053c4d","urls":["bzz-raw://c41e8a7a906b8f362c8b760a44edadc61782008ea2ecf377ac5b5325bf6c3912","dweb:/ipfs/QmcXr19zuH3YLzD6RZNE6UTzvsKSckdxZQnagPoDGkCHu2"],"license":"MIT"},"node_modules/@openzeppelin/contracts-upgradeable/utils/StringsUpgradeable.sol":{"keccak256":"0xb96dc79b65b7c37937919dcdb356a969ce0aa2e8338322bf4dc027a3c9c9a7eb","urls":["bzz-raw://f8613145881436fc0480fff22da4868d611e2b0c0c3da083334eb4362ce1945a","dweb:/ipfs/QmPqpP3YeRbBdTJRe6Gv2eGsUaANf4J6RwTNRW36iYahfV"],"license":"MIT"},"node_modules/@openzeppelin/contracts-upgradeable/utils/cryptography/ECDSAUpgradeable.sol":{"keccak256":"0xa014f65d84b02827055d99993ccdbfb4b56b2c9e91eb278d82a93330659d06e4","urls":["bzz-raw://50a7e716a74f3d48a7f549086faa94afcd58b9f18ac8e9f74af4571f3a1d8d5c","dweb:/ipfs/QmTkDNWkq5o9Cv2jS7s6JvSmsPBkeunZhPe7Z2njGL31wo"],"license":"MIT"},"node_modules/@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol":{"keccak256":"0x7077d7f3369b21f286840c0d69b09a8a6d3d6e522fff67bfc240fd0a6cdf178c","urls":["bzz-raw://0f59e7a19530bd6ee236285f9a87c930d27b73464f6b7398e29a6f4cfc2670ac","dweb:/ipfs/QmVfN4gHvJNac7KiuhLhtgtbdDo5a6Mw5hMcwJkzYugq5R"],"license":"MIT"},"node_modules/@openzeppelin/contracts-upgradeable/utils/math/MathUpgradeable.sol":{"keccak256":"0x2bc0007987c229ae7624eb29be6a9b84f6a6a5872f76248b15208b131ea41c4e","urls":["bzz-raw://2b2835c737d073ef8b82a4cc246495a9740f43e7ff2cf130906b2449ff9bfb91","dweb:/ipfs/QmSCWfNoSvvTN57ic7o1RW6NqSxxGAqbBTnLKc7QHe27qB"],"license":"MIT"},"node_modules/@openzeppelin/contracts-upgradeable/utils/math/SafeCastUpgradeable.sol":{"keccak256":"0xcef50f95b43b038aa40aed25b62fc45906c681a5c1d504a4fdcf3bc6330a8d4b","urls":["bzz-raw://ef883699a00970d5469e502514e2854704cd53d7a49825078aa807a2f056315c","dweb:/ipfs/QmRjpN9oxgw6zHCVjfWNB9MzaYpNPPgqu7Rrwqwabmhpis"],"license":"MIT"},"node_modules/@openzeppelin/contracts-upgradeable/utils/math/SignedMathUpgradeable.sol":{"keccak256":"0x88f6b7bba3ee33eeb741f9a0f5bc98b6e6e352d0fe4905377bb328590f84095a","urls":["bzz-raw://88ace2d60f265752f18903d839910be4e4e104340b2957678585b812447825d4","dweb:/ipfs/QmXFkNxMc3AAGzhs2wUEZyErWQjsvoTGyYjuU5oZkFki5Z"],"license":"MIT"},"node_modules/@openzeppelin/contracts/interfaces/IERC1967.sol":{"keccak256":"0x3cbef5ebc24b415252e2f8c0c9254555d30d9f085603b4b80d9b5ed20ab87e90","urls":["bzz-raw://e8fa670c3bdce78e642cc6ae11c4cb38b133499cdce5e1990a9979d424703263","dweb:/ipfs/QmVxeCUk4jL2pXQyhsoNJwyU874wRufS2WvGe8TgPKPqhE"],"license":"MIT"},"node_modules/@openzeppelin/contracts/interfaces/draft-IERC1822.sol":{"keccak256":"0x1d4afe6cb24200cc4545eed814ecf5847277dfe5d613a1707aad5fceecebcfff","urls":["bzz-raw://383fb7b8181016ac5ccf07bc9cdb7c1b5045ea36e2cc4df52bcbf20396fc7688","dweb:/ipfs/QmYJ7Cg4WmE3rR8KGQxjUCXFfTH6TcwZ2Z1f6tPrq7jHFr"],"license":"MIT"},"node_modules/@openzeppelin/contracts/proxy/ERC1967/ERC1967Upgrade.sol":{"keccak256":"0x3b21ae06bf5957f73fa16754b0669c77b7abd8ba6c072d35c3281d446fdb86c2","urls":["bzz-raw://2db8e18505e86e02526847005d7287a33e397ed7fb9eaba3fd4a4a197add16e2","dweb:/ipfs/QmW9BSuKTzHWHBNSHF4L8XfVuU1uJrP2vLg84YtBd8mL82"],"license":"MIT"},"node_modules/@openzeppelin/contracts/proxy/beacon/IBeacon.sol":{"keccak256":"0xd50a3421ac379ccb1be435fa646d66a65c986b4924f0849839f08692f39dde61","urls":["bzz-raw://ada1e030c0231db8d143b44ce92b4d1158eedb087880cad6d8cc7bd7ebe7b354","dweb:/ipfs/QmWZ2NHZweRpz1U9GF6R1h65ri76dnX7fNxLBeM2t5N5Ce"],"license":"MIT"},"node_modules/@openzeppelin/contracts/proxy/utils/UUPSUpgradeable.sol":{"keccak256":"0xc6619957bcc6641fe8984bfaf9ff11a9e4b97d8149c0495f608f9a2416d7c5cf","urls":["bzz-raw://543be67f7fa43b1b932637c1c7f12035f0f4b0f7ee2bd3c33841186f79c165c1","dweb:/ipfs/QmSBPM2UVKbmJqWfD9i6hSiqbaE8TV4TSqfuiivziRRLKM"],"license":"MIT"},"node_modules/@openzeppelin/contracts/utils/Address.sol":{"keccak256":"0x006dd67219697fe68d7fbfdea512e7c4cb64a43565ed86171d67e844982da6fa","urls":["bzz-raw://2455248c8ddd9cc6a7af76a13973cddf222072427e7b0e2a7d1aff345145e931","dweb:/ipfs/QmfYjnjRbWqYpuxurqveE6HtzsY1Xx323J428AKQgtBJZm"],"license":"MIT"},"node_modules/@openzeppelin/contracts/utils/StorageSlot.sol":{"keccak256":"0xf09e68aa0dc6722a25bc46490e8d48ed864466d17313b8a0b254c36b54e49899","urls":["bzz-raw://e26daf81e2252dc1fe1ce0e4b55c2eb7c6d1ee84ae6558d1a9554432ea1d32da","dweb:/ipfs/Qmb1UANWiWq5pCKbmHSu772hd4nt374dVaghGmwSVNuk8Q"],"license":"MIT"},"node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol":{"keccak256":"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1","urls":["bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f","dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy"],"license":"MIT"}},"version":1},"storageLayout":{"storage":[{"astId":11586,"contract":"contracts/shared/bridge/Bridge.sol:Bridge","label":"_initialized","offset":0,"slot":"0","type":"t_uint8"},{"astId":11589,"contract":"contracts/shared/bridge/Bridge.sol:Bridge","label":"_initializing","offset":1,"slot":"0","type":"t_bool"},{"astId":16420,"contract":"contracts/shared/bridge/Bridge.sol:Bridge","label":"__gap","offset":0,"slot":"1","type":"t_array(t_uint256)50_storage"},{"astId":11331,"contract":"contracts/shared/bridge/Bridge.sol:Bridge","label":"_owner","offset":0,"slot":"51","type":"t_address"},{"astId":11451,"contract":"contracts/shared/bridge/Bridge.sol:Bridge","label":"__gap","offset":0,"slot":"52","type":"t_array(t_uint256)49_storage"},{"astId":11224,"contract":"contracts/shared/bridge/Bridge.sol:Bridge","label":"_pendingOwner","offset":0,"slot":"101","type":"t_address"},{"astId":11318,"contract":"contracts/shared/bridge/Bridge.sol:Bridge","label":"__gap","offset":0,"slot":"102","type":"t_array(t_uint256)49_storage"},{"astId":4316,"contract":"contracts/shared/bridge/Bridge.sol:Bridge","label":"__gapFromOldAddressResolver","offset":0,"slot":"151","type":"t_array(t_uint256)50_storage"},{"astId":4319,"contract":"contracts/shared/bridge/Bridge.sol:Bridge","label":"__reentry","offset":0,"slot":"201","type":"t_uint8"},{"astId":4321,"contract":"contracts/shared/bridge/Bridge.sol:Bridge","label":"__paused","offset":1,"slot":"201","type":"t_uint8"},{"astId":4325,"contract":"contracts/shared/bridge/Bridge.sol:Bridge","label":"__gap","offset":0,"slot":"202","type":"t_array(t_uint256)49_storage"},{"astId":2533,"contract":"contracts/shared/bridge/Bridge.sol:Bridge","label":"__reserved1","offset":0,"slot":"251","type":"t_uint64"},{"astId":2535,"contract":"contracts/shared/bridge/Bridge.sol:Bridge","label":"nextMessageId","offset":8,"slot":"251","type":"t_uint64"},{"astId":2541,"contract":"contracts/shared/bridge/Bridge.sol:Bridge","label":"messageStatus","offset":0,"slot":"252","type":"t_mapping(t_bytes32,t_enum(Status)4018)"},{"astId":2545,"contract":"contracts/shared/bridge/Bridge.sol:Bridge","label":"__ctx","offset":0,"slot":"253","type":"t_struct(Context)4053_storage"},{"astId":2548,"contract":"contracts/shared/bridge/Bridge.sol:Bridge","label":"__reserved2","offset":0,"slot":"255","type":"t_uint256"},{"astId":2551,"contract":"contracts/shared/bridge/Bridge.sol:Bridge","label":"__reserved3","offset":0,"slot":"256","type":"t_uint256"},{"astId":2555,"contract":"contracts/shared/bridge/Bridge.sol:Bridge","label":"__gap","offset":0,"slot":"257","type":"t_array(t_uint256)44_storage"}],"types":{"t_address":{"encoding":"inplace","label":"address","numberOfBytes":"20"},"t_array(t_uint256)44_storage":{"encoding":"inplace","label":"uint256[44]","numberOfBytes":"1408","base":"t_uint256"},"t_array(t_uint256)49_storage":{"encoding":"inplace","label":"uint256[49]","numberOfBytes":"1568","base":"t_uint256"},"t_array(t_uint256)50_storage":{"encoding":"inplace","label":"uint256[50]","numberOfBytes":"1600","base":"t_uint256"},"t_bool":{"encoding":"inplace","label":"bool","numberOfBytes":"1"},"t_bytes32":{"encoding":"inplace","label":"bytes32","numberOfBytes":"32"},"t_enum(Status)4018":{"encoding":"inplace","label":"enum IBridge.Status","numberOfBytes":"1"},"t_mapping(t_bytes32,t_enum(Status)4018)":{"encoding":"mapping","key":"t_bytes32","label":"mapping(bytes32 => enum IBridge.Status)","numberOfBytes":"32","value":"t_enum(Status)4018"},"t_struct(Context)4053_storage":{"encoding":"inplace","label":"struct IBridge.Context","numberOfBytes":"64","members":[{"astId":4048,"contract":"contracts/shared/bridge/Bridge.sol:Bridge","label":"msgHash","offset":0,"slot":"0","type":"t_bytes32"},{"astId":4050,"contract":"contracts/shared/bridge/Bridge.sol:Bridge","label":"from","offset":0,"slot":"1","type":"t_address"},{"astId":4052,"contract":"contracts/shared/bridge/Bridge.sol:Bridge","label":"srcChainId","offset":20,"slot":"1","type":"t_uint64"}]},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"},"t_uint64":{"encoding":"inplace","label":"uint64","numberOfBytes":"8"},"t_uint8":{"encoding":"inplace","label":"uint8","numberOfBytes":"1"}}},"ast":{"absolutePath":"contracts/shared/bridge/Bridge.sol","id":4010,"exportedSymbols":{"Address":[22766],"Bridge":[4009],"ContextUpgradeable":[16421],"CountersUpgradeable":[16495],"ECDSAUpgradeable":[17090],"EIP712Upgradeable":[17375],"ERC1967Upgrade":[20512],"ERC20PermitUpgradeable":[14110],"ERC20Upgradeable":[13840],"ERC20VotesUpgradeable":[14865],"EssentialContract":[4802],"EssentialResolverContract":[5017],"IBeacon":[20574],"IBridge":[4153],"ICheckpointStore":[6185],"IERC165":[23513],"IERC1822Proxiable":[20171],"IERC1967":[20161],"IERC20MetadataUpgradeable":[14890],"IERC20PermitUpgradeable":[14926],"IERC20Upgradeable":[13918],"IERC5267Upgradeable":[11555],"IERC5805Upgradeable":[11564],"IERC6372Upgradeable":[11579],"IMessageInvocable":[4172],"IRecallableSender":[4164],"IResolver":[5035],"ISignalService":[6277],"IVotesUpgradeable":[11530],"Initializable":[11748],"LibAddress":[5555],"LibMath":[5787],"LibNames":[5845],"LibNetwork":[6029],"MathUpgradeable":[18298],"Ownable2StepUpgradeable":[11319],"OwnableUpgradeable":[11452],"SafeCastUpgradeable":[19839],"SignedMathUpgradeable":[19944],"StorageSlot":[22906],"StringsUpgradeable":[16724],"UUPSUpgradeable":[21013]},"nodeType":"SourceUnit","src":"32:26236:9","nodes":[{"id":2454,"nodeType":"PragmaDirective","src":"32:24:9","nodes":[],"literals":["solidity","^","0.8",".24"]},{"id":2455,"nodeType":"ImportDirective","src":"58:49:9","nodes":[],"absolutePath":"contracts/shared/common/EssentialResolverContract.sol","file":"../common/EssentialResolverContract.sol","nameLocation":"-1:-1:-1","scope":4010,"sourceUnit":5018,"symbolAliases":[],"unitAlias":""},{"id":2456,"nodeType":"ImportDirective","src":"108:32:9","nodes":[],"absolutePath":"contracts/shared/libs/LibAddress.sol","file":"../libs/LibAddress.sol","nameLocation":"-1:-1:-1","scope":4010,"sourceUnit":5556,"symbolAliases":[],"unitAlias":""},{"id":2457,"nodeType":"ImportDirective","src":"141:29:9","nodes":[],"absolutePath":"contracts/shared/libs/LibMath.sol","file":"../libs/LibMath.sol","nameLocation":"-1:-1:-1","scope":4010,"sourceUnit":5788,"symbolAliases":[],"unitAlias":""},{"id":2458,"nodeType":"ImportDirective","src":"171:30:9","nodes":[],"absolutePath":"contracts/shared/libs/LibNames.sol","file":"../libs/LibNames.sol","nameLocation":"-1:-1:-1","scope":4010,"sourceUnit":5846,"symbolAliases":[],"unitAlias":""},{"id":2459,"nodeType":"ImportDirective","src":"202:32:9","nodes":[],"absolutePath":"contracts/shared/libs/LibNetwork.sol","file":"../libs/LibNetwork.sol","nameLocation":"-1:-1:-1","scope":4010,"sourceUnit":6030,"symbolAliases":[],"unitAlias":""},{"id":2460,"nodeType":"ImportDirective","src":"235:38:9","nodes":[],"absolutePath":"contracts/shared/signal/ISignalService.sol","file":"../signal/ISignalService.sol","nameLocation":"-1:-1:-1","scope":4010,"sourceUnit":6278,"symbolAliases":[],"unitAlias":""},{"id":2461,"nodeType":"ImportDirective","src":"274:23:9","nodes":[],"absolutePath":"contracts/shared/bridge/IBridge.sol","file":"./IBridge.sol","nameLocation":"-1:-1:-1","scope":4010,"sourceUnit":4173,"symbolAliases":[],"unitAlias":""},{"id":2462,"nodeType":"ImportDirective","src":"298:94:9","nodes":[],"absolutePath":"node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/extensions/ERC20VotesUpgradeable.sol","file":"@openzeppelin/contracts-upgradeable/token/ERC20/extensions/ERC20VotesUpgradeable.sol","nameLocation":"-1:-1:-1","scope":4010,"sourceUnit":14866,"symbolAliases":[],"unitAlias":""},{"id":4009,"nodeType":"ContractDefinition","src":"643:25624:9","nodes":[{"id":2470,"nodeType":"UsingForDirective","src":"703:26:9","nodes":[],"global":false,"libraryName":{"id":2468,"name":"Address","nameLocations":["709:7:9"],"nodeType":"IdentifierPath","referencedDeclaration":22766,"src":"709:7:9"},"typeName":{"id":2469,"name":"address","nodeType":"ElementaryTypeName","src":"721:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}},{"id":2473,"nodeType":"UsingForDirective","src":"734:26:9","nodes":[],"global":false,"libraryName":{"id":2471,"name":"LibMath","nameLocations":["740:7:9"],"nodeType":"IdentifierPath","referencedDeclaration":5787,"src":"740:7:9"},"typeName":{"id":2472,"name":"uint256","nodeType":"ElementaryTypeName","src":"752:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},{"id":2476,"nodeType":"UsingForDirective","src":"765:29:9","nodes":[],"global":false,"libraryName":{"id":2474,"name":"LibAddress","nameLocations":["771:10:9"],"nodeType":"IdentifierPath","referencedDeclaration":5555,"src":"771:10:9"},"typeName":{"id":2475,"name":"address","nodeType":"ElementaryTypeName","src":"786:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}},{"id":2479,"nodeType":"UsingForDirective","src":"799:37:9","nodes":[],"global":false,"libraryName":{"id":2477,"name":"LibAddress","nameLocations":["805:10:9"],"nodeType":"IdentifierPath","referencedDeclaration":5555,"src":"805:10:9"},"typeName":{"id":2478,"name":"address","nodeType":"ElementaryTypeName","src":"820:15:9","stateMutability":"payable","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}}},{"id":2488,"nodeType":"StructDefinition","src":"842:150:9","nodes":[],"canonicalName":"Bridge.ProcessingStats","members":[{"constant":false,"id":2481,"mutability":"mutable","name":"gasUsedInFeeCalc","nameLocation":"882:16:9","nodeType":"VariableDeclaration","scope":2488,"src":"875:23:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":2480,"name":"uint32","nodeType":"ElementaryTypeName","src":"875:6:9","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":2483,"mutability":"mutable","name":"proofSize","nameLocation":"915:9:9","nodeType":"VariableDeclaration","scope":2488,"src":"908:16:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":2482,"name":"uint32","nodeType":"ElementaryTypeName","src":"908:6:9","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":2485,"mutability":"mutable","name":"numCacheOps","nameLocation":"941:11:9","nodeType":"VariableDeclaration","scope":2488,"src":"934:18:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":2484,"name":"uint32","nodeType":"ElementaryTypeName","src":"934:6:9","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":2487,"mutability":"mutable","name":"processedByRelayer","nameLocation":"967:18:9","nodeType":"VariableDeclaration","scope":2488,"src":"962:23:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2486,"name":"bool","nodeType":"ElementaryTypeName","src":"962:4:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"name":"ProcessingStats","nameLocation":"849:15:9","scope":4009,"visibility":"public"},{"id":2499,"nodeType":"EventDefinition","src":"1078:88:9","nodes":[],"anonymous":false,"documentation":{"id":2489,"nodeType":"StructuredDocumentation","src":"998:75:9","text":"@dev A debug event for fine-tuning gas related constants in the future."},"eventSelector":"8580f507761043ecdd2bdca084d6fb0109150b3d9842d854d34e3dea6d69387d","name":"MessageProcessed","nameLocation":"1084:16:9","parameters":{"id":2498,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2491,"indexed":true,"mutability":"mutable","name":"msgHash","nameLocation":"1117:7:9","nodeType":"VariableDeclaration","scope":2499,"src":"1101:23:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2490,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1101:7:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":2494,"indexed":false,"mutability":"mutable","name":"message","nameLocation":"1134:7:9","nodeType":"VariableDeclaration","scope":2499,"src":"1126:15:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$4046_memory_ptr","typeString":"struct IBridge.Message"},"typeName":{"id":2493,"nodeType":"UserDefinedTypeName","pathNode":{"id":2492,"name":"Message","nameLocations":["1126:7:9"],"nodeType":"IdentifierPath","referencedDeclaration":4046,"src":"1126:7:9"},"referencedDeclaration":4046,"src":"1126:7:9","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$4046_storage_ptr","typeString":"struct IBridge.Message"}},"visibility":"internal"},{"constant":false,"id":2497,"indexed":false,"mutability":"mutable","name":"stats","nameLocation":"1159:5:9","nodeType":"VariableDeclaration","scope":2499,"src":"1143:21:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_struct$_ProcessingStats_$2488_memory_ptr","typeString":"struct Bridge.ProcessingStats"},"typeName":{"id":2496,"nodeType":"UserDefinedTypeName","pathNode":{"id":2495,"name":"ProcessingStats","nameLocations":["1143:15:9"],"nodeType":"IdentifierPath","referencedDeclaration":2488,"src":"1143:15:9"},"referencedDeclaration":2488,"src":"1143:15:9","typeDescriptions":{"typeIdentifier":"t_struct$_ProcessingStats_$2488_storage_ptr","typeString":"struct Bridge.ProcessingStats"}},"visibility":"internal"}],"src":"1100:65:9"}},{"id":2503,"nodeType":"VariableDeclaration","src":"1354:44:9","nodes":[],"constant":true,"documentation":{"id":2500,"nodeType":"StructuredDocumentation","src":"1172:177:9","text":"@dev The amount of gas that will be deducted from message.gasLimit before calculating the\n invocation gas limit. This value should be fine-tuned with production data."},"functionSelector":"be880c81","mutability":"constant","name":"GAS_RESERVE","nameLocation":"1377:11:9","scope":4009,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":2501,"name":"uint32","nodeType":"ElementaryTypeName","src":"1354:6:9","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"value":{"hexValue":"3830305f303030","id":2502,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1391:7:9","typeDescriptions":{"typeIdentifier":"t_rational_800000_by_1","typeString":"int_const 800000"},"value":"800_000"},"visibility":"public"},{"id":2507,"nodeType":"VariableDeclaration","src":"1584:45:9","nodes":[],"constant":true,"documentation":{"id":2504,"nodeType":"StructuredDocumentation","src":"1405:174:9","text":"@dev The gas overhead for both receiving and invoking a message, as well as the proof\n calldata cost.\n This value should be fine-tuned with production data."},"functionSelector":"a730cdfb","mutability":"constant","name":"GAS_OVERHEAD","nameLocation":"1607:12:9","scope":4009,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":2505,"name":"uint32","nodeType":"ElementaryTypeName","src":"1584:6:9","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"value":{"hexValue":"3132305f303030","id":2506,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1622:7:9","typeDescriptions":{"typeIdentifier":"t_rational_120000_by_1","typeString":"int_const 120000"},"value":"120_000"},"visibility":"public"},{"id":2511,"nodeType":"VariableDeclaration","src":"1713:57:9","nodes":[],"constant":true,"documentation":{"id":2508,"nodeType":"StructuredDocumentation","src":"1636:72:9","text":"@dev The max proof size for a message to be processable by a relayer."},"functionSelector":"422770fa","mutability":"constant","name":"RELAYER_MAX_PROOF_BYTES","nameLocation":"1737:23:9","scope":4009,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2509,"name":"uint256","nodeType":"ElementaryTypeName","src":"1713:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"3230305f303030","id":2510,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1763:7:9","typeDescriptions":{"typeIdentifier":"t_rational_200000_by_1","typeString":"int_const 200000"},"value":"200_000"},"visibility":"public"},{"id":2515,"nodeType":"VariableDeclaration","src":"1847:65:9","nodes":[],"constant":true,"documentation":{"id":2512,"nodeType":"StructuredDocumentation","src":"1777:65:9","text":"@dev The amount of gas not to charge fee per cache operation."},"mutability":"constant","name":"_GAS_REFUND_PER_CACHE_OPERATION","nameLocation":"1872:31:9","scope":4009,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2513,"name":"uint256","nodeType":"ElementaryTypeName","src":"1847:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"32305f303030","id":2514,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1906:6:9","typeDescriptions":{"typeIdentifier":"t_rational_20000_by_1","typeString":"int_const 20000"},"value":"20_000"},"visibility":"private"},{"id":2519,"nodeType":"VariableDeclaration","src":"2181:55:9","nodes":[],"constant":true,"documentation":{"id":2516,"nodeType":"StructuredDocumentation","src":"1919:37:9","text":"@dev Gas limit for sending Ether."},"mutability":"constant","name":"_SEND_ETHER_GAS_LIMIT","nameLocation":"2206:21:9","scope":4009,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2517,"name":"uint256","nodeType":"ElementaryTypeName","src":"2181:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"33355f303030","id":2518,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2230:6:9","typeDescriptions":{"typeIdentifier":"t_rational_35000_by_1","typeString":"int_const 35000"},"value":"35_000"},"visibility":"private"},{"id":2527,"nodeType":"VariableDeclaration","src":"2308:57:9","nodes":[],"constant":true,"documentation":{"id":2520,"nodeType":"StructuredDocumentation","src":"2243:60:9","text":"@dev Place holder value when not using transient storage"},"mutability":"constant","name":"_PLACEHOLDER","nameLocation":"2333:12:9","scope":4009,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2521,"name":"uint256","nodeType":"ElementaryTypeName","src":"2308:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"expression":{"arguments":[{"id":2524,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2353:7:9","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":2523,"name":"uint256","nodeType":"ElementaryTypeName","src":"2353:7:9","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"}],"id":2522,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"2348:4:9","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":2525,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2348:13:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint256","typeString":"type(uint256)"}},"id":2526,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2362:3:9","memberName":"max","nodeType":"MemberAccess","src":"2348:17:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"private"},{"id":2530,"nodeType":"VariableDeclaration","src":"2372:45:9","nodes":[],"constant":false,"functionSelector":"62d09453","mutability":"immutable","name":"signalService","nameLocation":"2404:13:9","scope":4009,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISignalService_$6277","typeString":"contract ISignalService"},"typeName":{"id":2529,"nodeType":"UserDefinedTypeName","pathNode":{"id":2528,"name":"ISignalService","nameLocations":["2372:14:9"],"nodeType":"IdentifierPath","referencedDeclaration":6277,"src":"2372:14:9"},"referencedDeclaration":6277,"src":"2372:14:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISignalService_$6277","typeString":"contract ISignalService"}},"visibility":"public"},{"id":2533,"nodeType":"VariableDeclaration","src":"2482:26:9","nodes":[],"constant":false,"documentation":{"id":2531,"nodeType":"StructuredDocumentation","src":"2424:53:9","text":"@notice The next message ID.\n @dev Slot 1."},"mutability":"mutable","name":"__reserved1","nameLocation":"2497:11:9","scope":4009,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":2532,"name":"uint64","nodeType":"ElementaryTypeName","src":"2482:6:9","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"private"},{"id":2535,"nodeType":"VariableDeclaration","src":"2514:27:9","nodes":[],"baseFunctions":[4143],"constant":false,"functionSelector":"eefbf17e","mutability":"mutable","name":"nextMessageId","nameLocation":"2528:13:9","scope":4009,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":2534,"name":"uint64","nodeType":"ElementaryTypeName","src":"2514:6:9","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"public"},{"id":2541,"nodeType":"VariableDeclaration","src":"2641:62:9","nodes":[],"constant":false,"documentation":{"id":2536,"nodeType":"StructuredDocumentation","src":"2548:88:9","text":"@notice Mapping to store the status of a message from its hash.\n @dev Slot 2."},"functionSelector":"3c6cf473","mutability":"mutable","name":"messageStatus","nameLocation":"2690:13:9","scope":4009,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_enum$_Status_$4018_$","typeString":"mapping(bytes32 => enum IBridge.Status)"},"typeName":{"id":2540,"keyName":"msgHash","keyNameLocation":"2657:7:9","keyType":{"id":2537,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2649:7:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Mapping","src":"2641:41:9","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_enum$_Status_$4018_$","typeString":"mapping(bytes32 => enum IBridge.Status)"},"valueName":"status","valueNameLocation":"2675:6:9","valueType":{"id":2539,"nodeType":"UserDefinedTypeName","pathNode":{"id":2538,"name":"Status","nameLocations":["2668:6:9"],"nodeType":"IdentifierPath","referencedDeclaration":4018,"src":"2668:6:9"},"referencedDeclaration":4018,"src":"2668:6:9","typeDescriptions":{"typeIdentifier":"t_enum$_Status_$4018","typeString":"enum IBridge.Status"}}},"visibility":"public"},{"id":2545,"nodeType":"VariableDeclaration","src":"2737:21:9","nodes":[],"constant":false,"documentation":{"id":2542,"nodeType":"StructuredDocumentation","src":"2710:22:9","text":"@dev Slots 3 and 4"},"mutability":"mutable","name":"__ctx","nameLocation":"2753:5:9","scope":4009,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_struct$_Context_$4053_storage","typeString":"struct IBridge.Context"},"typeName":{"id":2544,"nodeType":"UserDefinedTypeName","pathNode":{"id":2543,"name":"Context","nameLocations":["2737:7:9"],"nodeType":"IdentifierPath","referencedDeclaration":4053,"src":"2737:7:9"},"referencedDeclaration":4053,"src":"2737:7:9","typeDescriptions":{"typeIdentifier":"t_struct$_Context_$4053_storage_ptr","typeString":"struct IBridge.Context"}},"visibility":"private"},{"id":2548,"nodeType":"VariableDeclaration","src":"2786:27:9","nodes":[],"constant":false,"documentation":{"id":2546,"nodeType":"StructuredDocumentation","src":"2765:16:9","text":"@dev Slot 5."},"mutability":"mutable","name":"__reserved2","nameLocation":"2802:11:9","scope":4009,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2547,"name":"uint256","nodeType":"ElementaryTypeName","src":"2786:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"private"},{"id":2551,"nodeType":"VariableDeclaration","src":"2841:27:9","nodes":[],"constant":false,"documentation":{"id":2549,"nodeType":"StructuredDocumentation","src":"2820:16:9","text":"@dev Slot 6."},"mutability":"mutable","name":"__reserved3","nameLocation":"2857:11:9","scope":4009,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2550,"name":"uint256","nodeType":"ElementaryTypeName","src":"2841:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"private"},{"id":2555,"nodeType":"VariableDeclaration","src":"2875:25:9","nodes":[],"constant":false,"mutability":"mutable","name":"__gap","nameLocation":"2895:5:9","scope":4009,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$44_storage","typeString":"uint256[44]"},"typeName":{"baseType":{"id":2552,"name":"uint256","nodeType":"ElementaryTypeName","src":"2875:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2554,"length":{"hexValue":"3434","id":2553,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2883:2:9","typeDescriptions":{"typeIdentifier":"t_rational_44_by_1","typeString":"int_const 44"},"value":"44"},"nodeType":"ArrayTypeName","src":"2875:11:9","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$44_storage_ptr","typeString":"uint256[44]"}},"visibility":"private"},{"id":2557,"nodeType":"ErrorDefinition","src":"2907:26:9","nodes":[],"errorSelector":"e363bba8","name":"B_INVALID_CHAINID","nameLocation":"2913:17:9","parameters":{"id":2556,"nodeType":"ParameterList","parameters":[],"src":"2930:2:9"}},{"id":2559,"nodeType":"ErrorDefinition","src":"2938:26:9","nodes":[],"errorSelector":"5ceed173","name":"B_INVALID_CONTEXT","nameLocation":"2944:17:9","parameters":{"id":2558,"nodeType":"ParameterList","parameters":[],"src":"2961:2:9"}},{"id":2561,"nodeType":"ErrorDefinition","src":"2969:22:9","nodes":[],"errorSelector":"c9f51787","name":"B_INVALID_FEE","nameLocation":"2975:13:9","parameters":{"id":2560,"nodeType":"ParameterList","parameters":[],"src":"2988:2:9"}},{"id":2563,"nodeType":"ErrorDefinition","src":"2996:28:9","nodes":[],"errorSelector":"08c2ad53","name":"B_INVALID_GAS_LIMIT","nameLocation":"3002:19:9","parameters":{"id":2562,"nodeType":"ParameterList","parameters":[],"src":"3021:2:9"}},{"id":2565,"nodeType":"ErrorDefinition","src":"3029:25:9","nodes":[],"errorSelector":"67624eb4","name":"B_INVALID_STATUS","nameLocation":"3035:16:9","parameters":{"id":2564,"nodeType":"ParameterList","parameters":[],"src":"3051:2:9"}},{"id":2567,"nodeType":"ErrorDefinition","src":"3059:24:9","nodes":[],"errorSelector":"958557be","name":"B_INVALID_VALUE","nameLocation":"3065:15:9","parameters":{"id":2566,"nodeType":"ParameterList","parameters":[],"src":"3080:2:9"}},{"id":2569,"nodeType":"ErrorDefinition","src":"3088:27:9","nodes":[],"errorSelector":"5fbdff73","name":"B_INSUFFICIENT_GAS","nameLocation":"3094:18:9","parameters":{"id":2568,"nodeType":"ParameterList","parameters":[],"src":"3112:2:9"}},{"id":2571,"nodeType":"ErrorDefinition","src":"3120:27:9","nodes":[],"errorSelector":"ab035ad5","name":"B_MESSAGE_NOT_SENT","nameLocation":"3126:18:9","parameters":{"id":2570,"nodeType":"ParameterList","parameters":[],"src":"3144:2:9"}},{"id":2573,"nodeType":"ErrorDefinition","src":"3152:28:9","nodes":[],"errorSelector":"e56dc386","name":"B_PERMISSION_DENIED","nameLocation":"3158:19:9","parameters":{"id":2572,"nodeType":"ParameterList","parameters":[],"src":"3177:2:9"}},{"id":2575,"nodeType":"ErrorDefinition","src":"3185:26:9","nodes":[],"errorSelector":"1e3b03c9","name":"B_PROOF_TOO_LARGE","nameLocation":"3191:17:9","parameters":{"id":2574,"nodeType":"ParameterList","parameters":[],"src":"3208:2:9"}},{"id":2577,"nodeType":"ErrorDefinition","src":"3216:23:9","nodes":[],"errorSelector":"161e3ead","name":"B_RETRY_FAILED","nameLocation":"3222:14:9","parameters":{"id":2576,"nodeType":"ParameterList","parameters":[],"src":"3236:2:9"}},{"id":2579,"nodeType":"ErrorDefinition","src":"3244:30:9","nodes":[],"errorSelector":"a2826398","name":"B_SIGNAL_NOT_RECEIVED","nameLocation":"3250:21:9","parameters":{"id":2578,"nodeType":"ParameterList","parameters":[],"src":"3271:2:9"}},{"id":2589,"nodeType":"ModifierDefinition","src":"3440:89:9","nodes":[],"body":{"id":2588,"nodeType":"Block","src":"3476:53:9","nodes":[],"statements":[{"expression":{"arguments":[{"id":2584,"name":"_chainId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2581,"src":"3502:8:9","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint64","typeString":"uint64"}],"id":2583,"name":"_checkSameChain","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3990,"src":"3486:15:9","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint64_$returns$__$","typeString":"function (uint64) view"}},"id":2585,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3486:25:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2586,"nodeType":"ExpressionStatement","src":"3486:25:9"},{"id":2587,"nodeType":"PlaceholderStatement","src":"3521:1:9"}]},"name":"sameChain","nameLocation":"3449:9:9","parameters":{"id":2582,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2581,"mutability":"mutable","name":"_chainId","nameLocation":"3466:8:9","nodeType":"VariableDeclaration","scope":2589,"src":"3459:15:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":2580,"name":"uint64","nodeType":"ElementaryTypeName","src":"3459:6:9","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"src":"3458:17:9"},"virtual":false,"visibility":"internal"},{"id":2599,"nodeType":"ModifierDefinition","src":"3535:89:9","nodes":[],"body":{"id":2598,"nodeType":"Block","src":"3571:53:9","nodes":[],"statements":[{"expression":{"arguments":[{"id":2594,"name":"_chainId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2591,"src":"3597:8:9","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint64","typeString":"uint64"}],"id":2593,"name":"_checkDiffChain","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4008,"src":"3581:15:9","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint64_$returns$__$","typeString":"function (uint64) view"}},"id":2595,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3581:25:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2596,"nodeType":"ExpressionStatement","src":"3581:25:9"},{"id":2597,"nodeType":"PlaceholderStatement","src":"3616:1:9"}]},"name":"diffChain","nameLocation":"3544:9:9","parameters":{"id":2592,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2591,"mutability":"mutable","name":"_chainId","nameLocation":"3561:8:9","nodeType":"VariableDeclaration","scope":2599,"src":"3554:15:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":2590,"name":"uint64","nodeType":"ElementaryTypeName","src":"3554:6:9","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"src":"3553:17:9"},"virtual":false,"visibility":"internal"},{"id":2616,"nodeType":"FunctionDefinition","src":"3630:189:9","nodes":[],"body":{"id":2615,"nodeType":"Block","src":"3756:63:9","nodes":[],"statements":[{"expression":{"id":2613,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2609,"name":"signalService","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2530,"src":"3766:13:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISignalService_$6277","typeString":"contract ISignalService"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":2611,"name":"_signalService","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2603,"src":"3797:14:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2610,"name":"ISignalService","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6277,"src":"3782:14:9","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ISignalService_$6277_$","typeString":"type(contract ISignalService)"}},"id":2612,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3782:30:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_ISignalService_$6277","typeString":"contract ISignalService"}},"src":"3766:46:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISignalService_$6277","typeString":"contract ISignalService"}},"id":2614,"nodeType":"ExpressionStatement","src":"3766:46:9"}]},"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"id":2606,"name":"_resolver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2601,"src":"3741:9:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":2607,"kind":"baseConstructorSpecifier","modifierName":{"id":2605,"name":"EssentialResolverContract","nameLocations":["3715:25:9"],"nodeType":"IdentifierPath","referencedDeclaration":5017,"src":"3715:25:9"},"nodeType":"ModifierInvocation","src":"3715:36:9"}],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":2604,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2601,"mutability":"mutable","name":"_resolver","nameLocation":"3659:9:9","nodeType":"VariableDeclaration","scope":2616,"src":"3651:17:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2600,"name":"address","nodeType":"ElementaryTypeName","src":"3651:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2603,"mutability":"mutable","name":"_signalService","nameLocation":"3686:14:9","nodeType":"VariableDeclaration","scope":2616,"src":"3678:22:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2602,"name":"address","nodeType":"ElementaryTypeName","src":"3678:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3641:65:9"},"returnParameters":{"id":2608,"nodeType":"ParameterList","parameters":[],"src":"3756:0:9"},"scope":4009,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":2629,"nodeType":"FunctionDefinition","src":"4142:92:9","nodes":[],"body":{"id":2628,"nodeType":"Block","src":"4193:41:9","nodes":[],"statements":[{"expression":{"arguments":[{"id":2625,"name":"_owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2619,"src":"4220:6:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2624,"name":"__Essential_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4585,"src":"4203:16:9","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":2626,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4203:24:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2627,"nodeType":"ExpressionStatement","src":"4203:24:9"}]},"documentation":{"id":2617,"nodeType":"StructuredDocumentation","src":"4003:134:9","text":"@notice Initializes the contract.\n @param _owner The owner of this contract. msg.sender will be used if this value is zero."},"functionSelector":"19ab453c","implemented":true,"kind":"function","modifiers":[{"id":2622,"kind":"modifierInvocation","modifierName":{"id":2621,"name":"initializer","nameLocations":["4181:11:9"],"nodeType":"IdentifierPath","referencedDeclaration":11650,"src":"4181:11:9"},"nodeType":"ModifierInvocation","src":"4181:11:9"}],"name":"init","nameLocation":"4151:4:9","parameters":{"id":2620,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2619,"mutability":"mutable","name":"_owner","nameLocation":"4164:6:9","nodeType":"VariableDeclaration","scope":2629,"src":"4156:14:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2618,"name":"address","nodeType":"ElementaryTypeName","src":"4156:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4155:16:9"},"returnParameters":{"id":2623,"nodeType":"ParameterList","parameters":[],"src":"4193:0:9"},"scope":4009,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":2651,"nodeType":"FunctionDefinition","src":"4320:196:9","nodes":[],"body":{"id":2650,"nodeType":"Block","src":"4373:143:9","nodes":[],"statements":[{"expression":{"id":2640,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2638,"name":"__reserved1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2533,"src":"4444:11:9","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"30","id":2639,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4458:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"4444:15:9","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"id":2641,"nodeType":"ExpressionStatement","src":"4444:15:9"},{"expression":{"id":2644,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2642,"name":"__reserved2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2548,"src":"4469:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"30","id":2643,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4483:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"4469:15:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2645,"nodeType":"ExpressionStatement","src":"4469:15:9"},{"expression":{"id":2648,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2646,"name":"__reserved3","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2551,"src":"4494:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"30","id":2647,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4508:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"4494:15:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2649,"nodeType":"ExpressionStatement","src":"4494:15:9"}]},"documentation":{"id":2630,"nodeType":"StructuredDocumentation","src":"4240:75:9","text":"@notice This function shall be called by previously deployed contracts."},"functionSelector":"069489a2","implemented":true,"kind":"function","modifiers":[{"id":2633,"kind":"modifierInvocation","modifierName":{"id":2632,"name":"onlyOwner","nameLocations":["4346:9:9"],"nodeType":"IdentifierPath","referencedDeclaration":11366,"src":"4346:9:9"},"nodeType":"ModifierInvocation","src":"4346:9:9"},{"arguments":[{"hexValue":"32","id":2635,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4370:1:9","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"}],"id":2636,"kind":"modifierInvocation","modifierName":{"id":2634,"name":"reinitializer","nameLocations":["4356:13:9"],"nodeType":"IdentifierPath","referencedDeclaration":11683,"src":"4356:13:9"},"nodeType":"ModifierInvocation","src":"4356:16:9"}],"name":"init2","nameLocation":"4329:5:9","parameters":{"id":2631,"nodeType":"ParameterList","parameters":[],"src":"4334:2:9"},"returnParameters":{"id":2637,"nodeType":"ParameterList","parameters":[],"src":"4373:0:9"},"scope":4009,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":2779,"nodeType":"FunctionDefinition","src":"4550:1319:9","nodes":[],"body":{"id":2778,"nodeType":"Block","src":"4907:962:9","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint32","typeString":"uint32"},"id":2687,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":2684,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2655,"src":"4921:8:9","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$4046_calldata_ptr","typeString":"struct IBridge.Message calldata"}},"id":2685,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4930:8:9","memberName":"gasLimit","nodeType":"MemberAccess","referencedDeclaration":4029,"src":"4921:17:9","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":2686,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4942:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"4921:22:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2701,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":2698,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2655,"src":"5045:8:9","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$4046_calldata_ptr","typeString":"struct IBridge.Message calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Message_$4046_calldata_ptr","typeString":"struct IBridge.Message calldata"}],"id":2697,"name":"_invocationGasLimit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3933,"src":"5025:19:9","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_struct$_Message_$4046_calldata_ptr_$returns$_t_uint256_$","typeString":"function (struct IBridge.Message calldata) pure returns (uint256)"}},"id":2699,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5025:29:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":2700,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5058:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"5025:34:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2706,"nodeType":"IfStatement","src":"5021:93:9","trueBody":{"id":2705,"nodeType":"Block","src":"5061:53:9","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":2702,"name":"B_INVALID_GAS_LIMIT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2563,"src":"5082:19:9","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":2703,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5082:21:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":2704,"nodeType":"RevertStatement","src":"5075:28:9"}]}},"id":2707,"nodeType":"IfStatement","src":"4917:197:9","trueBody":{"id":2696,"nodeType":"Block","src":"4945:70:9","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint64","typeString":"uint64"},"id":2691,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":2688,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2655,"src":"4963:8:9","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$4046_calldata_ptr","typeString":"struct IBridge.Message calldata"}},"id":2689,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4972:3:9","memberName":"fee","nodeType":"MemberAccess","referencedDeclaration":4027,"src":"4963:12:9","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":2690,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4979:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"4963:17:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2695,"nodeType":"IfStatement","src":"4959:45:9","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":2692,"name":"B_INVALID_FEE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2561,"src":"4989:13:9","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":2693,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4989:15:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":2694,"nodeType":"RevertStatement","src":"4982:22:9"}}]}},{"assignments":[2709,null],"declarations":[{"constant":false,"id":2709,"mutability":"mutable","name":"destChainEnabled","nameLocation":"5184:16:9","nodeType":"VariableDeclaration","scope":2778,"src":"5179:21:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2708,"name":"bool","nodeType":"ElementaryTypeName","src":"5179:4:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},null],"id":2714,"initialValue":{"arguments":[{"expression":{"id":2711,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2655,"src":"5224:8:9","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$4046_calldata_ptr","typeString":"struct IBridge.Message calldata"}},"id":2712,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5233:11:9","memberName":"destChainId","nodeType":"MemberAccess","referencedDeclaration":4037,"src":"5224:20:9","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint64","typeString":"uint64"}],"id":2710,"name":"isDestChainEnabled","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3503,"src":"5205:18:9","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint64_$returns$_t_bool_$_t_address_$","typeString":"function (uint64) view returns (bool,address)"}},"id":2713,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5205:40:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_address_$","typeString":"tuple(bool,address)"}},"nodeType":"VariableDeclarationStatement","src":"5178:67:9"},{"condition":{"id":2716,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"5297:17:9","subExpression":{"id":2715,"name":"destChainEnabled","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2709,"src":"5298:16:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2720,"nodeType":"IfStatement","src":"5293:49:9","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":2717,"name":"B_INVALID_CHAINID","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2557,"src":"5323:17:9","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":2718,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5323:19:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":2719,"nodeType":"RevertStatement","src":"5316:26:9"}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2728,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2725,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":2721,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2655,"src":"5419:8:9","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$4046_calldata_ptr","typeString":"struct IBridge.Message calldata"}},"id":2722,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5428:5:9","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":4043,"src":"5419:14:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"expression":{"id":2723,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2655,"src":"5436:8:9","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$4046_calldata_ptr","typeString":"struct IBridge.Message calldata"}},"id":2724,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5445:3:9","memberName":"fee","nodeType":"MemberAccess","referencedDeclaration":4027,"src":"5436:12:9","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"src":"5419:29:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"id":2726,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"5452:3:9","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":2727,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5456:5:9","memberName":"value","nodeType":"MemberAccess","src":"5452:9:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5419:42:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2732,"nodeType":"IfStatement","src":"5415:72:9","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":2729,"name":"B_INVALID_VALUE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2567,"src":"5470:15:9","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":2730,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5470:17:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":2731,"nodeType":"RevertStatement","src":"5463:24:9"}},{"expression":{"id":2735,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2733,"name":"message_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2682,"src":"5498:8:9","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$4046_memory_ptr","typeString":"struct IBridge.Message memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":2734,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2655,"src":"5509:8:9","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$4046_calldata_ptr","typeString":"struct IBridge.Message calldata"}},"src":"5498:19:9","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$4046_memory_ptr","typeString":"struct IBridge.Message memory"}},"id":2736,"nodeType":"ExpressionStatement","src":"5498:19:9"},{"expression":{"id":2742,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":2737,"name":"message_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2682,"src":"5610:8:9","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$4046_memory_ptr","typeString":"struct IBridge.Message memory"}},"id":2739,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"5619:2:9","memberName":"id","nodeType":"MemberAccess","referencedDeclaration":4025,"src":"5610:11:9","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":2741,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"5624:15:9","subExpression":{"id":2740,"name":"nextMessageId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2535,"src":"5624:13:9","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"src":"5610:29:9","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"id":2743,"nodeType":"ExpressionStatement","src":"5610:29:9"},{"expression":{"id":2749,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":2744,"name":"message_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2682,"src":"5649:8:9","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$4046_memory_ptr","typeString":"struct IBridge.Message memory"}},"id":2746,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"5658:4:9","memberName":"from","nodeType":"MemberAccess","referencedDeclaration":4031,"src":"5649:13:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":2747,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"5665:3:9","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":2748,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5669:6:9","memberName":"sender","nodeType":"MemberAccess","src":"5665:10:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"5649:26:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2750,"nodeType":"ExpressionStatement","src":"5649:26:9"},{"expression":{"id":2759,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":2751,"name":"message_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2682,"src":"5685:8:9","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$4046_memory_ptr","typeString":"struct IBridge.Message memory"}},"id":2753,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"5694:10:9","memberName":"srcChainId","nodeType":"MemberAccess","referencedDeclaration":4033,"src":"5685:19:9","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"expression":{"id":2756,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"5714:5:9","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":2757,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5720:7:9","memberName":"chainid","nodeType":"MemberAccess","src":"5714:13:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2755,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5707:6:9","typeDescriptions":{"typeIdentifier":"t_type$_t_uint64_$","typeString":"type(uint64)"},"typeName":{"id":2754,"name":"uint64","nodeType":"ElementaryTypeName","src":"5707:6:9","typeDescriptions":{}}},"id":2758,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5707:21:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"src":"5685:43:9","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"id":2760,"nodeType":"ExpressionStatement","src":"5685:43:9"},{"expression":{"id":2765,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2761,"name":"msgHash_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2679,"src":"5739:8:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":2763,"name":"message_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2682,"src":"5762:8:9","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$4046_memory_ptr","typeString":"struct IBridge.Message memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Message_$4046_memory_ptr","typeString":"struct IBridge.Message memory"}],"id":2762,"name":"hashMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3551,"src":"5750:11:9","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_struct$_Message_$4046_memory_ptr_$returns$_t_bytes32_$","typeString":"function (struct IBridge.Message memory) pure returns (bytes32)"}},"id":2764,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5750:21:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"5739:32:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":2766,"nodeType":"ExpressionStatement","src":"5739:32:9"},{"eventCall":{"arguments":[{"id":2768,"name":"msgHash_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2679,"src":"5799:8:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":2769,"name":"message_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2682,"src":"5809:8:9","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$4046_memory_ptr","typeString":"struct IBridge.Message memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_struct$_Message_$4046_memory_ptr","typeString":"struct IBridge.Message memory"}],"id":2767,"name":"MessageSent","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4061,"src":"5787:11:9","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$_t_struct$_Message_$4046_memory_ptr_$returns$__$","typeString":"function (bytes32,struct IBridge.Message memory)"}},"id":2770,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5787:31:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2771,"nodeType":"EmitStatement","src":"5782:36:9"},{"expression":{"arguments":[{"id":2775,"name":"msgHash_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2679,"src":"5853:8:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":2772,"name":"signalService","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2530,"src":"5828:13:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISignalService_$6277","typeString":"contract ISignalService"}},"id":2774,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5842:10:9","memberName":"sendSignal","nodeType":"MemberAccess","referencedDeclaration":6232,"src":"5828:24:9","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_bytes32_$returns$_t_bytes32_$","typeString":"function (bytes32) external returns (bytes32)"}},"id":2776,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5828:34:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":2777,"nodeType":"ExpressionStatement","src":"5828:34:9"}]},"baseFunctions":[4081],"documentation":{"id":2652,"nodeType":"StructuredDocumentation","src":"4522:23:9","text":"@inheritdoc IBridge"},"functionSelector":"1bdb0037","implemented":true,"kind":"function","modifiers":[{"arguments":[{"expression":{"id":2659,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2655,"src":"4668:8:9","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$4046_calldata_ptr","typeString":"struct IBridge.Message calldata"}},"id":2660,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4677:8:9","memberName":"srcOwner","nodeType":"MemberAccess","referencedDeclaration":4035,"src":"4668:17:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":2661,"kind":"modifierInvocation","modifierName":{"id":2658,"name":"nonZeroAddr","nameLocations":["4656:11:9"],"nodeType":"IdentifierPath","referencedDeclaration":4409,"src":"4656:11:9"},"nodeType":"ModifierInvocation","src":"4656:30:9"},{"arguments":[{"expression":{"id":2663,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2655,"src":"4707:8:9","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$4046_calldata_ptr","typeString":"struct IBridge.Message calldata"}},"id":2664,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4716:9:9","memberName":"destOwner","nodeType":"MemberAccess","referencedDeclaration":4039,"src":"4707:18:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":2665,"kind":"modifierInvocation","modifierName":{"id":2662,"name":"nonZeroAddr","nameLocations":["4695:11:9"],"nodeType":"IdentifierPath","referencedDeclaration":4409,"src":"4695:11:9"},"nodeType":"ModifierInvocation","src":"4695:31:9"},{"arguments":[{"expression":{"id":2667,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2655,"src":"4747:8:9","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$4046_calldata_ptr","typeString":"struct IBridge.Message calldata"}},"id":2668,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4756:2:9","memberName":"to","nodeType":"MemberAccess","referencedDeclaration":4041,"src":"4747:11:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":2669,"kind":"modifierInvocation","modifierName":{"id":2666,"name":"nonZeroAddr","nameLocations":["4735:11:9"],"nodeType":"IdentifierPath","referencedDeclaration":4409,"src":"4735:11:9"},"nodeType":"ModifierInvocation","src":"4735:24:9"},{"arguments":[{"expression":{"id":2671,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2655,"src":"4778:8:9","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$4046_calldata_ptr","typeString":"struct IBridge.Message calldata"}},"id":2672,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4787:11:9","memberName":"destChainId","nodeType":"MemberAccess","referencedDeclaration":4037,"src":"4778:20:9","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}}],"id":2673,"kind":"modifierInvocation","modifierName":{"id":2670,"name":"diffChain","nameLocations":["4768:9:9"],"nodeType":"IdentifierPath","referencedDeclaration":2599,"src":"4768:9:9"},"nodeType":"ModifierInvocation","src":"4768:31:9"},{"id":2675,"kind":"modifierInvocation","modifierName":{"id":2674,"name":"whenNotPaused","nameLocations":["4808:13:9"],"nodeType":"IdentifierPath","referencedDeclaration":4398,"src":"4808:13:9"},"nodeType":"ModifierInvocation","src":"4808:13:9"},{"id":2677,"kind":"modifierInvocation","modifierName":{"id":2676,"name":"nonReentrant","nameLocations":["4830:12:9"],"nodeType":"IdentifierPath","referencedDeclaration":4382,"src":"4830:12:9"},"nodeType":"ModifierInvocation","src":"4830:12:9"}],"name":"sendMessage","nameLocation":"4559:11:9","overrides":{"id":2657,"nodeType":"OverrideSpecifier","overrides":[],"src":"4639:8:9"},"parameters":{"id":2656,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2655,"mutability":"mutable","name":"_message","nameLocation":"4588:8:9","nodeType":"VariableDeclaration","scope":2779,"src":"4571:25:9","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$4046_calldata_ptr","typeString":"struct IBridge.Message"},"typeName":{"id":2654,"nodeType":"UserDefinedTypeName","pathNode":{"id":2653,"name":"Message","nameLocations":["4571:7:9"],"nodeType":"IdentifierPath","referencedDeclaration":4046,"src":"4571:7:9"},"referencedDeclaration":4046,"src":"4571:7:9","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$4046_storage_ptr","typeString":"struct IBridge.Message"}},"visibility":"internal"}],"src":"4570:27:9"},"returnParameters":{"id":2683,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2679,"mutability":"mutable","name":"msgHash_","nameLocation":"4868:8:9","nodeType":"VariableDeclaration","scope":2779,"src":"4860:16:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2678,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4860:7:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":2682,"mutability":"mutable","name":"message_","nameLocation":"4893:8:9","nodeType":"VariableDeclaration","scope":2779,"src":"4878:23:9","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$4046_memory_ptr","typeString":"struct IBridge.Message"},"typeName":{"id":2681,"nodeType":"UserDefinedTypeName","pathNode":{"id":2680,"name":"Message","nameLocations":["4878:7:9"],"nodeType":"IdentifierPath","referencedDeclaration":4046,"src":"4878:7:9"},"referencedDeclaration":4046,"src":"4878:7:9","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$4046_storage_ptr","typeString":"struct IBridge.Message"}},"visibility":"internal"}],"src":"4859:43:9"},"scope":4009,"stateMutability":"payable","virtual":false,"visibility":"external"},{"id":2904,"nodeType":"FunctionDefinition","src":"5903:1380:9","nodes":[],"body":{"id":2903,"nodeType":"Block","src":"6141:1142:9","nodes":[],"statements":[{"assignments":[2801],"declarations":[{"constant":false,"id":2801,"mutability":"mutable","name":"msgHash","nameLocation":"6159:7:9","nodeType":"VariableDeclaration","scope":2903,"src":"6151:15:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2800,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6151:7:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":2805,"initialValue":{"arguments":[{"id":2803,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2783,"src":"6181:8:9","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$4046_calldata_ptr","typeString":"struct IBridge.Message calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Message_$4046_calldata_ptr","typeString":"struct IBridge.Message calldata"}],"id":2802,"name":"hashMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3551,"src":"6169:11:9","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_struct$_Message_$4046_memory_ptr_$returns$_t_bytes32_$","typeString":"function (struct IBridge.Message memory) pure returns (bytes32)"}},"id":2804,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6169:21:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"6151:39:9"},{"expression":{"arguments":[{"id":2807,"name":"msgHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2801,"src":"6213:7:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":2808,"name":"Status","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4018,"src":"6222:6:9","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Status_$4018_$","typeString":"type(enum IBridge.Status)"}},"id":2809,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6229:3:9","memberName":"NEW","nodeType":"MemberAccess","referencedDeclaration":4013,"src":"6222:10:9","typeDescriptions":{"typeIdentifier":"t_enum$_Status_$4018","typeString":"enum IBridge.Status"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_enum$_Status_$4018","typeString":"enum IBridge.Status"}],"id":2806,"name":"_checkStatus","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3844,"src":"6200:12:9","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$_t_enum$_Status_$4018_$returns$__$","typeString":"function (bytes32,enum IBridge.Status) view"}},"id":2810,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6200:33:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2811,"nodeType":"ExpressionStatement","src":"6200:33:9"},{"condition":{"id":2820,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"6248:51:9","subExpression":{"arguments":[{"arguments":[{"id":2816,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"6284:4:9","typeDescriptions":{"typeIdentifier":"t_contract$_Bridge_$4009","typeString":"contract Bridge"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Bridge_$4009","typeString":"contract Bridge"}],"id":2815,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6276:7:9","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2814,"name":"address","nodeType":"ElementaryTypeName","src":"6276:7:9","typeDescriptions":{}}},"id":2817,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6276:13:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2818,"name":"msgHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2801,"src":"6291:7:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":2812,"name":"signalService","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2530,"src":"6249:13:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISignalService_$6277","typeString":"contract ISignalService"}},"id":2813,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6263:12:9","memberName":"isSignalSent","nodeType":"MemberAccess","referencedDeclaration":6268,"src":"6249:26:9","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$_t_bytes32_$returns$_t_bool_$","typeString":"function (address,bytes32) view external returns (bool)"}},"id":2819,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6249:50:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2825,"nodeType":"IfStatement","src":"6244:109:9","trueBody":{"id":2824,"nodeType":"Block","src":"6301:52:9","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":2821,"name":"B_MESSAGE_NOT_SENT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2571,"src":"6322:18:9","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":2822,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6322:20:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":2823,"nodeType":"RevertStatement","src":"6315:27:9"}]}},{"expression":{"arguments":[{"id":2827,"name":"signalService","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2530,"src":"6397:13:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISignalService_$6277","typeString":"contract ISignalService"}},{"arguments":[{"id":2829,"name":"msgHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2801,"src":"6435:7:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":2828,"name":"signalForFailedMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3571,"src":"6412:22:9","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_bytes32_$","typeString":"function (bytes32) pure returns (bytes32)"}},"id":2830,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6412:31:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":2831,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2783,"src":"6445:8:9","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$4046_calldata_ptr","typeString":"struct IBridge.Message calldata"}},"id":2832,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6454:11:9","memberName":"destChainId","nodeType":"MemberAccess","referencedDeclaration":4037,"src":"6445:20:9","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},{"id":2833,"name":"_proof","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2785,"src":"6467:6:9","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ISignalService_$6277","typeString":"contract ISignalService"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint64","typeString":"uint64"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"id":2826,"name":"_proveSignalReceived","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3779,"src":"6363:20:9","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_ISignalService_$6277_$_t_bytes32_$_t_uint64_$_t_bytes_calldata_ptr_$returns$_t_uint32_$","typeString":"function (contract ISignalService,bytes32,uint64,bytes calldata) returns (uint32)"}},"id":2834,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6363:120:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"id":2835,"nodeType":"ExpressionStatement","src":"6363:120:9"},{"expression":{"arguments":[{"id":2837,"name":"msgHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2801,"src":"6515:7:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":2838,"name":"Status","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4018,"src":"6524:6:9","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Status_$4018_$","typeString":"type(enum IBridge.Status)"}},"id":2839,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6531:8:9","memberName":"RECALLED","nodeType":"MemberAccess","referencedDeclaration":4017,"src":"6524:15:9","typeDescriptions":{"typeIdentifier":"t_enum$_Status_$4018","typeString":"enum IBridge.Status"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_enum$_Status_$4018","typeString":"enum IBridge.Status"}],"id":2836,"name":"_updateMessageStatus","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3714,"src":"6494:20:9","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$_t_enum$_Status_$4018_$returns$__$","typeString":"function (bytes32,enum IBridge.Status)"}},"id":2840,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6494:46:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2841,"nodeType":"ExpressionStatement","src":"6494:46:9"},{"condition":{"arguments":[{"expression":{"arguments":[{"id":2846,"name":"IRecallableSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4164,"src":"6707:17:9","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IRecallableSender_$4164_$","typeString":"type(contract IRecallableSender)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IRecallableSender_$4164_$","typeString":"type(contract IRecallableSender)"}],"id":2845,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"6702:4:9","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":2847,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6702:23:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IRecallableSender_$4164","typeString":"type(contract IRecallableSender)"}},"id":2848,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6726:11:9","memberName":"interfaceId","nodeType":"MemberAccess","src":"6702:35:9","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"expression":{"expression":{"id":2842,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2783,"src":"6670:8:9","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$4046_calldata_ptr","typeString":"struct IBridge.Message calldata"}},"id":2843,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6679:4:9","memberName":"from","nodeType":"MemberAccess","referencedDeclaration":4031,"src":"6670:13:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2844,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6684:17:9","memberName":"supportsInterface","nodeType":"MemberAccess","referencedDeclaration":5554,"src":"6670:31:9","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_bytes4_$returns$_t_bool_$attached_to$_t_address_$","typeString":"function (address,bytes4) view returns (bool)"}},"id":2849,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6670:68:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":2901,"nodeType":"Block","src":"7177:100:9","statements":[{"expression":{"arguments":[{"expression":{"id":2896,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2783,"src":"7228:8:9","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$4046_calldata_ptr","typeString":"struct IBridge.Message calldata"}},"id":2897,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7237:5:9","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":4043,"src":"7228:14:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2898,"name":"_SEND_ETHER_GAS_LIMIT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2519,"src":"7244:21:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"expression":{"id":2891,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2783,"src":"7191:8:9","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$4046_calldata_ptr","typeString":"struct IBridge.Message calldata"}},"id":2894,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7200:8:9","memberName":"srcOwner","nodeType":"MemberAccess","referencedDeclaration":4035,"src":"7191:17:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2895,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7209:18:9","memberName":"sendEtherAndVerify","nodeType":"MemberAccess","referencedDeclaration":5495,"src":"7191:36:9","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_uint256_$returns$__$attached_to$_t_address_$","typeString":"function (address,uint256,uint256)"}},"id":2899,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7191:75:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2900,"nodeType":"ExpressionStatement","src":"7191:75:9"}]},"id":2902,"nodeType":"IfStatement","src":"6666:611:9","trueBody":{"id":2890,"nodeType":"Block","src":"6740:431:9","statements":[{"expression":{"arguments":[{"id":2851,"name":"msgHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2801,"src":"6768:7:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"arguments":[{"id":2854,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"6785:4:9","typeDescriptions":{"typeIdentifier":"t_contract$_Bridge_$4009","typeString":"contract Bridge"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Bridge_$4009","typeString":"contract Bridge"}],"id":2853,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6777:7:9","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2852,"name":"address","nodeType":"ElementaryTypeName","src":"6777:7:9","typeDescriptions":{}}},"id":2855,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6777:13:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":2856,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2783,"src":"6792:8:9","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$4046_calldata_ptr","typeString":"struct IBridge.Message calldata"}},"id":2857,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6801:10:9","memberName":"srcChainId","nodeType":"MemberAccess","referencedDeclaration":4033,"src":"6792:19:9","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint64","typeString":"uint64"}],"id":2850,"name":"_storeContext","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3733,"src":"6754:13:9","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$_t_address_$_t_uint64_$returns$__$","typeString":"function (bytes32,address,uint64)"}},"id":2858,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6754:58:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2859,"nodeType":"ExpressionStatement","src":"6754:58:9"},{"expression":{"arguments":[{"id":2868,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2783,"src":"6946:8:9","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$4046_calldata_ptr","typeString":"struct IBridge.Message calldata"}},{"id":2869,"name":"msgHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2801,"src":"6956:7:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Message_$4046_calldata_ptr","typeString":"struct IBridge.Message calldata"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Message_$4046_calldata_ptr","typeString":"struct IBridge.Message calldata"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"arguments":[{"expression":{"id":2861,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2783,"src":"6875:8:9","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$4046_calldata_ptr","typeString":"struct IBridge.Message calldata"}},"id":2862,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6884:4:9","memberName":"from","nodeType":"MemberAccess","referencedDeclaration":4031,"src":"6875:13:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2860,"name":"IRecallableSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4164,"src":"6857:17:9","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IRecallableSender_$4164_$","typeString":"type(contract IRecallableSender)"}},"id":2863,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6857:32:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IRecallableSender_$4164","typeString":"contract IRecallableSender"}},"id":2864,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6903:17:9","memberName":"onMessageRecalled","nodeType":"MemberAccess","referencedDeclaration":4163,"src":"6857:63:9","typeDescriptions":{"typeIdentifier":"t_function_external_payable$_t_struct$_Message_$4046_memory_ptr_$_t_bytes32_$returns$__$","typeString":"function (struct IBridge.Message memory,bytes32) payable external"}},"id":2867,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["value"],"nodeType":"FunctionCallOptions","options":[{"expression":{"id":2865,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2783,"src":"6929:8:9","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$4046_calldata_ptr","typeString":"struct IBridge.Message calldata"}},"id":2866,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6938:5:9","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":4043,"src":"6929:14:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"src":"6857:88:9","typeDescriptions":{"typeIdentifier":"t_function_external_payable$_t_struct$_Message_$4046_memory_ptr_$_t_bytes32_$returns$__$value","typeString":"function (struct IBridge.Message memory,bytes32) payable external"}},"id":2870,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6857:107:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2871,"nodeType":"ExpressionStatement","src":"6857:107:9"},{"expression":{"arguments":[{"arguments":[{"id":2875,"name":"_PLACEHOLDER","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2527,"src":"7079:12:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2874,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7071:7:9","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":2873,"name":"bytes32","nodeType":"ElementaryTypeName","src":"7071:7:9","typeDescriptions":{}}},"id":2876,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7071:21:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"arguments":[{"arguments":[{"id":2881,"name":"_PLACEHOLDER","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2527,"src":"7110:12:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2880,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7102:7:9","typeDescriptions":{"typeIdentifier":"t_type$_t_uint160_$","typeString":"type(uint160)"},"typeName":{"id":2879,"name":"uint160","nodeType":"ElementaryTypeName","src":"7102:7:9","typeDescriptions":{}}},"id":2882,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7102:21:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"}],"id":2878,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7094:7:9","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2877,"name":"address","nodeType":"ElementaryTypeName","src":"7094:7:9","typeDescriptions":{}}},"id":2883,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7094:30:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":2886,"name":"_PLACEHOLDER","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2527,"src":"7133:12:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2885,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7126:6:9","typeDescriptions":{"typeIdentifier":"t_type$_t_uint64_$","typeString":"type(uint64)"},"typeName":{"id":2884,"name":"uint64","nodeType":"ElementaryTypeName","src":"7126:6:9","typeDescriptions":{}}},"id":2887,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7126:20:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint64","typeString":"uint64"}],"id":2872,"name":"_storeContext","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3733,"src":"7040:13:9","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$_t_address_$_t_uint64_$returns$__$","typeString":"function (bytes32,address,uint64)"}},"id":2888,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7040:120:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2889,"nodeType":"ExpressionStatement","src":"7040:120:9"}]}}]},"baseFunctions":[4090],"documentation":{"id":2780,"nodeType":"StructuredDocumentation","src":"5875:23:9","text":"@inheritdoc IBridge"},"functionSelector":"9efc7a2e","implemented":true,"kind":"function","modifiers":[{"arguments":[{"expression":{"id":2788,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2783,"src":"6033:8:9","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$4046_calldata_ptr","typeString":"struct IBridge.Message calldata"}},"id":2789,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6042:10:9","memberName":"srcChainId","nodeType":"MemberAccess","referencedDeclaration":4033,"src":"6033:19:9","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}}],"id":2790,"kind":"modifierInvocation","modifierName":{"id":2787,"name":"sameChain","nameLocations":["6023:9:9"],"nodeType":"IdentifierPath","referencedDeclaration":2589,"src":"6023:9:9"},"nodeType":"ModifierInvocation","src":"6023:30:9"},{"arguments":[{"expression":{"id":2792,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2783,"src":"6072:8:9","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$4046_calldata_ptr","typeString":"struct IBridge.Message calldata"}},"id":2793,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6081:11:9","memberName":"destChainId","nodeType":"MemberAccess","referencedDeclaration":4037,"src":"6072:20:9","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}}],"id":2794,"kind":"modifierInvocation","modifierName":{"id":2791,"name":"diffChain","nameLocations":["6062:9:9"],"nodeType":"IdentifierPath","referencedDeclaration":2599,"src":"6062:9:9"},"nodeType":"ModifierInvocation","src":"6062:31:9"},{"id":2796,"kind":"modifierInvocation","modifierName":{"id":2795,"name":"whenNotPaused","nameLocations":["6102:13:9"],"nodeType":"IdentifierPath","referencedDeclaration":4398,"src":"6102:13:9"},"nodeType":"ModifierInvocation","src":"6102:13:9"},{"id":2798,"kind":"modifierInvocation","modifierName":{"id":2797,"name":"nonReentrant","nameLocations":["6124:12:9"],"nodeType":"IdentifierPath","referencedDeclaration":4382,"src":"6124:12:9"},"nodeType":"ModifierInvocation","src":"6124:12:9"}],"name":"recallMessage","nameLocation":"5912:13:9","parameters":{"id":2786,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2783,"mutability":"mutable","name":"_message","nameLocation":"5952:8:9","nodeType":"VariableDeclaration","scope":2904,"src":"5935:25:9","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$4046_calldata_ptr","typeString":"struct IBridge.Message"},"typeName":{"id":2782,"nodeType":"UserDefinedTypeName","pathNode":{"id":2781,"name":"Message","nameLocations":["5935:7:9"],"nodeType":"IdentifierPath","referencedDeclaration":4046,"src":"5935:7:9"},"referencedDeclaration":4046,"src":"5935:7:9","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$4046_storage_ptr","typeString":"struct IBridge.Message"}},"visibility":"internal"},{"constant":false,"id":2785,"mutability":"mutable","name":"_proof","nameLocation":"5985:6:9","nodeType":"VariableDeclaration","scope":2904,"src":"5970:21:9","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":2784,"name":"bytes","nodeType":"ElementaryTypeName","src":"5970:5:9","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5925:72:9"},"returnParameters":{"id":2799,"nodeType":"ParameterList","parameters":[],"src":"6141:0:9"},"scope":4009,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":3214,"nodeType":"FunctionDefinition","src":"7586:4212:9","nodes":[],"body":{"id":3213,"nodeType":"Block","src":"7801:3997:9","nodes":[],"statements":[{"assignments":[2924],"declarations":[{"constant":false,"id":2924,"mutability":"mutable","name":"gasStart","nameLocation":"7819:8:9","nodeType":"VariableDeclaration","scope":3213,"src":"7811:16:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2923,"name":"uint256","nodeType":"ElementaryTypeName","src":"7811:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2927,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":2925,"name":"gasleft","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-7,"src":"7830:7:9","typeDescriptions":{"typeIdentifier":"t_function_gasleft_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":2926,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7830:9:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"7811:28:9"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2932,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":2928,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2908,"src":"7934:8:9","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$4046_calldata_ptr","typeString":"struct IBridge.Message calldata"}},"id":2929,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7943:11:9","memberName":"destChainId","nodeType":"MemberAccess","referencedDeclaration":4037,"src":"7934:20:9","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"id":2930,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"7958:5:9","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":2931,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7964:7:9","memberName":"chainid","nodeType":"MemberAccess","src":"7958:13:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7934:37:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2936,"nodeType":"IfStatement","src":"7930:69:9","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":2933,"name":"B_INVALID_CHAINID","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2557,"src":"7980:17:9","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":2934,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7980:19:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":2935,"nodeType":"RevertStatement","src":"7973:26:9"}},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2946,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint64","typeString":"uint64"},"id":2940,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":2937,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2908,"src":"8093:8:9","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$4046_calldata_ptr","typeString":"struct IBridge.Message calldata"}},"id":2938,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8102:10:9","memberName":"srcChainId","nodeType":"MemberAccess","referencedDeclaration":4033,"src":"8093:19:9","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":2939,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8116:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"8093:24:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2945,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":2941,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2908,"src":"8121:8:9","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$4046_calldata_ptr","typeString":"struct IBridge.Message calldata"}},"id":2942,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8130:10:9","memberName":"srcChainId","nodeType":"MemberAccess","referencedDeclaration":4033,"src":"8121:19:9","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":2943,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"8144:5:9","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":2944,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8150:7:9","memberName":"chainid","nodeType":"MemberAccess","src":"8144:13:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8121:36:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"8093:64:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2951,"nodeType":"IfStatement","src":"8089:121:9","trueBody":{"id":2950,"nodeType":"Block","src":"8159:51:9","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":2947,"name":"B_INVALID_CHAINID","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2557,"src":"8180:17:9","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":2948,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8180:19:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":2949,"nodeType":"RevertStatement","src":"8173:26:9"}]}},{"assignments":[2954],"declarations":[{"constant":false,"id":2954,"mutability":"mutable","name":"stats","nameLocation":"8243:5:9","nodeType":"VariableDeclaration","scope":3213,"src":"8220:28:9","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_ProcessingStats_$2488_memory_ptr","typeString":"struct Bridge.ProcessingStats"},"typeName":{"id":2953,"nodeType":"UserDefinedTypeName","pathNode":{"id":2952,"name":"ProcessingStats","nameLocations":["8220:15:9"],"nodeType":"IdentifierPath","referencedDeclaration":2488,"src":"8220:15:9"},"referencedDeclaration":2488,"src":"8220:15:9","typeDescriptions":{"typeIdentifier":"t_struct$_ProcessingStats_$2488_storage_ptr","typeString":"struct Bridge.ProcessingStats"}},"visibility":"internal"}],"id":2955,"nodeType":"VariableDeclarationStatement","src":"8220:28:9"},{"expression":{"id":2964,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":2956,"name":"stats","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2954,"src":"8258:5:9","typeDescriptions":{"typeIdentifier":"t_struct$_ProcessingStats_$2488_memory_ptr","typeString":"struct Bridge.ProcessingStats memory"}},"id":2958,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"8264:18:9","memberName":"processedByRelayer","nodeType":"MemberAccess","referencedDeclaration":2487,"src":"8258:24:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2963,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":2959,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"8285:3:9","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":2960,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8289:6:9","memberName":"sender","nodeType":"MemberAccess","src":"8285:10:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"id":2961,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2908,"src":"8299:8:9","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$4046_calldata_ptr","typeString":"struct IBridge.Message calldata"}},"id":2962,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8308:9:9","memberName":"destOwner","nodeType":"MemberAccess","referencedDeclaration":4039,"src":"8299:18:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"8285:32:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"8258:59:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2965,"nodeType":"ExpressionStatement","src":"8258:59:9"},{"condition":{"expression":{"id":2966,"name":"stats","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2954,"src":"8416:5:9","typeDescriptions":{"typeIdentifier":"t_struct$_ProcessingStats_$2488_memory_ptr","typeString":"struct Bridge.ProcessingStats memory"}},"id":2967,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8422:18:9","memberName":"processedByRelayer","nodeType":"MemberAccess","referencedDeclaration":2487,"src":"8416:24:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2985,"nodeType":"IfStatement","src":"8412:196:9","trueBody":{"id":2984,"nodeType":"Block","src":"8442:166:9","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint32","typeString":"uint32"},"id":2971,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":2968,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2908,"src":"8460:8:9","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$4046_calldata_ptr","typeString":"struct IBridge.Message calldata"}},"id":2969,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8469:8:9","memberName":"gasLimit","nodeType":"MemberAccess","referencedDeclaration":4029,"src":"8460:17:9","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":2970,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8481:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"8460:22:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2975,"nodeType":"IfStatement","src":"8456:56:9","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":2972,"name":"B_PERMISSION_DENIED","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2573,"src":"8491:19:9","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":2973,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8491:21:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":2974,"nodeType":"RevertStatement","src":"8484:28:9"}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2979,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":2976,"name":"_proof","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2910,"src":"8530:6:9","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"id":2977,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8537:6:9","memberName":"length","nodeType":"MemberAccess","src":"8530:13:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":2978,"name":"RELAYER_MAX_PROOF_BYTES","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2511,"src":"8546:23:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8530:39:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2983,"nodeType":"IfStatement","src":"8526:71:9","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":2980,"name":"B_PROOF_TOO_LARGE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2575,"src":"8578:17:9","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":2981,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8578:19:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":2982,"nodeType":"RevertStatement","src":"8571:26:9"}}]}},{"assignments":[2987],"declarations":[{"constant":false,"id":2987,"mutability":"mutable","name":"msgHash","nameLocation":"8626:7:9","nodeType":"VariableDeclaration","scope":3213,"src":"8618:15:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2986,"name":"bytes32","nodeType":"ElementaryTypeName","src":"8618:7:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":2991,"initialValue":{"arguments":[{"id":2989,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2908,"src":"8648:8:9","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$4046_calldata_ptr","typeString":"struct IBridge.Message calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Message_$4046_calldata_ptr","typeString":"struct IBridge.Message calldata"}],"id":2988,"name":"hashMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3551,"src":"8636:11:9","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_struct$_Message_$4046_memory_ptr_$returns$_t_bytes32_$","typeString":"function (struct IBridge.Message memory) pure returns (bytes32)"}},"id":2990,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8636:21:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"8618:39:9"},{"expression":{"arguments":[{"id":2993,"name":"msgHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2987,"src":"8681:7:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":2994,"name":"Status","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4018,"src":"8690:6:9","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Status_$4018_$","typeString":"type(enum IBridge.Status)"}},"id":2995,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"8697:3:9","memberName":"NEW","nodeType":"MemberAccess","referencedDeclaration":4013,"src":"8690:10:9","typeDescriptions":{"typeIdentifier":"t_enum$_Status_$4018","typeString":"enum IBridge.Status"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_enum$_Status_$4018","typeString":"enum IBridge.Status"}],"id":2992,"name":"_checkStatus","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3844,"src":"8668:12:9","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$_t_enum$_Status_$4018_$returns$__$","typeString":"function (bytes32,enum IBridge.Status) view"}},"id":2996,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8668:33:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2997,"nodeType":"ExpressionStatement","src":"8668:33:9"},{"expression":{"id":3006,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":2998,"name":"stats","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2954,"src":"8712:5:9","typeDescriptions":{"typeIdentifier":"t_struct$_ProcessingStats_$2488_memory_ptr","typeString":"struct Bridge.ProcessingStats memory"}},"id":3000,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"8718:9:9","memberName":"proofSize","nodeType":"MemberAccess","referencedDeclaration":2483,"src":"8712:15:9","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"expression":{"id":3003,"name":"_proof","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2910,"src":"8737:6:9","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"id":3004,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8744:6:9","memberName":"length","nodeType":"MemberAccess","src":"8737:13:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3002,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8730:6:9","typeDescriptions":{"typeIdentifier":"t_type$_t_uint32_$","typeString":"type(uint32)"},"typeName":{"id":3001,"name":"uint32","nodeType":"ElementaryTypeName","src":"8730:6:9","typeDescriptions":{}}},"id":3005,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8730:21:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"8712:39:9","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"id":3007,"nodeType":"ExpressionStatement","src":"8712:39:9"},{"expression":{"id":3018,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":3008,"name":"stats","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2954,"src":"8761:5:9","typeDescriptions":{"typeIdentifier":"t_struct$_ProcessingStats_$2488_memory_ptr","typeString":"struct Bridge.ProcessingStats memory"}},"id":3010,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"8767:11:9","memberName":"numCacheOps","nodeType":"MemberAccess","referencedDeclaration":2485,"src":"8761:17:9","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":3012,"name":"signalService","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2530,"src":"8814:13:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISignalService_$6277","typeString":"contract ISignalService"}},{"id":3013,"name":"msgHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2987,"src":"8829:7:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":3014,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2908,"src":"8838:8:9","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$4046_calldata_ptr","typeString":"struct IBridge.Message calldata"}},"id":3015,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8847:10:9","memberName":"srcChainId","nodeType":"MemberAccess","referencedDeclaration":4033,"src":"8838:19:9","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},{"id":3016,"name":"_proof","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2910,"src":"8859:6:9","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ISignalService_$6277","typeString":"contract ISignalService"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint64","typeString":"uint64"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"id":3011,"name":"_proveSignalReceived","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3779,"src":"8793:20:9","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_ISignalService_$6277_$_t_bytes32_$_t_uint64_$_t_bytes_calldata_ptr_$returns$_t_uint32_$","typeString":"function (contract ISignalService,bytes32,uint64,bytes calldata) returns (uint32)"}},"id":3017,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8793:73:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"8761:105:9","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"id":3019,"nodeType":"ExpressionStatement","src":"8761:105:9"},{"assignments":[3021],"declarations":[{"constant":false,"id":3021,"mutability":"mutable","name":"refundAmount","nameLocation":"8885:12:9","nodeType":"VariableDeclaration","scope":3213,"src":"8877:20:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3020,"name":"uint256","nodeType":"ElementaryTypeName","src":"8877:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3022,"nodeType":"VariableDeclarationStatement","src":"8877:20:9"},{"condition":{"arguments":[{"id":3024,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2908,"src":"8938:8:9","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$4046_calldata_ptr","typeString":"struct IBridge.Message calldata"}},{"id":3025,"name":"signalService","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2530,"src":"8948:13:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISignalService_$6277","typeString":"contract ISignalService"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Message_$4046_calldata_ptr","typeString":"struct IBridge.Message calldata"},{"typeIdentifier":"t_contract$_ISignalService_$6277","typeString":"contract ISignalService"}],"id":3023,"name":"_unableToInvokeMessageCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3907,"src":"8911:26:9","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Message_$4046_calldata_ptr_$_t_contract$_ISignalService_$6277_$returns$_t_bool_$","typeString":"function (struct IBridge.Message calldata,contract ISignalService) view returns (bool)"}},"id":3026,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8911:51:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":3084,"nodeType":"Block","src":"9300:436:9","statements":[{"assignments":[3044],"declarations":[{"constant":false,"id":3044,"mutability":"mutable","name":"gasLimit","nameLocation":"9322:8:9","nodeType":"VariableDeclaration","scope":3084,"src":"9314:16:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3043,"name":"uint256","nodeType":"ElementaryTypeName","src":"9314:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3053,"initialValue":{"condition":{"expression":{"id":3045,"name":"stats","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2954,"src":"9333:5:9","typeDescriptions":{"typeIdentifier":"t_struct$_ProcessingStats_$2488_memory_ptr","typeString":"struct Bridge.ProcessingStats memory"}},"id":3046,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9339:18:9","memberName":"processedByRelayer","nodeType":"MemberAccess","referencedDeclaration":2487,"src":"9333:24:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":3050,"name":"gasleft","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-7,"src":"9392:7:9","typeDescriptions":{"typeIdentifier":"t_function_gasleft_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":3051,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9392:9:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3052,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"9333:68:9","trueExpression":{"arguments":[{"id":3048,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2908,"src":"9380:8:9","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$4046_calldata_ptr","typeString":"struct IBridge.Message calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Message_$4046_calldata_ptr","typeString":"struct IBridge.Message calldata"}],"id":3047,"name":"_invocationGasLimit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3933,"src":"9360:19:9","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_struct$_Message_$4046_calldata_ptr_$returns$_t_uint256_$","typeString":"function (struct IBridge.Message calldata) pure returns (uint256)"}},"id":3049,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9360:29:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"9314:87:9"},{"condition":{"arguments":[{"id":3055,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2908,"src":"9439:8:9","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$4046_calldata_ptr","typeString":"struct IBridge.Message calldata"}},{"id":3056,"name":"msgHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2987,"src":"9449:7:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":3057,"name":"gasLimit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3044,"src":"9458:8:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":3058,"name":"stats","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2954,"src":"9468:5:9","typeDescriptions":{"typeIdentifier":"t_struct$_ProcessingStats_$2488_memory_ptr","typeString":"struct Bridge.ProcessingStats memory"}},"id":3059,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9474:18:9","memberName":"processedByRelayer","nodeType":"MemberAccess","referencedDeclaration":2487,"src":"9468:24:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Message_$4046_calldata_ptr","typeString":"struct IBridge.Message calldata"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":3054,"name":"_invokeMessageCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3684,"src":"9420:18:9","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_Message_$4046_calldata_ptr_$_t_bytes32_$_t_uint256_$_t_bool_$returns$_t_bool_$","typeString":"function (struct IBridge.Message calldata,bytes32,uint256,bool) returns (bool)"}},"id":3060,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9420:73:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":3082,"nodeType":"Block","src":"9609:117:9","statements":[{"expression":{"id":3075,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3072,"name":"status_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2918,"src":"9627:7:9","typeDescriptions":{"typeIdentifier":"t_enum$_Status_$4018","typeString":"enum IBridge.Status"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":3073,"name":"Status","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4018,"src":"9637:6:9","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Status_$4018_$","typeString":"type(enum IBridge.Status)"}},"id":3074,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"9644:9:9","memberName":"RETRIABLE","nodeType":"MemberAccess","referencedDeclaration":4014,"src":"9637:16:9","typeDescriptions":{"typeIdentifier":"t_enum$_Status_$4018","typeString":"enum IBridge.Status"}},"src":"9627:26:9","typeDescriptions":{"typeIdentifier":"t_enum$_Status_$4018","typeString":"enum IBridge.Status"}},"id":3076,"nodeType":"ExpressionStatement","src":"9627:26:9"},{"expression":{"id":3080,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3077,"name":"reason_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2921,"src":"9671:7:9","typeDescriptions":{"typeIdentifier":"t_enum$_StatusReason_$4023","typeString":"enum IBridge.StatusReason"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":3078,"name":"StatusReason","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4023,"src":"9681:12:9","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_StatusReason_$4023_$","typeString":"type(enum IBridge.StatusReason)"}},"id":3079,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"9694:17:9","memberName":"INVOCATION_FAILED","nodeType":"MemberAccess","referencedDeclaration":4021,"src":"9681:30:9","typeDescriptions":{"typeIdentifier":"t_enum$_StatusReason_$4023","typeString":"enum IBridge.StatusReason"}},"src":"9671:40:9","typeDescriptions":{"typeIdentifier":"t_enum$_StatusReason_$4023","typeString":"enum IBridge.StatusReason"}},"id":3081,"nodeType":"ExpressionStatement","src":"9671:40:9"}]},"id":3083,"nodeType":"IfStatement","src":"9416:310:9","trueBody":{"id":3071,"nodeType":"Block","src":"9495:108:9","statements":[{"expression":{"id":3064,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3061,"name":"status_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2918,"src":"9513:7:9","typeDescriptions":{"typeIdentifier":"t_enum$_Status_$4018","typeString":"enum IBridge.Status"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":3062,"name":"Status","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4018,"src":"9523:6:9","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Status_$4018_$","typeString":"type(enum IBridge.Status)"}},"id":3063,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"9530:4:9","memberName":"DONE","nodeType":"MemberAccess","referencedDeclaration":4015,"src":"9523:11:9","typeDescriptions":{"typeIdentifier":"t_enum$_Status_$4018","typeString":"enum IBridge.Status"}},"src":"9513:21:9","typeDescriptions":{"typeIdentifier":"t_enum$_Status_$4018","typeString":"enum IBridge.Status"}},"id":3065,"nodeType":"ExpressionStatement","src":"9513:21:9"},{"expression":{"id":3069,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3066,"name":"reason_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2921,"src":"9552:7:9","typeDescriptions":{"typeIdentifier":"t_enum$_StatusReason_$4023","typeString":"enum IBridge.StatusReason"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":3067,"name":"StatusReason","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4023,"src":"9562:12:9","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_StatusReason_$4023_$","typeString":"type(enum IBridge.StatusReason)"}},"id":3068,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"9575:13:9","memberName":"INVOCATION_OK","nodeType":"MemberAccess","referencedDeclaration":4019,"src":"9562:26:9","typeDescriptions":{"typeIdentifier":"t_enum$_StatusReason_$4023","typeString":"enum IBridge.StatusReason"}},"src":"9552:36:9","typeDescriptions":{"typeIdentifier":"t_enum$_StatusReason_$4023","typeString":"enum IBridge.StatusReason"}},"id":3070,"nodeType":"ExpressionStatement","src":"9552:36:9"}]}}]},"id":3085,"nodeType":"IfStatement","src":"8907:829:9","trueBody":{"id":3042,"nodeType":"Block","src":"8964:330:9","statements":[{"expression":{"id":3030,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3027,"name":"refundAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3021,"src":"9161:12:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":3028,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2908,"src":"9176:8:9","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$4046_calldata_ptr","typeString":"struct IBridge.Message calldata"}},"id":3029,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9185:5:9","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":4043,"src":"9176:14:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9161:29:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3031,"nodeType":"ExpressionStatement","src":"9161:29:9"},{"expression":{"id":3035,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3032,"name":"status_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2918,"src":"9204:7:9","typeDescriptions":{"typeIdentifier":"t_enum$_Status_$4018","typeString":"enum IBridge.Status"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":3033,"name":"Status","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4018,"src":"9214:6:9","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Status_$4018_$","typeString":"type(enum IBridge.Status)"}},"id":3034,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"9221:4:9","memberName":"DONE","nodeType":"MemberAccess","referencedDeclaration":4015,"src":"9214:11:9","typeDescriptions":{"typeIdentifier":"t_enum$_Status_$4018","typeString":"enum IBridge.Status"}},"src":"9204:21:9","typeDescriptions":{"typeIdentifier":"t_enum$_Status_$4018","typeString":"enum IBridge.Status"}},"id":3036,"nodeType":"ExpressionStatement","src":"9204:21:9"},{"expression":{"id":3040,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3037,"name":"reason_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2921,"src":"9239:7:9","typeDescriptions":{"typeIdentifier":"t_enum$_StatusReason_$4023","typeString":"enum IBridge.StatusReason"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":3038,"name":"StatusReason","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4023,"src":"9249:12:9","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_StatusReason_$4023_$","typeString":"type(enum IBridge.StatusReason)"}},"id":3039,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"9262:21:9","memberName":"INVOCATION_PROHIBITED","nodeType":"MemberAccess","referencedDeclaration":4020,"src":"9249:34:9","typeDescriptions":{"typeIdentifier":"t_enum$_StatusReason_$4023","typeString":"enum IBridge.StatusReason"}},"src":"9239:44:9","typeDescriptions":{"typeIdentifier":"t_enum$_StatusReason_$4023","typeString":"enum IBridge.StatusReason"}},"id":3041,"nodeType":"ExpressionStatement","src":"9239:44:9"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint64","typeString":"uint64"},"id":3089,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":3086,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2908,"src":"9750:8:9","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$4046_calldata_ptr","typeString":"struct IBridge.Message calldata"}},"id":3087,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9759:3:9","memberName":"fee","nodeType":"MemberAccess","referencedDeclaration":4027,"src":"9750:12:9","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":3088,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9766:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"9750:17:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3192,"nodeType":"IfStatement","src":"9746:1855:9","trueBody":{"id":3191,"nodeType":"Block","src":"9769:1832:9","statements":[{"expression":{"id":3093,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3090,"name":"refundAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3021,"src":"9783:12:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"expression":{"id":3091,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2908,"src":"9799:8:9","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$4046_calldata_ptr","typeString":"struct IBridge.Message calldata"}},"id":3092,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9808:3:9","memberName":"fee","nodeType":"MemberAccess","referencedDeclaration":4027,"src":"9799:12:9","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"src":"9783:28:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3094,"nodeType":"ExpressionStatement","src":"9783:28:9"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":3101,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":3095,"name":"stats","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2954,"src":"9830:5:9","typeDescriptions":{"typeIdentifier":"t_struct$_ProcessingStats_$2488_memory_ptr","typeString":"struct Bridge.ProcessingStats memory"}},"id":3096,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9836:18:9","memberName":"processedByRelayer","nodeType":"MemberAccess","referencedDeclaration":2487,"src":"9830:24:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint32","typeString":"uint32"},"id":3100,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":3097,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2908,"src":"9858:8:9","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$4046_calldata_ptr","typeString":"struct IBridge.Message calldata"}},"id":3098,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9867:8:9","memberName":"gasLimit","nodeType":"MemberAccess","referencedDeclaration":4029,"src":"9858:17:9","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":3099,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9879:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"9858:22:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"9830:50:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3190,"nodeType":"IfStatement","src":"9826:1765:9","trueBody":{"id":3189,"nodeType":"Block","src":"9882:1709:9","statements":[{"id":3188,"nodeType":"UncheckedBlock","src":"9900:1677:9","statements":[{"assignments":[3103],"declarations":[{"constant":false,"id":3103,"mutability":"mutable","name":"refund","nameLocation":"10607:6:9","nodeType":"VariableDeclaration","scope":3188,"src":"10599:14:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3102,"name":"uint256","nodeType":"ElementaryTypeName","src":"10599:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3108,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3107,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":3104,"name":"stats","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2954,"src":"10616:5:9","typeDescriptions":{"typeIdentifier":"t_struct$_ProcessingStats_$2488_memory_ptr","typeString":"struct Bridge.ProcessingStats memory"}},"id":3105,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"10622:11:9","memberName":"numCacheOps","nodeType":"MemberAccess","referencedDeclaration":2485,"src":"10616:17:9","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":3106,"name":"_GAS_REFUND_PER_CACHE_OPERATION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2515,"src":"10636:31:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10616:51:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"10599:68:9"},{"expression":{"id":3127,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":3109,"name":"stats","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2954,"src":"10881:5:9","typeDescriptions":{"typeIdentifier":"t_struct$_ProcessingStats_$2488_memory_ptr","typeString":"struct Bridge.ProcessingStats memory"}},"id":3111,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"10887:16:9","memberName":"gasUsedInFeeCalc","nodeType":"MemberAccess","referencedDeclaration":2481,"src":"10881:22:9","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3125,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3122,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3116,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3114,"name":"GAS_OVERHEAD","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2507,"src":"10938:12:9","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":3115,"name":"gasStart","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2924,"src":"10953:8:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10938:23:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"arguments":[{"expression":{"expression":{"id":3118,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2908,"src":"10985:8:9","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$4046_calldata_ptr","typeString":"struct IBridge.Message calldata"}},"id":3119,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10994:4:9","memberName":"data","nodeType":"MemberAccess","referencedDeclaration":4045,"src":"10985:13:9","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"id":3120,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10999:6:9","memberName":"length","nodeType":"MemberAccess","src":"10985:20:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3117,"name":"_messageCalldataCost","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3959,"src":"10964:20:9","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint32_$","typeString":"function (uint256) pure returns (uint32)"}},"id":3121,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10964:42:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"10938:68:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":3123,"name":"gasleft","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-7,"src":"11037:7:9","typeDescriptions":{"typeIdentifier":"t_function_gasleft_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":3124,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11037:9:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10938:108:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3113,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10906:6:9","typeDescriptions":{"typeIdentifier":"t_type$_t_uint32_$","typeString":"type(uint32)"},"typeName":{"id":3112,"name":"uint32","nodeType":"ElementaryTypeName","src":"10906:6:9","typeDescriptions":{}}},"id":3126,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10906:162:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"10881:187:9","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"id":3128,"nodeType":"ExpressionStatement","src":"10881:187:9"},{"assignments":[3130],"declarations":[{"constant":false,"id":3130,"mutability":"mutable","name":"gasCharged","nameLocation":"11099:10:9","nodeType":"VariableDeclaration","scope":3188,"src":"11091:18:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3129,"name":"uint256","nodeType":"ElementaryTypeName","src":"11091:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3138,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3137,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"expression":{"id":3133,"name":"stats","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2954,"src":"11123:5:9","typeDescriptions":{"typeIdentifier":"t_struct$_ProcessingStats_$2488_memory_ptr","typeString":"struct Bridge.ProcessingStats memory"}},"id":3134,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"11129:16:9","memberName":"gasUsedInFeeCalc","nodeType":"MemberAccess","referencedDeclaration":2481,"src":"11123:22:9","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint32","typeString":"uint32"}],"expression":{"id":3131,"name":"refund","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3103,"src":"11112:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3132,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11119:3:9","memberName":"max","nodeType":"MemberAccess","referencedDeclaration":5766,"src":"11112:10:9","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$attached_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":3135,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11112:34:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":3136,"name":"refund","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3103,"src":"11149:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11112:43:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"11091:64:9"},{"assignments":[3140],"declarations":[{"constant":false,"id":3140,"mutability":"mutable","name":"maxFee","nameLocation":"11185:6:9","nodeType":"VariableDeclaration","scope":3188,"src":"11177:14:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3139,"name":"uint256","nodeType":"ElementaryTypeName","src":"11177:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3148,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3147,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3144,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3141,"name":"gasCharged","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3130,"src":"11194:10:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"expression":{"id":3142,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2908,"src":"11207:8:9","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$4046_calldata_ptr","typeString":"struct IBridge.Message calldata"}},"id":3143,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11216:3:9","memberName":"fee","nodeType":"MemberAccess","referencedDeclaration":4027,"src":"11207:12:9","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"src":"11194:25:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"expression":{"id":3145,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2908,"src":"11222:8:9","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$4046_calldata_ptr","typeString":"struct IBridge.Message calldata"}},"id":3146,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11231:8:9","memberName":"gasLimit","nodeType":"MemberAccess","referencedDeclaration":4029,"src":"11222:17:9","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"11194:45:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"11177:62:9"},{"assignments":[3150],"declarations":[{"constant":false,"id":3150,"mutability":"mutable","name":"baseFee","nameLocation":"11269:7:9","nodeType":"VariableDeclaration","scope":3188,"src":"11261:15:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3149,"name":"uint256","nodeType":"ElementaryTypeName","src":"11261:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3155,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3154,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3151,"name":"gasCharged","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3130,"src":"11279:10:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"expression":{"id":3152,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"11292:5:9","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":3153,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11298:7:9","memberName":"basefee","nodeType":"MemberAccess","src":"11292:13:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11279:26:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"11261:44:9"},{"assignments":[3157],"declarations":[{"constant":false,"id":3157,"mutability":"mutable","name":"fee","nameLocation":"11335:3:9","nodeType":"VariableDeclaration","scope":3188,"src":"11327:11:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3156,"name":"uint256","nodeType":"ElementaryTypeName","src":"11327:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3174,"initialValue":{"arguments":[{"expression":{"id":3171,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2908,"src":"11424:8:9","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$4046_calldata_ptr","typeString":"struct IBridge.Message calldata"}},"id":3172,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11433:3:9","memberName":"fee","nodeType":"MemberAccess","referencedDeclaration":4027,"src":"11424:12:9","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint64","typeString":"uint64"}],"expression":{"components":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3160,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3158,"name":"baseFee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3150,"src":"11366:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":3159,"name":"maxFee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3140,"src":"11377:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11366:17:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3167,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3164,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3162,"name":"maxFee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3140,"src":"11396:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":3163,"name":"baseFee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3150,"src":"11405:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11396:16:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":3165,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"11395:18:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":3166,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11417:1:9","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"11395:23:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3168,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"11366:52:9","trueExpression":{"id":3161,"name":"maxFee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3140,"src":"11386:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":3169,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"11365:54:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3170,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11420:3:9","memberName":"min","nodeType":"MemberAccess","referencedDeclaration":5748,"src":"11365:58:9","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$attached_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":3173,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11365:72:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"11327:110:9"},{"expression":{"id":3177,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3175,"name":"refundAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3021,"src":"11460:12:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"id":3176,"name":"fee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3157,"src":"11476:3:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11460:19:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3178,"nodeType":"ExpressionStatement","src":"11460:19:9"},{"expression":{"arguments":[{"id":3184,"name":"fee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3157,"src":"11531:3:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":3185,"name":"_SEND_ETHER_GAS_LIMIT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2519,"src":"11536:21:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"expression":{"id":3179,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"11501:3:9","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":3182,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11505:6:9","memberName":"sender","nodeType":"MemberAccess","src":"11501:10:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":3183,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11512:18:9","memberName":"sendEtherAndVerify","nodeType":"MemberAccess","referencedDeclaration":5495,"src":"11501:29:9","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_uint256_$returns$__$attached_to$_t_address_$","typeString":"function (address,uint256,uint256)"}},"id":3186,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11501:57:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3187,"nodeType":"ExpressionStatement","src":"11501:57:9"}]}]}}]}},{"expression":{"arguments":[{"id":3198,"name":"refundAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3021,"src":"11649:12:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":3199,"name":"_SEND_ETHER_GAS_LIMIT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2519,"src":"11663:21:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"expression":{"id":3193,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2908,"src":"11611:8:9","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$4046_calldata_ptr","typeString":"struct IBridge.Message calldata"}},"id":3196,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11620:9:9","memberName":"destOwner","nodeType":"MemberAccess","referencedDeclaration":4039,"src":"11611:18:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":3197,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11630:18:9","memberName":"sendEtherAndVerify","nodeType":"MemberAccess","referencedDeclaration":5495,"src":"11611:37:9","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_uint256_$returns$__$attached_to$_t_address_$","typeString":"function (address,uint256,uint256)"}},"id":3200,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11611:74:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3201,"nodeType":"ExpressionStatement","src":"11611:74:9"},{"expression":{"arguments":[{"id":3203,"name":"msgHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2987,"src":"11717:7:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":3204,"name":"status_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2918,"src":"11726:7:9","typeDescriptions":{"typeIdentifier":"t_enum$_Status_$4018","typeString":"enum IBridge.Status"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_enum$_Status_$4018","typeString":"enum IBridge.Status"}],"id":3202,"name":"_updateMessageStatus","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3714,"src":"11696:20:9","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$_t_enum$_Status_$4018_$returns$__$","typeString":"function (bytes32,enum IBridge.Status)"}},"id":3205,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11696:38:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3206,"nodeType":"ExpressionStatement","src":"11696:38:9"},{"eventCall":{"arguments":[{"id":3208,"name":"msgHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2987,"src":"11766:7:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":3209,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2908,"src":"11775:8:9","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$4046_calldata_ptr","typeString":"struct IBridge.Message calldata"}},{"id":3210,"name":"stats","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2954,"src":"11785:5:9","typeDescriptions":{"typeIdentifier":"t_struct$_ProcessingStats_$2488_memory_ptr","typeString":"struct Bridge.ProcessingStats memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_struct$_Message_$4046_calldata_ptr","typeString":"struct IBridge.Message calldata"},{"typeIdentifier":"t_struct$_ProcessingStats_$2488_memory_ptr","typeString":"struct Bridge.ProcessingStats memory"}],"id":3207,"name":"MessageProcessed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2499,"src":"11749:16:9","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$_t_struct$_Message_$4046_memory_ptr_$_t_struct$_ProcessingStats_$2488_memory_ptr_$returns$__$","typeString":"function (bytes32,struct IBridge.Message memory,struct Bridge.ProcessingStats memory)"}},"id":3211,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11749:42:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3212,"nodeType":"EmitStatement","src":"11744:47:9"}]},"baseFunctions":[4105],"documentation":{"id":2905,"nodeType":"StructuredDocumentation","src":"7289:292:9","text":"@inheritdoc IBridge\n @dev To ensure successful execution, we recommend this transaction's gas limit not to be\n smaller than:\n `(message.gasLimit - GAS_RESERVE) * 64 / 63 + GAS_RESERVE`,\n Or we can use a simplified rule: `tx.gaslimit = message.gaslimit * 102%`."},"functionSelector":"2035065e","implemented":true,"kind":"function","modifiers":[{"id":2913,"kind":"modifierInvocation","modifierName":{"id":2912,"name":"whenNotPaused","nameLocations":["7707:13:9"],"nodeType":"IdentifierPath","referencedDeclaration":4398,"src":"7707:13:9"},"nodeType":"ModifierInvocation","src":"7707:13:9"},{"id":2915,"kind":"modifierInvocation","modifierName":{"id":2914,"name":"nonReentrant","nameLocations":["7729:12:9"],"nodeType":"IdentifierPath","referencedDeclaration":4382,"src":"7729:12:9"},"nodeType":"ModifierInvocation","src":"7729:12:9"}],"name":"processMessage","nameLocation":"7595:14:9","parameters":{"id":2911,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2908,"mutability":"mutable","name":"_message","nameLocation":"7636:8:9","nodeType":"VariableDeclaration","scope":3214,"src":"7619:25:9","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$4046_calldata_ptr","typeString":"struct IBridge.Message"},"typeName":{"id":2907,"nodeType":"UserDefinedTypeName","pathNode":{"id":2906,"name":"Message","nameLocations":["7619:7:9"],"nodeType":"IdentifierPath","referencedDeclaration":4046,"src":"7619:7:9"},"referencedDeclaration":4046,"src":"7619:7:9","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$4046_storage_ptr","typeString":"struct IBridge.Message"}},"visibility":"internal"},{"constant":false,"id":2910,"mutability":"mutable","name":"_proof","nameLocation":"7669:6:9","nodeType":"VariableDeclaration","scope":3214,"src":"7654:21:9","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":2909,"name":"bytes","nodeType":"ElementaryTypeName","src":"7654:5:9","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"7609:72:9"},"returnParameters":{"id":2922,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2918,"mutability":"mutable","name":"status_","nameLocation":"7766:7:9","nodeType":"VariableDeclaration","scope":3214,"src":"7759:14:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Status_$4018","typeString":"enum IBridge.Status"},"typeName":{"id":2917,"nodeType":"UserDefinedTypeName","pathNode":{"id":2916,"name":"Status","nameLocations":["7759:6:9"],"nodeType":"IdentifierPath","referencedDeclaration":4018,"src":"7759:6:9"},"referencedDeclaration":4018,"src":"7759:6:9","typeDescriptions":{"typeIdentifier":"t_enum$_Status_$4018","typeString":"enum IBridge.Status"}},"visibility":"internal"},{"constant":false,"id":2921,"mutability":"mutable","name":"reason_","nameLocation":"7788:7:9","nodeType":"VariableDeclaration","scope":3214,"src":"7775:20:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_StatusReason_$4023","typeString":"enum IBridge.StatusReason"},"typeName":{"id":2920,"nodeType":"UserDefinedTypeName","pathNode":{"id":2919,"name":"StatusReason","nameLocations":["7775:12:9"],"nodeType":"IdentifierPath","referencedDeclaration":4023,"src":"7775:12:9"},"referencedDeclaration":4023,"src":"7775:12:9","typeDescriptions":{"typeIdentifier":"t_enum$_StatusReason_$4023","typeString":"enum IBridge.StatusReason"}},"visibility":"internal"}],"src":"7758:38:9"},"scope":4009,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":3327,"nodeType":"FunctionDefinition","src":"11832:1159:9","nodes":[],"body":{"id":3326,"nodeType":"Block","src":"12067:924:9","nodes":[],"statements":[{"assignments":[3236],"declarations":[{"constant":false,"id":3236,"mutability":"mutable","name":"msgHash","nameLocation":"12085:7:9","nodeType":"VariableDeclaration","scope":3326,"src":"12077:15:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3235,"name":"bytes32","nodeType":"ElementaryTypeName","src":"12077:7:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":3240,"initialValue":{"arguments":[{"id":3238,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3218,"src":"12107:8:9","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$4046_calldata_ptr","typeString":"struct IBridge.Message calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Message_$4046_calldata_ptr","typeString":"struct IBridge.Message calldata"}],"id":3237,"name":"hashMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3551,"src":"12095:11:9","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_struct$_Message_$4046_memory_ptr_$returns$_t_bytes32_$","typeString":"function (struct IBridge.Message memory) pure returns (bytes32)"}},"id":3239,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12095:21:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"12077:39:9"},{"expression":{"arguments":[{"id":3242,"name":"msgHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3236,"src":"12139:7:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":3243,"name":"Status","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4018,"src":"12148:6:9","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Status_$4018_$","typeString":"type(enum IBridge.Status)"}},"id":3244,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"12155:9:9","memberName":"RETRIABLE","nodeType":"MemberAccess","referencedDeclaration":4014,"src":"12148:16:9","typeDescriptions":{"typeIdentifier":"t_enum$_Status_$4018","typeString":"enum IBridge.Status"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_enum$_Status_$4018","typeString":"enum IBridge.Status"}],"id":3241,"name":"_checkStatus","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3844,"src":"12126:12:9","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$_t_enum$_Status_$4018_$returns$__$","typeString":"function (bytes32,enum IBridge.Status) view"}},"id":3245,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12126:39:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3246,"nodeType":"ExpressionStatement","src":"12126:39:9"},{"assignments":[3248],"declarations":[{"constant":false,"id":3248,"mutability":"mutable","name":"succeeded","nameLocation":"12181:9:9","nodeType":"VariableDeclaration","scope":3326,"src":"12176:14:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3247,"name":"bool","nodeType":"ElementaryTypeName","src":"12176:4:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":3249,"nodeType":"VariableDeclarationStatement","src":"12176:14:9"},{"condition":{"arguments":[{"id":3251,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3218,"src":"12231:8:9","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$4046_calldata_ptr","typeString":"struct IBridge.Message calldata"}},{"id":3252,"name":"signalService","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2530,"src":"12241:13:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISignalService_$6277","typeString":"contract ISignalService"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Message_$4046_calldata_ptr","typeString":"struct IBridge.Message calldata"},{"typeIdentifier":"t_contract$_ISignalService_$6277","typeString":"contract ISignalService"}],"id":3250,"name":"_unableToInvokeMessageCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3907,"src":"12204:26:9","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Message_$4046_calldata_ptr_$_t_contract$_ISignalService_$6277_$returns$_t_bool_$","typeString":"function (struct IBridge.Message calldata,contract ISignalService) view returns (bool)"}},"id":3253,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12204:51:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":3294,"nodeType":"Block","src":"12371:301:9","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":3278,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":3271,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint32","typeString":"uint32"},"id":3269,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":3266,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3218,"src":"12390:8:9","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$4046_calldata_ptr","typeString":"struct IBridge.Message calldata"}},"id":3267,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12399:8:9","memberName":"gasLimit","nodeType":"MemberAccess","referencedDeclaration":4029,"src":"12390:17:9","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":3268,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12411:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"12390:22:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"id":3270,"name":"_isLastAttempt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3220,"src":"12416:14:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"12390:40:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":3272,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"12389:42:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":3277,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":3273,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"12435:3:9","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":3274,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12439:6:9","memberName":"sender","nodeType":"MemberAccess","src":"12435:10:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"id":3275,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3218,"src":"12449:8:9","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$4046_calldata_ptr","typeString":"struct IBridge.Message calldata"}},"id":3276,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12458:9:9","memberName":"destOwner","nodeType":"MemberAccess","referencedDeclaration":4039,"src":"12449:18:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"12435:32:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"12389:78:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3283,"nodeType":"IfStatement","src":"12385:145:9","trueBody":{"id":3282,"nodeType":"Block","src":"12469:61:9","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":3279,"name":"B_PERMISSION_DENIED","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2573,"src":"12494:19:9","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":3280,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12494:21:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":3281,"nodeType":"RevertStatement","src":"12487:28:9"}]}},{"expression":{"id":3292,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3284,"name":"succeeded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3248,"src":"12594:9:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":3286,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3218,"src":"12625:8:9","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$4046_calldata_ptr","typeString":"struct IBridge.Message calldata"}},{"id":3287,"name":"msgHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3236,"src":"12635:7:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"arguments":[],"expression":{"argumentTypes":[],"id":3288,"name":"gasleft","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-7,"src":"12644:7:9","typeDescriptions":{"typeIdentifier":"t_function_gasleft_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":3289,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12644:9:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"66616c7365","id":3290,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"12655:5:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Message_$4046_calldata_ptr","typeString":"struct IBridge.Message calldata"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":3285,"name":"_invokeMessageCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3684,"src":"12606:18:9","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_Message_$4046_calldata_ptr_$_t_bytes32_$_t_uint256_$_t_bool_$returns$_t_bool_$","typeString":"function (struct IBridge.Message calldata,bytes32,uint256,bool) returns (bool)"}},"id":3291,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12606:55:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"12594:67:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3293,"nodeType":"ExpressionStatement","src":"12594:67:9"}]},"id":3295,"nodeType":"IfStatement","src":"12200:472:9","trueBody":{"id":3265,"nodeType":"Block","src":"12257:108:9","statements":[{"expression":{"id":3263,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3254,"name":"succeeded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3248,"src":"12271:9:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"expression":{"id":3258,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3218,"src":"12312:8:9","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$4046_calldata_ptr","typeString":"struct IBridge.Message calldata"}},"id":3259,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12321:5:9","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":4043,"src":"12312:14:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":3260,"name":"_SEND_ETHER_GAS_LIMIT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2519,"src":"12328:21:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"","id":3261,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"12351:2:9","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"expression":{"expression":{"id":3255,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3218,"src":"12283:8:9","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$4046_calldata_ptr","typeString":"struct IBridge.Message calldata"}},"id":3256,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12292:9:9","memberName":"destOwner","nodeType":"MemberAccess","referencedDeclaration":4039,"src":"12283:18:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":3257,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12302:9:9","memberName":"sendEther","nodeType":"MemberAccess","referencedDeclaration":5468,"src":"12283:28:9","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bool_$attached_to$_t_address_$","typeString":"function (address,uint256,uint256,bytes memory) returns (bool)"}},"id":3262,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12283:71:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"12271:83:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3264,"nodeType":"ExpressionStatement","src":"12271:83:9"}]}},{"condition":{"id":3296,"name":"succeeded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3248,"src":"12686:9:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"id":3304,"name":"_isLastAttempt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3220,"src":"12774:14:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":3323,"nodeType":"Block","src":"12937:48:9","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":3320,"name":"B_RETRY_FAILED","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2577,"src":"12958:14:9","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":3321,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12958:16:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":3322,"nodeType":"RevertStatement","src":"12951:23:9"}]},"id":3324,"nodeType":"IfStatement","src":"12770:215:9","trueBody":{"id":3319,"nodeType":"Block","src":"12790:141:9","statements":[{"expression":{"arguments":[{"id":3306,"name":"msgHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3236,"src":"12825:7:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":3307,"name":"Status","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4018,"src":"12834:6:9","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Status_$4018_$","typeString":"type(enum IBridge.Status)"}},"id":3308,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"12841:6:9","memberName":"FAILED","nodeType":"MemberAccess","referencedDeclaration":4016,"src":"12834:13:9","typeDescriptions":{"typeIdentifier":"t_enum$_Status_$4018","typeString":"enum IBridge.Status"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_enum$_Status_$4018","typeString":"enum IBridge.Status"}],"id":3305,"name":"_updateMessageStatus","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3714,"src":"12804:20:9","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$_t_enum$_Status_$4018_$returns$__$","typeString":"function (bytes32,enum IBridge.Status)"}},"id":3309,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12804:44:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3310,"nodeType":"ExpressionStatement","src":"12804:44:9"},{"expression":{"arguments":[{"arguments":[{"id":3315,"name":"msgHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3236,"src":"12911:7:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":3314,"name":"signalForFailedMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3571,"src":"12888:22:9","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_bytes32_$","typeString":"function (bytes32) pure returns (bytes32)"}},"id":3316,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12888:31:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":3311,"name":"signalService","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2530,"src":"12863:13:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISignalService_$6277","typeString":"contract ISignalService"}},"id":3313,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12877:10:9","memberName":"sendSignal","nodeType":"MemberAccess","referencedDeclaration":6232,"src":"12863:24:9","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_bytes32_$returns$_t_bytes32_$","typeString":"function (bytes32) external returns (bytes32)"}},"id":3317,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12863:57:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":3318,"nodeType":"ExpressionStatement","src":"12863:57:9"}]}},"id":3325,"nodeType":"IfStatement","src":"12682:303:9","trueBody":{"id":3303,"nodeType":"Block","src":"12697:67:9","statements":[{"expression":{"arguments":[{"id":3298,"name":"msgHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3236,"src":"12732:7:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":3299,"name":"Status","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4018,"src":"12741:6:9","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Status_$4018_$","typeString":"type(enum IBridge.Status)"}},"id":3300,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"12748:4:9","memberName":"DONE","nodeType":"MemberAccess","referencedDeclaration":4015,"src":"12741:11:9","typeDescriptions":{"typeIdentifier":"t_enum$_Status_$4018","typeString":"enum IBridge.Status"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_enum$_Status_$4018","typeString":"enum IBridge.Status"}],"id":3297,"name":"_updateMessageStatus","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3714,"src":"12711:20:9","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$_t_enum$_Status_$4018_$returns$__$","typeString":"function (bytes32,enum IBridge.Status)"}},"id":3301,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12711:42:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3302,"nodeType":"ExpressionStatement","src":"12711:42:9"}]}}]},"baseFunctions":[4114],"documentation":{"id":3215,"nodeType":"StructuredDocumentation","src":"11804:23:9","text":"@inheritdoc IBridge"},"functionSelector":"0432873c","implemented":true,"kind":"function","modifiers":[{"arguments":[{"expression":{"id":3223,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3218,"src":"11959:8:9","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$4046_calldata_ptr","typeString":"struct IBridge.Message calldata"}},"id":3224,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11968:11:9","memberName":"destChainId","nodeType":"MemberAccess","referencedDeclaration":4037,"src":"11959:20:9","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}}],"id":3225,"kind":"modifierInvocation","modifierName":{"id":3222,"name":"sameChain","nameLocations":["11949:9:9"],"nodeType":"IdentifierPath","referencedDeclaration":2589,"src":"11949:9:9"},"nodeType":"ModifierInvocation","src":"11949:31:9"},{"arguments":[{"expression":{"id":3227,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3218,"src":"11999:8:9","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$4046_calldata_ptr","typeString":"struct IBridge.Message calldata"}},"id":3228,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12008:10:9","memberName":"srcChainId","nodeType":"MemberAccess","referencedDeclaration":4033,"src":"11999:19:9","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}}],"id":3229,"kind":"modifierInvocation","modifierName":{"id":3226,"name":"diffChain","nameLocations":["11989:9:9"],"nodeType":"IdentifierPath","referencedDeclaration":2599,"src":"11989:9:9"},"nodeType":"ModifierInvocation","src":"11989:30:9"},{"id":3231,"kind":"modifierInvocation","modifierName":{"id":3230,"name":"whenNotPaused","nameLocations":["12028:13:9"],"nodeType":"IdentifierPath","referencedDeclaration":4398,"src":"12028:13:9"},"nodeType":"ModifierInvocation","src":"12028:13:9"},{"id":3233,"kind":"modifierInvocation","modifierName":{"id":3232,"name":"nonReentrant","nameLocations":["12050:12:9"],"nodeType":"IdentifierPath","referencedDeclaration":4382,"src":"12050:12:9"},"nodeType":"ModifierInvocation","src":"12050:12:9"}],"name":"retryMessage","nameLocation":"11841:12:9","parameters":{"id":3221,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3218,"mutability":"mutable","name":"_message","nameLocation":"11880:8:9","nodeType":"VariableDeclaration","scope":3327,"src":"11863:25:9","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$4046_calldata_ptr","typeString":"struct IBridge.Message"},"typeName":{"id":3217,"nodeType":"UserDefinedTypeName","pathNode":{"id":3216,"name":"Message","nameLocations":["11863:7:9"],"nodeType":"IdentifierPath","referencedDeclaration":4046,"src":"11863:7:9"},"referencedDeclaration":4046,"src":"11863:7:9","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$4046_storage_ptr","typeString":"struct IBridge.Message"}},"visibility":"internal"},{"constant":false,"id":3220,"mutability":"mutable","name":"_isLastAttempt","nameLocation":"11903:14:9","nodeType":"VariableDeclaration","scope":3327,"src":"11898:19:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3219,"name":"bool","nodeType":"ElementaryTypeName","src":"11898:4:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"11853:70:9"},"returnParameters":{"id":3234,"nodeType":"ParameterList","parameters":[],"src":"12067:0:9"},"scope":4009,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":3383,"nodeType":"FunctionDefinition","src":"13025:519:9","nodes":[],"body":{"id":3382,"nodeType":"Block","src":"13216:328:9","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":3350,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":3346,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"13230:3:9","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":3347,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13234:6:9","memberName":"sender","nodeType":"MemberAccess","src":"13230:10:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"id":3348,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3331,"src":"13244:8:9","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$4046_calldata_ptr","typeString":"struct IBridge.Message calldata"}},"id":3349,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13253:9:9","memberName":"destOwner","nodeType":"MemberAccess","referencedDeclaration":4039,"src":"13244:18:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"13230:32:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3355,"nodeType":"IfStatement","src":"13226:91:9","trueBody":{"id":3354,"nodeType":"Block","src":"13264:53:9","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":3351,"name":"B_PERMISSION_DENIED","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2573,"src":"13285:19:9","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":3352,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13285:21:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":3353,"nodeType":"RevertStatement","src":"13278:28:9"}]}},{"assignments":[3357],"declarations":[{"constant":false,"id":3357,"mutability":"mutable","name":"msgHash","nameLocation":"13335:7:9","nodeType":"VariableDeclaration","scope":3382,"src":"13327:15:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3356,"name":"bytes32","nodeType":"ElementaryTypeName","src":"13327:7:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":3361,"initialValue":{"arguments":[{"id":3359,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3331,"src":"13357:8:9","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$4046_calldata_ptr","typeString":"struct IBridge.Message calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Message_$4046_calldata_ptr","typeString":"struct IBridge.Message calldata"}],"id":3358,"name":"hashMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3551,"src":"13345:11:9","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_struct$_Message_$4046_memory_ptr_$returns$_t_bytes32_$","typeString":"function (struct IBridge.Message memory) pure returns (bytes32)"}},"id":3360,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13345:21:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"13327:39:9"},{"expression":{"arguments":[{"id":3363,"name":"msgHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3357,"src":"13389:7:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":3364,"name":"Status","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4018,"src":"13398:6:9","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Status_$4018_$","typeString":"type(enum IBridge.Status)"}},"id":3365,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"13405:9:9","memberName":"RETRIABLE","nodeType":"MemberAccess","referencedDeclaration":4014,"src":"13398:16:9","typeDescriptions":{"typeIdentifier":"t_enum$_Status_$4018","typeString":"enum IBridge.Status"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_enum$_Status_$4018","typeString":"enum IBridge.Status"}],"id":3362,"name":"_checkStatus","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3844,"src":"13376:12:9","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$_t_enum$_Status_$4018_$returns$__$","typeString":"function (bytes32,enum IBridge.Status) view"}},"id":3366,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13376:39:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3367,"nodeType":"ExpressionStatement","src":"13376:39:9"},{"expression":{"arguments":[{"id":3369,"name":"msgHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3357,"src":"13447:7:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":3370,"name":"Status","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4018,"src":"13456:6:9","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Status_$4018_$","typeString":"type(enum IBridge.Status)"}},"id":3371,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"13463:6:9","memberName":"FAILED","nodeType":"MemberAccess","referencedDeclaration":4016,"src":"13456:13:9","typeDescriptions":{"typeIdentifier":"t_enum$_Status_$4018","typeString":"enum IBridge.Status"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_enum$_Status_$4018","typeString":"enum IBridge.Status"}],"id":3368,"name":"_updateMessageStatus","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3714,"src":"13426:20:9","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$_t_enum$_Status_$4018_$returns$__$","typeString":"function (bytes32,enum IBridge.Status)"}},"id":3372,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13426:44:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3373,"nodeType":"ExpressionStatement","src":"13426:44:9"},{"expression":{"arguments":[{"arguments":[{"id":3378,"name":"msgHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3357,"src":"13528:7:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":3377,"name":"signalForFailedMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3571,"src":"13505:22:9","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_bytes32_$","typeString":"function (bytes32) pure returns (bytes32)"}},"id":3379,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13505:31:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":3374,"name":"signalService","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2530,"src":"13480:13:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISignalService_$6277","typeString":"contract ISignalService"}},"id":3376,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13494:10:9","memberName":"sendSignal","nodeType":"MemberAccess","referencedDeclaration":6232,"src":"13480:24:9","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_bytes32_$returns$_t_bytes32_$","typeString":"function (bytes32) external returns (bytes32)"}},"id":3380,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13480:57:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":3381,"nodeType":"ExpressionStatement","src":"13480:57:9"}]},"baseFunctions":[4121],"documentation":{"id":3328,"nodeType":"StructuredDocumentation","src":"12997:23:9","text":"@inheritdoc IBridge"},"functionSelector":"913b16cb","implemented":true,"kind":"function","modifiers":[{"arguments":[{"expression":{"id":3334,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3331,"src":"13108:8:9","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$4046_calldata_ptr","typeString":"struct IBridge.Message calldata"}},"id":3335,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13117:11:9","memberName":"destChainId","nodeType":"MemberAccess","referencedDeclaration":4037,"src":"13108:20:9","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}}],"id":3336,"kind":"modifierInvocation","modifierName":{"id":3333,"name":"sameChain","nameLocations":["13098:9:9"],"nodeType":"IdentifierPath","referencedDeclaration":2589,"src":"13098:9:9"},"nodeType":"ModifierInvocation","src":"13098:31:9"},{"arguments":[{"expression":{"id":3338,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3331,"src":"13148:8:9","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$4046_calldata_ptr","typeString":"struct IBridge.Message calldata"}},"id":3339,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13157:10:9","memberName":"srcChainId","nodeType":"MemberAccess","referencedDeclaration":4033,"src":"13148:19:9","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}}],"id":3340,"kind":"modifierInvocation","modifierName":{"id":3337,"name":"diffChain","nameLocations":["13138:9:9"],"nodeType":"IdentifierPath","referencedDeclaration":2599,"src":"13138:9:9"},"nodeType":"ModifierInvocation","src":"13138:30:9"},{"id":3342,"kind":"modifierInvocation","modifierName":{"id":3341,"name":"whenNotPaused","nameLocations":["13177:13:9"],"nodeType":"IdentifierPath","referencedDeclaration":4398,"src":"13177:13:9"},"nodeType":"ModifierInvocation","src":"13177:13:9"},{"id":3344,"kind":"modifierInvocation","modifierName":{"id":3343,"name":"nonReentrant","nameLocations":["13199:12:9"],"nodeType":"IdentifierPath","referencedDeclaration":4382,"src":"13199:12:9"},"nodeType":"ModifierInvocation","src":"13199:12:9"}],"name":"failMessage","nameLocation":"13034:11:9","parameters":{"id":3332,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3331,"mutability":"mutable","name":"_message","nameLocation":"13063:8:9","nodeType":"VariableDeclaration","scope":3383,"src":"13046:25:9","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$4046_calldata_ptr","typeString":"struct IBridge.Message"},"typeName":{"id":3330,"nodeType":"UserDefinedTypeName","pathNode":{"id":3329,"name":"Message","nameLocations":["13046:7:9"],"nodeType":"IdentifierPath","referencedDeclaration":4046,"src":"13046:7:9"},"referencedDeclaration":4046,"src":"13046:7:9","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$4046_storage_ptr","typeString":"struct IBridge.Message"}},"visibility":"internal"}],"src":"13045:27:9"},"returnParameters":{"id":3345,"nodeType":"ParameterList","parameters":[],"src":"13216:0:9"},"scope":4009,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":3412,"nodeType":"FunctionDefinition","src":"13578:250:9","nodes":[],"body":{"id":3411,"nodeType":"Block","src":"13657:171:9","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3396,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":3392,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3387,"src":"13671:8:9","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$4046_calldata_ptr","typeString":"struct IBridge.Message calldata"}},"id":3393,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13680:10:9","memberName":"srcChainId","nodeType":"MemberAccess","referencedDeclaration":4033,"src":"13671:19:9","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"id":3394,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"13694:5:9","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":3395,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13700:7:9","memberName":"chainid","nodeType":"MemberAccess","src":"13694:13:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13671:36:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3399,"nodeType":"IfStatement","src":"13667:54:9","trueBody":{"expression":{"hexValue":"66616c7365","id":3397,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"13716:5:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"functionReturnParameters":3391,"id":3398,"nodeType":"Return","src":"13709:12:9"}},{"expression":{"arguments":[{"arguments":[{"id":3404,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"13781:4:9","typeDescriptions":{"typeIdentifier":"t_contract$_Bridge_$4009","typeString":"contract Bridge"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Bridge_$4009","typeString":"contract Bridge"}],"id":3403,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"13773:7:9","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3402,"name":"address","nodeType":"ElementaryTypeName","src":"13773:7:9","typeDescriptions":{}}},"id":3405,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13773:13:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":3407,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3387,"src":"13809:8:9","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$4046_calldata_ptr","typeString":"struct IBridge.Message calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Message_$4046_calldata_ptr","typeString":"struct IBridge.Message calldata"}],"id":3406,"name":"hashMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3551,"src":"13797:11:9","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_struct$_Message_$4046_memory_ptr_$returns$_t_bytes32_$","typeString":"function (struct IBridge.Message memory) pure returns (bytes32)"}},"id":3408,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13797:21:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":3400,"name":"signalService","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2530,"src":"13738:13:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISignalService_$6277","typeString":"contract ISignalService"}},"id":3401,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13752:12:9","memberName":"isSignalSent","nodeType":"MemberAccess","referencedDeclaration":6268,"src":"13738:26:9","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$_t_bytes32_$returns$_t_bool_$","typeString":"function (address,bytes32) view external returns (bool)"}},"id":3409,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":["13767:4:9","13788:7:9"],"names":["_app","_signal"],"nodeType":"FunctionCall","src":"13738:83:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":3391,"id":3410,"nodeType":"Return","src":"13731:90:9"}]},"baseFunctions":[4137],"documentation":{"id":3384,"nodeType":"StructuredDocumentation","src":"13550:23:9","text":"@inheritdoc IBridge"},"functionSelector":"60620c6b","implemented":true,"kind":"function","modifiers":[],"name":"isMessageSent","nameLocation":"13587:13:9","parameters":{"id":3388,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3387,"mutability":"mutable","name":"_message","nameLocation":"13618:8:9","nodeType":"VariableDeclaration","scope":3412,"src":"13601:25:9","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$4046_calldata_ptr","typeString":"struct IBridge.Message"},"typeName":{"id":3386,"nodeType":"UserDefinedTypeName","pathNode":{"id":3385,"name":"Message","nameLocations":["13601:7:9"],"nodeType":"IdentifierPath","referencedDeclaration":4046,"src":"13601:7:9"},"referencedDeclaration":4046,"src":"13601:7:9","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$4046_storage_ptr","typeString":"struct IBridge.Message"}},"visibility":"internal"}],"src":"13600:27:9"},"returnParameters":{"id":3391,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3390,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3412,"src":"13651:4:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3389,"name":"bool","nodeType":"ElementaryTypeName","src":"13651:4:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"13650:6:9"},"scope":4009,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":3444,"nodeType":"FunctionDefinition","src":"14121:410:9","nodes":[],"body":{"id":3443,"nodeType":"Block","src":"14275:256:9","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3427,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":3423,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3416,"src":"14289:8:9","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$4046_calldata_ptr","typeString":"struct IBridge.Message calldata"}},"id":3424,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14298:10:9","memberName":"srcChainId","nodeType":"MemberAccess","referencedDeclaration":4033,"src":"14289:19:9","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"id":3425,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"14312:5:9","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":3426,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14318:7:9","memberName":"chainid","nodeType":"MemberAccess","src":"14312:13:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14289:36:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3430,"nodeType":"IfStatement","src":"14285:54:9","trueBody":{"expression":{"hexValue":"66616c7365","id":3428,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"14334:5:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"functionReturnParameters":3422,"id":3429,"nodeType":"Return","src":"14327:12:9"}},{"expression":{"arguments":[{"id":3432,"name":"signalService","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2530,"src":"14388:13:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISignalService_$6277","typeString":"contract ISignalService"}},{"arguments":[{"arguments":[{"id":3435,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3416,"src":"14450:8:9","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$4046_calldata_ptr","typeString":"struct IBridge.Message calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Message_$4046_calldata_ptr","typeString":"struct IBridge.Message calldata"}],"id":3434,"name":"hashMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3551,"src":"14438:11:9","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_struct$_Message_$4046_memory_ptr_$returns$_t_bytes32_$","typeString":"function (struct IBridge.Message memory) pure returns (bytes32)"}},"id":3436,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14438:21:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":3433,"name":"signalForFailedMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3571,"src":"14415:22:9","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_bytes32_$","typeString":"function (bytes32) pure returns (bytes32)"}},"id":3437,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14415:45:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":3438,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3416,"src":"14474:8:9","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$4046_calldata_ptr","typeString":"struct IBridge.Message calldata"}},"id":3439,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14483:11:9","memberName":"destChainId","nodeType":"MemberAccess","referencedDeclaration":4037,"src":"14474:20:9","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},{"id":3440,"name":"_proof","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3418,"src":"14508:6:9","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ISignalService_$6277","typeString":"contract ISignalService"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint64","typeString":"uint64"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"id":3431,"name":"_isSignalReceived","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3826,"src":"14357:17:9","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_contract$_ISignalService_$6277_$_t_bytes32_$_t_uint64_$_t_bytes_calldata_ptr_$returns$_t_bool_$","typeString":"function (contract ISignalService,bytes32,uint64,bytes calldata) view returns (bool)"}},"id":3441,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14357:167:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":3422,"id":3442,"nodeType":"Return","src":"14350:174:9"}]},"documentation":{"id":3413,"nodeType":"StructuredDocumentation","src":"13834:282:9","text":"@notice Checks if a msgHash has failed on its destination chain.\n This is the 'readonly' version of proveMessageFailed.\n @param _message The message.\n @param _proof The merkle inclusion proof.\n @return true if the message has failed, false otherwise."},"functionSelector":"5862f6e1","implemented":true,"kind":"function","modifiers":[],"name":"isMessageFailed","nameLocation":"14130:15:9","parameters":{"id":3419,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3416,"mutability":"mutable","name":"_message","nameLocation":"14172:8:9","nodeType":"VariableDeclaration","scope":3444,"src":"14155:25:9","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$4046_calldata_ptr","typeString":"struct IBridge.Message"},"typeName":{"id":3415,"nodeType":"UserDefinedTypeName","pathNode":{"id":3414,"name":"Message","nameLocations":["14155:7:9"],"nodeType":"IdentifierPath","referencedDeclaration":4046,"src":"14155:7:9"},"referencedDeclaration":4046,"src":"14155:7:9","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$4046_storage_ptr","typeString":"struct IBridge.Message"}},"visibility":"internal"},{"constant":false,"id":3418,"mutability":"mutable","name":"_proof","nameLocation":"14205:6:9","nodeType":"VariableDeclaration","scope":3444,"src":"14190:21:9","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":3417,"name":"bytes","nodeType":"ElementaryTypeName","src":"14190:5:9","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"14145:72:9"},"returnParameters":{"id":3422,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3421,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3444,"src":"14265:4:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3420,"name":"bool","nodeType":"ElementaryTypeName","src":"14265:4:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"14264:6:9"},"scope":4009,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":3474,"nodeType":"FunctionDefinition","src":"14835:329:9","nodes":[],"body":{"id":3473,"nodeType":"Block","src":"14991:173:9","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3459,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":3455,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3448,"src":"15005:8:9","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$4046_calldata_ptr","typeString":"struct IBridge.Message calldata"}},"id":3456,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15014:11:9","memberName":"destChainId","nodeType":"MemberAccess","referencedDeclaration":4037,"src":"15005:20:9","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"id":3457,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"15029:5:9","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":3458,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15035:7:9","memberName":"chainid","nodeType":"MemberAccess","src":"15029:13:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15005:37:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3462,"nodeType":"IfStatement","src":"15001:55:9","trueBody":{"expression":{"hexValue":"66616c7365","id":3460,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"15051:5:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"functionReturnParameters":3454,"id":3461,"nodeType":"Return","src":"15044:12:9"}},{"expression":{"arguments":[{"id":3464,"name":"signalService","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2530,"src":"15091:13:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISignalService_$6277","typeString":"contract ISignalService"}},{"arguments":[{"id":3466,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3448,"src":"15118:8:9","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$4046_calldata_ptr","typeString":"struct IBridge.Message calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Message_$4046_calldata_ptr","typeString":"struct IBridge.Message calldata"}],"id":3465,"name":"hashMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3551,"src":"15106:11:9","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_struct$_Message_$4046_memory_ptr_$returns$_t_bytes32_$","typeString":"function (struct IBridge.Message memory) pure returns (bytes32)"}},"id":3467,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15106:21:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":3468,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3448,"src":"15129:8:9","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$4046_calldata_ptr","typeString":"struct IBridge.Message calldata"}},"id":3469,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15138:10:9","memberName":"srcChainId","nodeType":"MemberAccess","referencedDeclaration":4033,"src":"15129:19:9","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},{"id":3470,"name":"_proof","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3450,"src":"15150:6:9","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ISignalService_$6277","typeString":"contract ISignalService"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint64","typeString":"uint64"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"id":3463,"name":"_isSignalReceived","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3826,"src":"15073:17:9","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_contract$_ISignalService_$6277_$_t_bytes32_$_t_uint64_$_t_bytes_calldata_ptr_$returns$_t_bool_$","typeString":"function (contract ISignalService,bytes32,uint64,bytes calldata) view returns (bool)"}},"id":3471,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15073:84:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":3454,"id":3472,"nodeType":"Return","src":"15066:91:9"}]},"documentation":{"id":3445,"nodeType":"StructuredDocumentation","src":"14537:293:9","text":"@notice Checks if a msgHash has been received on its source chain.\n This is the 'readonly' version of proveMessageReceived.\n @param _message The message.\n @param _proof The merkle inclusion proof.\n @return true if the message has been received, false otherwise."},"functionSelector":"b8acae0e","implemented":true,"kind":"function","modifiers":[],"name":"isMessageReceived","nameLocation":"14844:17:9","parameters":{"id":3451,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3448,"mutability":"mutable","name":"_message","nameLocation":"14888:8:9","nodeType":"VariableDeclaration","scope":3474,"src":"14871:25:9","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$4046_calldata_ptr","typeString":"struct IBridge.Message"},"typeName":{"id":3447,"nodeType":"UserDefinedTypeName","pathNode":{"id":3446,"name":"Message","nameLocations":["14871:7:9"],"nodeType":"IdentifierPath","referencedDeclaration":4046,"src":"14871:7:9"},"referencedDeclaration":4046,"src":"14871:7:9","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$4046_storage_ptr","typeString":"struct IBridge.Message"}},"visibility":"internal"},{"constant":false,"id":3450,"mutability":"mutable","name":"_proof","nameLocation":"14921:6:9","nodeType":"VariableDeclaration","scope":3474,"src":"14906:21:9","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":3449,"name":"bytes","nodeType":"ElementaryTypeName","src":"14906:5:9","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"14861:72:9"},"returnParameters":{"id":3454,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3453,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3474,"src":"14981:4:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3452,"name":"bool","nodeType":"ElementaryTypeName","src":"14981:4:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"14980:6:9"},"scope":4009,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":3503,"nodeType":"FunctionDefinition","src":"15412:249:9","nodes":[],"body":{"id":3502,"nodeType":"Block","src":"15542:119:9","nodes":[],"statements":[{"expression":{"id":3491,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3484,"name":"destBridge_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3482,"src":"15552:11:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":3486,"name":"_chainId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3477,"src":"15574:8:9","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},{"expression":{"id":3487,"name":"LibNames","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5845,"src":"15584:8:9","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibNames_$5845_$","typeString":"type(library LibNames)"}},"id":3488,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"15593:8:9","memberName":"B_BRIDGE","nodeType":"MemberAccess","referencedDeclaration":5796,"src":"15584:17:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"hexValue":"74727565","id":3489,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"15603:4:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint64","typeString":"uint64"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":3485,"name":"resolve","nodeType":"Identifier","overloadedDeclarations":[4899,4921],"referencedDeclaration":4899,"src":"15566:7:9","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint64_$_t_bytes32_$_t_bool_$returns$_t_address_$","typeString":"function (uint64,bytes32,bool) view returns (address)"}},"id":3490,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15566:42:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"15552:56:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":3492,"nodeType":"ExpressionStatement","src":"15552:56:9"},{"expression":{"id":3500,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3493,"name":"enabled_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3480,"src":"15618:8:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":3499,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3494,"name":"destBridge_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3482,"src":"15629:11:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":3497,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15652:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":3496,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"15644:7:9","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3495,"name":"address","nodeType":"ElementaryTypeName","src":"15644:7:9","typeDescriptions":{}}},"id":3498,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15644:10:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"15629:25:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"15618:36:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3501,"nodeType":"ExpressionStatement","src":"15618:36:9"}]},"documentation":{"id":3475,"nodeType":"StructuredDocumentation","src":"15170:237:9","text":"@notice Checks if the destination chain is enabled.\n @param _chainId The destination chain ID.\n @return enabled_ True if the destination chain is enabled.\n @return destBridge_ The bridge of the destination chain."},"functionSelector":"8e3881a9","implemented":true,"kind":"function","modifiers":[],"name":"isDestChainEnabled","nameLocation":"15421:18:9","parameters":{"id":3478,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3477,"mutability":"mutable","name":"_chainId","nameLocation":"15447:8:9","nodeType":"VariableDeclaration","scope":3503,"src":"15440:15:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":3476,"name":"uint64","nodeType":"ElementaryTypeName","src":"15440:6:9","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"src":"15439:17:9"},"returnParameters":{"id":3483,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3480,"mutability":"mutable","name":"enabled_","nameLocation":"15507:8:9","nodeType":"VariableDeclaration","scope":3503,"src":"15502:13:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3479,"name":"bool","nodeType":"ElementaryTypeName","src":"15502:4:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":3482,"mutability":"mutable","name":"destBridge_","nameLocation":"15525:11:9","nodeType":"VariableDeclaration","scope":3503,"src":"15517:19:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3481,"name":"address","nodeType":"ElementaryTypeName","src":"15517:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"15501:36:9"},"scope":4009,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":3533,"nodeType":"FunctionDefinition","src":"15737:225:9","nodes":[],"body":{"id":3532,"nodeType":"Block","src":"15800:162:9","nodes":[],"statements":[{"expression":{"id":3513,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3510,"name":"ctx_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3508,"src":"15810:4:9","typeDescriptions":{"typeIdentifier":"t_struct$_Context_$4053_memory_ptr","typeString":"struct IBridge.Context memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[],"expression":{"argumentTypes":[],"id":3511,"name":"_loadContext","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3789,"src":"15817:12:9","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Context_$4053_memory_ptr_$","typeString":"function () view returns (struct IBridge.Context memory)"}},"id":3512,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15817:14:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Context_$4053_memory_ptr","typeString":"struct IBridge.Context memory"}},"src":"15810:21:9","typeDescriptions":{"typeIdentifier":"t_struct$_Context_$4053_memory_ptr","typeString":"struct IBridge.Context memory"}},"id":3514,"nodeType":"ExpressionStatement","src":"15810:21:9"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":3526,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":3518,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":3515,"name":"ctx_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3508,"src":"15845:4:9","typeDescriptions":{"typeIdentifier":"t_struct$_Context_$4053_memory_ptr","typeString":"struct IBridge.Context memory"}},"id":3516,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"15850:7:9","memberName":"msgHash","nodeType":"MemberAccess","referencedDeclaration":4048,"src":"15845:12:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":3517,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15861:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"15845:17:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":3525,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":3519,"name":"ctx_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3508,"src":"15866:4:9","typeDescriptions":{"typeIdentifier":"t_struct$_Context_$4053_memory_ptr","typeString":"struct IBridge.Context memory"}},"id":3520,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"15871:7:9","memberName":"msgHash","nodeType":"MemberAccess","referencedDeclaration":4048,"src":"15866:12:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"id":3523,"name":"_PLACEHOLDER","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2527,"src":"15890:12:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3522,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"15882:7:9","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":3521,"name":"bytes32","nodeType":"ElementaryTypeName","src":"15882:7:9","typeDescriptions":{}}},"id":3524,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15882:21:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"15866:37:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"15845:58:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3531,"nodeType":"IfStatement","src":"15841:115:9","trueBody":{"id":3530,"nodeType":"Block","src":"15905:51:9","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":3527,"name":"B_INVALID_CONTEXT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2559,"src":"15926:17:9","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":3528,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15926:19:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":3529,"nodeType":"RevertStatement","src":"15919:26:9"}]}}]},"baseFunctions":[4128],"documentation":{"id":3504,"nodeType":"StructuredDocumentation","src":"15667:65:9","text":"@notice Gets the current context.\n @inheritdoc IBridge"},"functionSelector":"d0496d6a","implemented":true,"kind":"function","modifiers":[],"name":"context","nameLocation":"15746:7:9","parameters":{"id":3505,"nodeType":"ParameterList","parameters":[],"src":"15753:2:9"},"returnParameters":{"id":3509,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3508,"mutability":"mutable","name":"ctx_","nameLocation":"15794:4:9","nodeType":"VariableDeclaration","scope":3533,"src":"15779:19:9","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Context_$4053_memory_ptr","typeString":"struct IBridge.Context"},"typeName":{"id":3507,"nodeType":"UserDefinedTypeName","pathNode":{"id":3506,"name":"Context","nameLocations":["15779:7:9"],"nodeType":"IdentifierPath","referencedDeclaration":4053,"src":"15779:7:9"},"referencedDeclaration":4053,"src":"15779:7:9","typeDescriptions":{"typeIdentifier":"t_struct$_Context_$4053_storage_ptr","typeString":"struct IBridge.Context"}},"visibility":"internal"}],"src":"15778:21:9"},"scope":4009,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":3551,"nodeType":"FunctionDefinition","src":"15996:148:9","nodes":[],"body":{"id":3550,"nodeType":"Block","src":"16072:72:9","nodes":[],"statements":[{"expression":{"arguments":[{"arguments":[{"hexValue":"5441494b4f5f4d455353414745","id":3545,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"16110:15:9","typeDescriptions":{"typeIdentifier":"t_stringliteral_1a4473b8c75893734d8c6977cd1e546423701f3f5c26bb840c8dbeabf02c3f88","typeString":"literal_string \"TAIKO_MESSAGE\""},"value":"TAIKO_MESSAGE"},{"id":3546,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3537,"src":"16127:8:9","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$4046_memory_ptr","typeString":"struct IBridge.Message memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_1a4473b8c75893734d8c6977cd1e546423701f3f5c26bb840c8dbeabf02c3f88","typeString":"literal_string \"TAIKO_MESSAGE\""},{"typeIdentifier":"t_struct$_Message_$4046_memory_ptr","typeString":"struct IBridge.Message memory"}],"expression":{"id":3543,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"16099:3:9","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":3544,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"16103:6:9","memberName":"encode","nodeType":"MemberAccess","src":"16099:10:9","typeDescriptions":{"typeIdentifier":"t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":3547,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16099:37:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":3542,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"16089:9:9","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":3548,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16089:48:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":3541,"id":3549,"nodeType":"Return","src":"16082:55:9"}]},"baseFunctions":[4152],"documentation":{"id":3534,"nodeType":"StructuredDocumentation","src":"15968:23:9","text":"@inheritdoc IBridge"},"functionSelector":"c012fa77","implemented":true,"kind":"function","modifiers":[],"name":"hashMessage","nameLocation":"16005:11:9","parameters":{"id":3538,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3537,"mutability":"mutable","name":"_message","nameLocation":"16032:8:9","nodeType":"VariableDeclaration","scope":3551,"src":"16017:23:9","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$4046_memory_ptr","typeString":"struct IBridge.Message"},"typeName":{"id":3536,"nodeType":"UserDefinedTypeName","pathNode":{"id":3535,"name":"Message","nameLocations":["16017:7:9"],"nodeType":"IdentifierPath","referencedDeclaration":4046,"src":"16017:7:9"},"referencedDeclaration":4046,"src":"16017:7:9","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$4046_storage_ptr","typeString":"struct IBridge.Message"}},"visibility":"internal"}],"src":"16016:25:9"},"returnParameters":{"id":3541,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3540,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3551,"src":"16063:7:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3539,"name":"bytes32","nodeType":"ElementaryTypeName","src":"16063:7:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"16062:9:9"},"scope":4009,"stateMutability":"pure","virtual":false,"visibility":"public"},{"id":3571,"nodeType":"FunctionDefinition","src":"16325:146:9","nodes":[],"body":{"id":3570,"nodeType":"Block","src":"16405:66:9","nodes":[],"statements":[{"expression":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":3568,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3559,"name":"_msgHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3554,"src":"16422:8:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"arguments":[{"arguments":[{"expression":{"id":3564,"name":"Status","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4018,"src":"16449:6:9","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Status_$4018_$","typeString":"type(enum IBridge.Status)"}},"id":3565,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"16456:6:9","memberName":"FAILED","nodeType":"MemberAccess","referencedDeclaration":4016,"src":"16449:13:9","typeDescriptions":{"typeIdentifier":"t_enum$_Status_$4018","typeString":"enum IBridge.Status"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Status_$4018","typeString":"enum IBridge.Status"}],"id":3563,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"16441:7:9","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":3562,"name":"uint256","nodeType":"ElementaryTypeName","src":"16441:7:9","typeDescriptions":{}}},"id":3566,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16441:22:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3561,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"16433:7:9","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":3560,"name":"bytes32","nodeType":"ElementaryTypeName","src":"16433:7:9","typeDescriptions":{}}},"id":3567,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16433:31:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"16422:42:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":3558,"id":3569,"nodeType":"Return","src":"16415:49:9"}]},"documentation":{"id":3552,"nodeType":"StructuredDocumentation","src":"16150:170:9","text":"@notice Returns a signal representing a failed/recalled message.\n @param _msgHash The message hash.\n @return The failed representation of it as bytes32."},"functionSelector":"d1aaa5df","implemented":true,"kind":"function","modifiers":[],"name":"signalForFailedMessage","nameLocation":"16334:22:9","parameters":{"id":3555,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3554,"mutability":"mutable","name":"_msgHash","nameLocation":"16365:8:9","nodeType":"VariableDeclaration","scope":3571,"src":"16357:16:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3553,"name":"bytes32","nodeType":"ElementaryTypeName","src":"16357:7:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"16356:18:9"},"returnParameters":{"id":3558,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3557,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3571,"src":"16396:7:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3556,"name":"bytes32","nodeType":"ElementaryTypeName","src":"16396:7:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"16395:9:9"},"scope":4009,"stateMutability":"pure","virtual":false,"visibility":"public"},{"id":3586,"nodeType":"FunctionDefinition","src":"16688:150:9","nodes":[],"body":{"id":3585,"nodeType":"Block","src":"16768:70:9","nodes":[],"statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint32","typeString":"uint32"},"id":3583,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":3580,"name":"dataLength","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3574,"src":"16806:10:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3579,"name":"_messageCalldataCost","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3959,"src":"16785:20:9","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint32_$","typeString":"function (uint256) pure returns (uint32)"}},"id":3581,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16785:32:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":3582,"name":"GAS_RESERVE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2503,"src":"16820:11:9","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"16785:46:9","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"functionReturnParameters":3578,"id":3584,"nodeType":"Return","src":"16778:53:9"}]},"documentation":{"id":3572,"nodeType":"StructuredDocumentation","src":"16477:206:9","text":"@notice Returns the minimal gas limit required for sending a given message.\n @param dataLength The length of message.data.\n @return The minimal gas limit required for sending this message."},"functionSelector":"7cbadfaa","implemented":true,"kind":"function","modifiers":[],"name":"getMessageMinGasLimit","nameLocation":"16697:21:9","parameters":{"id":3575,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3574,"mutability":"mutable","name":"dataLength","nameLocation":"16727:10:9","nodeType":"VariableDeclaration","scope":3586,"src":"16719:18:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3573,"name":"uint256","nodeType":"ElementaryTypeName","src":"16719:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"16718:20:9"},"returnParameters":{"id":3578,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3577,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3586,"src":"16760:6:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":3576,"name":"uint32","nodeType":"ElementaryTypeName","src":"16760:6:9","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"src":"16759:8:9"},"scope":4009,"stateMutability":"pure","virtual":false,"visibility":"public"},{"id":3684,"nodeType":"FunctionDefinition","src":"17315:949:9","nodes":[],"body":{"id":3683,"nodeType":"Block","src":"17528:736:9","nodes":[],"statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":3608,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":3602,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3590,"src":"17545:8:9","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$4046_calldata_ptr","typeString":"struct IBridge.Message calldata"}},"id":3603,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"17554:4:9","memberName":"from","nodeType":"MemberAccess","referencedDeclaration":4031,"src":"17545:13:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"id":3606,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"17570:4:9","typeDescriptions":{"typeIdentifier":"t_contract$_Bridge_$4009","typeString":"contract Bridge"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Bridge_$4009","typeString":"contract Bridge"}],"id":3605,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"17562:7:9","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3604,"name":"address","nodeType":"ElementaryTypeName","src":"17562:7:9","typeDescriptions":{}}},"id":3607,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17562:13:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"17545:30:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":3601,"name":"assert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-3,"src":"17538:6:9","typeDescriptions":{"typeIdentifier":"t_function_assert_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":3609,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17538:38:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3610,"nodeType":"ExpressionStatement","src":"17538:38:9"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":3620,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3614,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":3611,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3590,"src":"17591:8:9","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$4046_calldata_ptr","typeString":"struct IBridge.Message calldata"}},"id":3612,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"17600:5:9","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":4043,"src":"17591:14:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":3613,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17609:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"17591:19:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3619,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":3615,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3590,"src":"17614:8:9","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$4046_calldata_ptr","typeString":"struct IBridge.Message calldata"}},"id":3616,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"17623:4:9","memberName":"data","nodeType":"MemberAccess","referencedDeclaration":4045,"src":"17614:13:9","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"id":3617,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"17628:6:9","memberName":"length","nodeType":"MemberAccess","src":"17614:20:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":3618,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17638:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"17614:25:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"17591:48:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3623,"nodeType":"IfStatement","src":"17587:65:9","trueBody":{"expression":{"hexValue":"74727565","id":3621,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"17648:4:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":3600,"id":3622,"nodeType":"Return","src":"17641:11:9"}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3626,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3624,"name":"_gasLimit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3594,"src":"17667:9:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":3625,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17680:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"17667:14:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3629,"nodeType":"IfStatement","src":"17663:32:9","trueBody":{"expression":{"hexValue":"66616c7365","id":3627,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"17690:5:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"functionReturnParameters":3600,"id":3628,"nodeType":"Return","src":"17683:12:9"}},{"expression":{"arguments":[{"id":3631,"name":"_msgHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3592,"src":"17720:8:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":3632,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3590,"src":"17730:8:9","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$4046_calldata_ptr","typeString":"struct IBridge.Message calldata"}},"id":3633,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"17739:4:9","memberName":"from","nodeType":"MemberAccess","referencedDeclaration":4031,"src":"17730:13:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":3634,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3590,"src":"17745:8:9","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$4046_calldata_ptr","typeString":"struct IBridge.Message calldata"}},"id":3635,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"17754:10:9","memberName":"srcChainId","nodeType":"MemberAccess","referencedDeclaration":4033,"src":"17745:19:9","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint64","typeString":"uint64"}],"id":3630,"name":"_storeContext","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3733,"src":"17706:13:9","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$_t_address_$_t_uint64_$returns$__$","typeString":"function (bytes32,address,uint64)"}},"id":3636,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17706:59:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3637,"nodeType":"ExpressionStatement","src":"17706:59:9"},{"assignments":[3639],"declarations":[{"constant":false,"id":3639,"mutability":"mutable","name":"to","nameLocation":"17784:2:9","nodeType":"VariableDeclaration","scope":3683,"src":"17776:10:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3638,"name":"address","nodeType":"ElementaryTypeName","src":"17776:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":3642,"initialValue":{"expression":{"id":3640,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3590,"src":"17789:8:9","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$4046_calldata_ptr","typeString":"struct IBridge.Message calldata"}},"id":3641,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"17798:2:9","memberName":"to","nodeType":"MemberAccess","referencedDeclaration":4041,"src":"17789:11:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"17776:24:9"},{"assignments":[3644],"declarations":[{"constant":false,"id":3644,"mutability":"mutable","name":"value","nameLocation":"17818:5:9","nodeType":"VariableDeclaration","scope":3683,"src":"17810:13:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3643,"name":"uint256","nodeType":"ElementaryTypeName","src":"17810:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3647,"initialValue":{"expression":{"id":3645,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3590,"src":"17826:8:9","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$4046_calldata_ptr","typeString":"struct IBridge.Message calldata"}},"id":3646,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"17835:5:9","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":4043,"src":"17826:14:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"17810:30:9"},{"assignments":[3649],"declarations":[{"constant":false,"id":3649,"mutability":"mutable","name":"data","nameLocation":"17863:4:9","nodeType":"VariableDeclaration","scope":3683,"src":"17850:17:9","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":3648,"name":"bytes","nodeType":"ElementaryTypeName","src":"17850:5:9","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":3652,"initialValue":{"expression":{"id":3650,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3590,"src":"17870:8:9","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$4046_calldata_ptr","typeString":"struct IBridge.Message calldata"}},"id":3651,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"17879:4:9","memberName":"data","nodeType":"MemberAccess","referencedDeclaration":4045,"src":"17870:13:9","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"nodeType":"VariableDeclarationStatement","src":"17850:33:9"},{"assignments":[3654],"declarations":[{"constant":false,"id":3654,"mutability":"mutable","name":"gasLeft","nameLocation":"17901:7:9","nodeType":"VariableDeclaration","scope":3683,"src":"17893:15:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3653,"name":"uint256","nodeType":"ElementaryTypeName","src":"17893:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3655,"nodeType":"VariableDeclarationStatement","src":"17893:15:9"},{"AST":{"nativeSrc":"17928:127:9","nodeType":"YulBlock","src":"17928:127:9","statements":[{"nativeSrc":"17942:74:9","nodeType":"YulAssignment","src":"17942:74:9","value":{"arguments":[{"name":"_gasLimit","nativeSrc":"17959:9:9","nodeType":"YulIdentifier","src":"17959:9:9"},{"name":"to","nativeSrc":"17970:2:9","nodeType":"YulIdentifier","src":"17970:2:9"},{"name":"value","nativeSrc":"17974:5:9","nodeType":"YulIdentifier","src":"17974:5:9"},{"arguments":[{"name":"data","nativeSrc":"17985:4:9","nodeType":"YulIdentifier","src":"17985:4:9"},{"kind":"number","nativeSrc":"17991:4:9","nodeType":"YulLiteral","src":"17991:4:9","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"17981:3:9","nodeType":"YulIdentifier","src":"17981:3:9"},"nativeSrc":"17981:15:9","nodeType":"YulFunctionCall","src":"17981:15:9"},{"arguments":[{"name":"data","nativeSrc":"18004:4:9","nodeType":"YulIdentifier","src":"18004:4:9"}],"functionName":{"name":"mload","nativeSrc":"17998:5:9","nodeType":"YulIdentifier","src":"17998:5:9"},"nativeSrc":"17998:11:9","nodeType":"YulFunctionCall","src":"17998:11:9"},{"kind":"number","nativeSrc":"18011:1:9","nodeType":"YulLiteral","src":"18011:1:9","type":"","value":"0"},{"kind":"number","nativeSrc":"18014:1:9","nodeType":"YulLiteral","src":"18014:1:9","type":"","value":"0"}],"functionName":{"name":"call","nativeSrc":"17954:4:9","nodeType":"YulIdentifier","src":"17954:4:9"},"nativeSrc":"17954:62:9","nodeType":"YulFunctionCall","src":"17954:62:9"},"variableNames":[{"name":"success_","nativeSrc":"17942:8:9","nodeType":"YulIdentifier","src":"17942:8:9"}]},{"nativeSrc":"18029:16:9","nodeType":"YulAssignment","src":"18029:16:9","value":{"arguments":[],"functionName":{"name":"gas","nativeSrc":"18040:3:9","nodeType":"YulIdentifier","src":"18040:3:9"},"nativeSrc":"18040:5:9","nodeType":"YulFunctionCall","src":"18040:5:9"},"variableNames":[{"name":"gasLeft","nativeSrc":"18029:7:9","nodeType":"YulIdentifier","src":"18029:7:9"}]}]},"evmVersion":"shanghai","externalReferences":[{"declaration":3594,"isOffset":false,"isSlot":false,"src":"17959:9:9","valueSize":1},{"declaration":3649,"isOffset":false,"isSlot":false,"src":"17985:4:9","valueSize":1},{"declaration":3649,"isOffset":false,"isSlot":false,"src":"18004:4:9","valueSize":1},{"declaration":3654,"isOffset":false,"isSlot":false,"src":"18029:7:9","valueSize":1},{"declaration":3599,"isOffset":false,"isSlot":false,"src":"17942:8:9","valueSize":1},{"declaration":3639,"isOffset":false,"isSlot":false,"src":"17970:2:9","valueSize":1},{"declaration":3644,"isOffset":false,"isSlot":false,"src":"17974:5:9","valueSize":1}],"id":3656,"nodeType":"InlineAssembly","src":"17919:136:9"},{"condition":{"id":3657,"name":"_shouldCheckForwardedGas","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3596,"src":"18069:24:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3664,"nodeType":"IfStatement","src":"18065:93:9","trueBody":{"id":3663,"nodeType":"Block","src":"18095:63:9","statements":[{"expression":{"arguments":[{"id":3659,"name":"gasLeft","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3654,"src":"18128:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":3660,"name":"_gasLimit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3594,"src":"18137:9:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3658,"name":"_checkForwardedGas","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3976,"src":"18109:18:9","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256) pure"}},"id":3661,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18109:38:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3662,"nodeType":"ExpressionStatement","src":"18109:38:9"}]}},{"expression":{"arguments":[{"arguments":[{"id":3668,"name":"_PLACEHOLDER","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2527,"src":"18189:12:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3667,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"18181:7:9","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":3666,"name":"bytes32","nodeType":"ElementaryTypeName","src":"18181:7:9","typeDescriptions":{}}},"id":3669,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18181:21:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"arguments":[{"arguments":[{"id":3674,"name":"_PLACEHOLDER","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2527,"src":"18220:12:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3673,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"18212:7:9","typeDescriptions":{"typeIdentifier":"t_type$_t_uint160_$","typeString":"type(uint160)"},"typeName":{"id":3672,"name":"uint160","nodeType":"ElementaryTypeName","src":"18212:7:9","typeDescriptions":{}}},"id":3675,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18212:21:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"}],"id":3671,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"18204:7:9","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3670,"name":"address","nodeType":"ElementaryTypeName","src":"18204:7:9","typeDescriptions":{}}},"id":3676,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18204:30:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":3679,"name":"_PLACEHOLDER","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2527,"src":"18243:12:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3678,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"18236:6:9","typeDescriptions":{"typeIdentifier":"t_type$_t_uint64_$","typeString":"type(uint64)"},"typeName":{"id":3677,"name":"uint64","nodeType":"ElementaryTypeName","src":"18236:6:9","typeDescriptions":{}}},"id":3680,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18236:20:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint64","typeString":"uint64"}],"id":3665,"name":"_storeContext","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3733,"src":"18167:13:9","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$_t_address_$_t_uint64_$returns$__$","typeString":"function (bytes32,address,uint64)"}},"id":3681,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18167:90:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3682,"nodeType":"ExpressionStatement","src":"18167:90:9"}]},"documentation":{"id":3587,"nodeType":"StructuredDocumentation","src":"16844:466:9","text":"@notice Invokes a call message on the Bridge.\n @param _message The call message to be invoked.\n @param _msgHash The hash of the message.\n @param _shouldCheckForwardedGas True to check gasleft is sufficient for target function\n invocation.\n @return success_ A boolean value indicating whether the message call was successful.\n @dev This function updates the context in the state before and after the\n message call."},"implemented":true,"kind":"function","modifiers":[],"name":"_invokeMessageCall","nameLocation":"17324:18:9","parameters":{"id":3597,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3590,"mutability":"mutable","name":"_message","nameLocation":"17369:8:9","nodeType":"VariableDeclaration","scope":3684,"src":"17352:25:9","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$4046_calldata_ptr","typeString":"struct IBridge.Message"},"typeName":{"id":3589,"nodeType":"UserDefinedTypeName","pathNode":{"id":3588,"name":"Message","nameLocations":["17352:7:9"],"nodeType":"IdentifierPath","referencedDeclaration":4046,"src":"17352:7:9"},"referencedDeclaration":4046,"src":"17352:7:9","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$4046_storage_ptr","typeString":"struct IBridge.Message"}},"visibility":"internal"},{"constant":false,"id":3592,"mutability":"mutable","name":"_msgHash","nameLocation":"17395:8:9","nodeType":"VariableDeclaration","scope":3684,"src":"17387:16:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3591,"name":"bytes32","nodeType":"ElementaryTypeName","src":"17387:7:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":3594,"mutability":"mutable","name":"_gasLimit","nameLocation":"17421:9:9","nodeType":"VariableDeclaration","scope":3684,"src":"17413:17:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3593,"name":"uint256","nodeType":"ElementaryTypeName","src":"17413:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3596,"mutability":"mutable","name":"_shouldCheckForwardedGas","nameLocation":"17445:24:9","nodeType":"VariableDeclaration","scope":3684,"src":"17440:29:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3595,"name":"bool","nodeType":"ElementaryTypeName","src":"17440:4:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"17342:133:9"},"returnParameters":{"id":3600,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3599,"mutability":"mutable","name":"success_","nameLocation":"17514:8:9","nodeType":"VariableDeclaration","scope":3684,"src":"17509:13:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3598,"name":"bool","nodeType":"ElementaryTypeName","src":"17509:4:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"17508:15:9"},"scope":4009,"stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"id":3714,"nodeType":"FunctionDefinition","src":"18568:251:9","nodes":[],"body":{"id":3713,"nodeType":"Block","src":"18640:179:9","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_enum$_Status_$4018","typeString":"enum IBridge.Status"},"id":3697,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":3693,"name":"messageStatus","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2541,"src":"18654:13:9","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_enum$_Status_$4018_$","typeString":"mapping(bytes32 => enum IBridge.Status)"}},"id":3695,"indexExpression":{"id":3694,"name":"_msgHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3687,"src":"18668:8:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"18654:23:9","typeDescriptions":{"typeIdentifier":"t_enum$_Status_$4018","typeString":"enum IBridge.Status"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":3696,"name":"_status","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3690,"src":"18681:7:9","typeDescriptions":{"typeIdentifier":"t_enum$_Status_$4018","typeString":"enum IBridge.Status"}},"src":"18654:34:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3701,"nodeType":"IfStatement","src":"18650:65:9","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":3698,"name":"B_INVALID_STATUS","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2565,"src":"18697:16:9","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":3699,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18697:18:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":3700,"nodeType":"RevertStatement","src":"18690:25:9"}},{"expression":{"id":3706,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":3702,"name":"messageStatus","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2541,"src":"18725:13:9","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_enum$_Status_$4018_$","typeString":"mapping(bytes32 => enum IBridge.Status)"}},"id":3704,"indexExpression":{"id":3703,"name":"_msgHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3687,"src":"18739:8:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"18725:23:9","typeDescriptions":{"typeIdentifier":"t_enum$_Status_$4018","typeString":"enum IBridge.Status"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":3705,"name":"_status","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3690,"src":"18751:7:9","typeDescriptions":{"typeIdentifier":"t_enum$_Status_$4018","typeString":"enum IBridge.Status"}},"src":"18725:33:9","typeDescriptions":{"typeIdentifier":"t_enum$_Status_$4018","typeString":"enum IBridge.Status"}},"id":3707,"nodeType":"ExpressionStatement","src":"18725:33:9"},{"eventCall":{"arguments":[{"id":3709,"name":"_msgHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3687,"src":"18794:8:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":3710,"name":"_status","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3690,"src":"18804:7:9","typeDescriptions":{"typeIdentifier":"t_enum$_Status_$4018","typeString":"enum IBridge.Status"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_enum$_Status_$4018","typeString":"enum IBridge.Status"}],"id":3708,"name":"MessageStatusChanged","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4069,"src":"18773:20:9","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$_t_enum$_Status_$4018_$returns$__$","typeString":"function (bytes32,enum IBridge.Status)"}},"id":3711,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18773:39:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3712,"nodeType":"EmitStatement","src":"18768:44:9"}]},"documentation":{"id":3685,"nodeType":"StructuredDocumentation","src":"18270:293:9","text":"@notice Updates the status of a bridge message.\n @dev If the new status is different from the current status in the\n mapping, the status is updated and an event is emitted.\n @param _msgHash The hash of the message.\n @param _status The new status of the message."},"implemented":true,"kind":"function","modifiers":[],"name":"_updateMessageStatus","nameLocation":"18577:20:9","parameters":{"id":3691,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3687,"mutability":"mutable","name":"_msgHash","nameLocation":"18606:8:9","nodeType":"VariableDeclaration","scope":3714,"src":"18598:16:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3686,"name":"bytes32","nodeType":"ElementaryTypeName","src":"18598:7:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":3690,"mutability":"mutable","name":"_status","nameLocation":"18623:7:9","nodeType":"VariableDeclaration","scope":3714,"src":"18616:14:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Status_$4018","typeString":"enum IBridge.Status"},"typeName":{"id":3689,"nodeType":"UserDefinedTypeName","pathNode":{"id":3688,"name":"Status","nameLocations":["18616:6:9"],"nodeType":"IdentifierPath","referencedDeclaration":4018,"src":"18616:6:9"},"referencedDeclaration":4018,"src":"18616:6:9","typeDescriptions":{"typeIdentifier":"t_enum$_Status_$4018","typeString":"enum IBridge.Status"}},"visibility":"internal"}],"src":"18597:34:9"},"returnParameters":{"id":3692,"nodeType":"ParameterList","parameters":[],"src":"18640:0:9"},"scope":4009,"stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"id":3733,"nodeType":"FunctionDefinition","src":"18998:155:9","nodes":[],"body":{"id":3732,"nodeType":"Block","src":"19091:62:9","nodes":[],"statements":[{"expression":{"id":3730,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3724,"name":"__ctx","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2545,"src":"19101:5:9","typeDescriptions":{"typeIdentifier":"t_struct$_Context_$4053_storage","typeString":"struct IBridge.Context storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":3726,"name":"_msgHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3717,"src":"19117:8:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":3727,"name":"_from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3719,"src":"19127:5:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3728,"name":"_srcChainId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3721,"src":"19134:11:9","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint64","typeString":"uint64"}],"id":3725,"name":"Context","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4053,"src":"19109:7:9","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_Context_$4053_storage_ptr_$","typeString":"type(struct IBridge.Context storage pointer)"}},"id":3729,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19109:37:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Context_$4053_memory_ptr","typeString":"struct IBridge.Context memory"}},"src":"19101:45:9","typeDescriptions":{"typeIdentifier":"t_struct$_Context_$4053_storage","typeString":"struct IBridge.Context storage ref"}},"id":3731,"nodeType":"ExpressionStatement","src":"19101:45:9"}]},"documentation":{"id":3715,"nodeType":"StructuredDocumentation","src":"18825:168:9","text":"@notice Stores the call context\n @param _msgHash The message hash.\n @param _from The sender's address.\n @param _srcChainId The source chain ID."},"implemented":true,"kind":"function","modifiers":[],"name":"_storeContext","nameLocation":"19007:13:9","parameters":{"id":3722,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3717,"mutability":"mutable","name":"_msgHash","nameLocation":"19029:8:9","nodeType":"VariableDeclaration","scope":3733,"src":"19021:16:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3716,"name":"bytes32","nodeType":"ElementaryTypeName","src":"19021:7:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":3719,"mutability":"mutable","name":"_from","nameLocation":"19047:5:9","nodeType":"VariableDeclaration","scope":3733,"src":"19039:13:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3718,"name":"address","nodeType":"ElementaryTypeName","src":"19039:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3721,"mutability":"mutable","name":"_srcChainId","nameLocation":"19061:11:9","nodeType":"VariableDeclaration","scope":3733,"src":"19054:18:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":3720,"name":"uint64","nodeType":"ElementaryTypeName","src":"19054:6:9","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"src":"19020:53:9"},"returnParameters":{"id":3723,"nodeType":"ParameterList","parameters":[],"src":"19091:0:9"},"scope":4009,"stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"id":3779,"nodeType":"FunctionDefinition","src":"19512:536:9","nodes":[],"body":{"id":3778,"nodeType":"Block","src":"19726:322:9","nodes":[],"statements":[{"clauses":[{"block":{"id":3770,"nodeType":"Block","src":"19921:59:9","statements":[{"expression":{"id":3768,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3763,"name":"numCacheOps_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3746,"src":"19935:12:9","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":3766,"name":"numCacheOps","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3761,"src":"19957:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3765,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"19950:6:9","typeDescriptions":{"typeIdentifier":"t_type$_t_uint32_$","typeString":"type(uint32)"},"typeName":{"id":3764,"name":"uint32","nodeType":"ElementaryTypeName","src":"19950:6:9","typeDescriptions":{}}},"id":3767,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19950:19:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"19935:34:9","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"id":3769,"nodeType":"ExpressionStatement","src":"19935:34:9"}]},"errorName":"","id":3771,"nodeType":"TryCatchClause","parameters":{"id":3762,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3761,"mutability":"mutable","name":"numCacheOps","nameLocation":"19899:11:9","nodeType":"VariableDeclaration","scope":3771,"src":"19891:19:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3760,"name":"uint256","nodeType":"ElementaryTypeName","src":"19891:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"19877:43:9"},"src":"19869:111:9"},{"block":{"id":3775,"nodeType":"Block","src":"19987:55:9","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":3772,"name":"B_SIGNAL_NOT_RECEIVED","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2579,"src":"20008:21:9","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":3773,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20008:23:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":3774,"nodeType":"RevertStatement","src":"20001:30:9"}]},"errorName":"","id":3776,"nodeType":"TryCatchClause","src":"19981:61:9"}],"externalCall":{"arguments":[{"id":3750,"name":"_chainId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3741,"src":"19788:8:9","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},{"arguments":[{"id":3752,"name":"_chainId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3741,"src":"19806:8:9","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},{"expression":{"id":3753,"name":"LibNames","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5845,"src":"19816:8:9","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibNames_$5845_$","typeString":"type(library LibNames)"}},"id":3754,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"19825:8:9","memberName":"B_BRIDGE","nodeType":"MemberAccess","referencedDeclaration":5796,"src":"19816:17:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"hexValue":"66616c7365","id":3755,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"19835:5:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint64","typeString":"uint64"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":3751,"name":"resolve","nodeType":"Identifier","overloadedDeclarations":[4899,4921],"referencedDeclaration":4899,"src":"19798:7:9","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint64_$_t_bytes32_$_t_bool_$returns$_t_address_$","typeString":"function (uint64,bytes32,bool) view returns (address)"}},"id":3756,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19798:43:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3757,"name":"_signal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3739,"src":"19843:7:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":3758,"name":"_proof","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3743,"src":"19852:6:9","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint64","typeString":"uint64"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"expression":{"id":3748,"name":"_signalService","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3737,"src":"19740:14:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISignalService_$6277","typeString":"contract ISignalService"}},"id":3749,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"19755:19:9","memberName":"proveSignalReceived","nodeType":"MemberAccess","referencedDeclaration":6246,"src":"19740:34:9","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_uint64_$_t_address_$_t_bytes32_$_t_bytes_memory_ptr_$returns$_t_uint256_$","typeString":"function (uint64,address,bytes32,bytes memory) external returns (uint256)"}},"id":3759,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19740:128:9","tryCall":true,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3777,"nodeType":"TryStatement","src":"19736:306:9"}]},"documentation":{"id":3734,"nodeType":"StructuredDocumentation","src":"19159:348:9","text":"@notice Checks if the signal was received and caches cross-chain data if requested.\n @param _signalService The signal service address.\n @param _signal The signal.\n @param _chainId The ID of the chain the signal is stored on.\n @param _proof The merkle inclusion proof.\n @return numCacheOps_ Num of cached items"},"implemented":true,"kind":"function","modifiers":[],"name":"_proveSignalReceived","nameLocation":"19521:20:9","parameters":{"id":3744,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3737,"mutability":"mutable","name":"_signalService","nameLocation":"19566:14:9","nodeType":"VariableDeclaration","scope":3779,"src":"19551:29:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISignalService_$6277","typeString":"contract ISignalService"},"typeName":{"id":3736,"nodeType":"UserDefinedTypeName","pathNode":{"id":3735,"name":"ISignalService","nameLocations":["19551:14:9"],"nodeType":"IdentifierPath","referencedDeclaration":6277,"src":"19551:14:9"},"referencedDeclaration":6277,"src":"19551:14:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISignalService_$6277","typeString":"contract ISignalService"}},"visibility":"internal"},{"constant":false,"id":3739,"mutability":"mutable","name":"_signal","nameLocation":"19598:7:9","nodeType":"VariableDeclaration","scope":3779,"src":"19590:15:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3738,"name":"bytes32","nodeType":"ElementaryTypeName","src":"19590:7:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":3741,"mutability":"mutable","name":"_chainId","nameLocation":"19622:8:9","nodeType":"VariableDeclaration","scope":3779,"src":"19615:15:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":3740,"name":"uint64","nodeType":"ElementaryTypeName","src":"19615:6:9","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"},{"constant":false,"id":3743,"mutability":"mutable","name":"_proof","nameLocation":"19655:6:9","nodeType":"VariableDeclaration","scope":3779,"src":"19640:21:9","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":3742,"name":"bytes","nodeType":"ElementaryTypeName","src":"19640:5:9","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"19541:126:9"},"returnParameters":{"id":3747,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3746,"mutability":"mutable","name":"numCacheOps_","nameLocation":"19708:12:9","nodeType":"VariableDeclaration","scope":3779,"src":"19701:19:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":3745,"name":"uint32","nodeType":"ElementaryTypeName","src":"19701:6:9","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"src":"19700:21:9"},"scope":4009,"stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"id":3789,"nodeType":"FunctionDefinition","src":"20145:100:9","nodes":[],"body":{"id":3788,"nodeType":"Block","src":"20216:29:9","nodes":[],"statements":[{"expression":{"id":3786,"name":"__ctx","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2545,"src":"20233:5:9","typeDescriptions":{"typeIdentifier":"t_struct$_Context_$4053_storage","typeString":"struct IBridge.Context storage ref"}},"functionReturnParameters":3785,"id":3787,"nodeType":"Return","src":"20226:12:9"}]},"documentation":{"id":3780,"nodeType":"StructuredDocumentation","src":"20054:86:9","text":"@notice Loads and returns the call context.\n @return ctx_ The call context."},"implemented":true,"kind":"function","modifiers":[],"name":"_loadContext","nameLocation":"20154:12:9","parameters":{"id":3781,"nodeType":"ParameterList","parameters":[],"src":"20166:2:9"},"returnParameters":{"id":3785,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3784,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3789,"src":"20200:14:9","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Context_$4053_memory_ptr","typeString":"struct IBridge.Context"},"typeName":{"id":3783,"nodeType":"UserDefinedTypeName","pathNode":{"id":3782,"name":"Context","nameLocations":["20200:7:9"],"nodeType":"IdentifierPath","referencedDeclaration":4053,"src":"20200:7:9"},"referencedDeclaration":4053,"src":"20200:7:9","typeDescriptions":{"typeIdentifier":"t_struct$_Context_$4053_storage_ptr","typeString":"struct IBridge.Context"}},"visibility":"internal"}],"src":"20199:16:9"},"scope":4009,"stateMutability":"view","virtual":true,"visibility":"internal"},{"id":3826,"nodeType":"FunctionDefinition","src":"20628:439:9","nodes":[],"body":{"id":3825,"nodeType":"Block","src":"20837:230:9","nodes":[],"statements":[{"clauses":[{"block":{"id":3818,"nodeType":"Block","src":"20981:36:9","statements":[{"expression":{"hexValue":"74727565","id":3816,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"21002:4:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":3803,"id":3817,"nodeType":"Return","src":"20995:11:9"}]},"errorName":"","id":3819,"nodeType":"TryCatchClause","src":"20981:36:9"},{"block":{"id":3822,"nodeType":"Block","src":"21024:37:9","statements":[{"expression":{"hexValue":"66616c7365","id":3820,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"21045:5:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"functionReturnParameters":3803,"id":3821,"nodeType":"Return","src":"21038:12:9"}]},"errorName":"","id":3823,"nodeType":"TryCatchClause","src":"21018:43:9"}],"externalCall":{"arguments":[{"id":3806,"name":"_chainId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3797,"src":"20900:8:9","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},{"arguments":[{"id":3808,"name":"_chainId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3797,"src":"20918:8:9","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},{"expression":{"id":3809,"name":"LibNames","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5845,"src":"20928:8:9","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibNames_$5845_$","typeString":"type(library LibNames)"}},"id":3810,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"20937:8:9","memberName":"B_BRIDGE","nodeType":"MemberAccess","referencedDeclaration":5796,"src":"20928:17:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"hexValue":"66616c7365","id":3811,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"20947:5:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint64","typeString":"uint64"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":3807,"name":"resolve","nodeType":"Identifier","overloadedDeclarations":[4899,4921],"referencedDeclaration":4899,"src":"20910:7:9","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint64_$_t_bytes32_$_t_bool_$returns$_t_address_$","typeString":"function (uint64,bytes32,bool) view returns (address)"}},"id":3812,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20910:43:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3813,"name":"_signal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3795,"src":"20955:7:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":3814,"name":"_proof","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3799,"src":"20964:6:9","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint64","typeString":"uint64"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"expression":{"id":3804,"name":"_signalService","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3793,"src":"20851:14:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISignalService_$6277","typeString":"contract ISignalService"}},"id":3805,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"20866:20:9","memberName":"verifySignalReceived","nodeType":"MemberAccess","referencedDeclaration":6258,"src":"20851:35:9","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_uint64_$_t_address_$_t_bytes32_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (uint64,address,bytes32,bytes memory) view external"}},"id":3815,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20851:129:9","tryCall":true,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3824,"nodeType":"TryStatement","src":"20847:214:9"}]},"documentation":{"id":3790,"nodeType":"StructuredDocumentation","src":"20251:372:9","text":"@notice Checks if the signal was received.\n This is the 'readonly' version of _proveSignalReceived.\n @param _signalService The signal service address.\n @param _signal The signal.\n @param _chainId The ID of the chain the signal is stored on.\n @param _proof The merkle inclusion proof.\n @return true if the message was received."},"implemented":true,"kind":"function","modifiers":[],"name":"_isSignalReceived","nameLocation":"20637:17:9","parameters":{"id":3800,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3793,"mutability":"mutable","name":"_signalService","nameLocation":"20679:14:9","nodeType":"VariableDeclaration","scope":3826,"src":"20664:29:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISignalService_$6277","typeString":"contract ISignalService"},"typeName":{"id":3792,"nodeType":"UserDefinedTypeName","pathNode":{"id":3791,"name":"ISignalService","nameLocations":["20664:14:9"],"nodeType":"IdentifierPath","referencedDeclaration":6277,"src":"20664:14:9"},"referencedDeclaration":6277,"src":"20664:14:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISignalService_$6277","typeString":"contract ISignalService"}},"visibility":"internal"},{"constant":false,"id":3795,"mutability":"mutable","name":"_signal","nameLocation":"20711:7:9","nodeType":"VariableDeclaration","scope":3826,"src":"20703:15:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3794,"name":"bytes32","nodeType":"ElementaryTypeName","src":"20703:7:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":3797,"mutability":"mutable","name":"_chainId","nameLocation":"20735:8:9","nodeType":"VariableDeclaration","scope":3826,"src":"20728:15:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":3796,"name":"uint64","nodeType":"ElementaryTypeName","src":"20728:6:9","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"},{"constant":false,"id":3799,"mutability":"mutable","name":"_proof","nameLocation":"20768:6:9","nodeType":"VariableDeclaration","scope":3826,"src":"20753:21:9","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":3798,"name":"bytes","nodeType":"ElementaryTypeName","src":"20753:5:9","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"20654:126:9"},"returnParameters":{"id":3803,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3802,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3826,"src":"20827:4:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3801,"name":"bool","nodeType":"ElementaryTypeName","src":"20827:4:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"20826:6:9"},"scope":4009,"stateMutability":"view","virtual":false,"visibility":"private"},{"id":3844,"nodeType":"FunctionDefinition","src":"21073:167:9","nodes":[],"body":{"id":3843,"nodeType":"Block","src":"21150:90:9","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_enum$_Status_$4018","typeString":"enum IBridge.Status"},"id":3838,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":3834,"name":"messageStatus","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2541,"src":"21164:13:9","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_enum$_Status_$4018_$","typeString":"mapping(bytes32 => enum IBridge.Status)"}},"id":3836,"indexExpression":{"id":3835,"name":"_msgHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3828,"src":"21178:8:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"21164:23:9","typeDescriptions":{"typeIdentifier":"t_enum$_Status_$4018","typeString":"enum IBridge.Status"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":3837,"name":"_expectedStatus","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3831,"src":"21191:15:9","typeDescriptions":{"typeIdentifier":"t_enum$_Status_$4018","typeString":"enum IBridge.Status"}},"src":"21164:42:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3842,"nodeType":"IfStatement","src":"21160:73:9","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":3839,"name":"B_INVALID_STATUS","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2565,"src":"21215:16:9","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":3840,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21215:18:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":3841,"nodeType":"RevertStatement","src":"21208:25:9"}}]},"implemented":true,"kind":"function","modifiers":[],"name":"_checkStatus","nameLocation":"21082:12:9","parameters":{"id":3832,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3828,"mutability":"mutable","name":"_msgHash","nameLocation":"21103:8:9","nodeType":"VariableDeclaration","scope":3844,"src":"21095:16:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3827,"name":"bytes32","nodeType":"ElementaryTypeName","src":"21095:7:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":3831,"mutability":"mutable","name":"_expectedStatus","nameLocation":"21120:15:9","nodeType":"VariableDeclaration","scope":3844,"src":"21113:22:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Status_$4018","typeString":"enum IBridge.Status"},"typeName":{"id":3830,"nodeType":"UserDefinedTypeName","pathNode":{"id":3829,"name":"Status","nameLocations":["21113:6:9"],"nodeType":"IdentifierPath","referencedDeclaration":4018,"src":"21113:6:9"},"referencedDeclaration":4018,"src":"21113:6:9","typeDescriptions":{"typeIdentifier":"t_enum$_Status_$4018","typeString":"enum IBridge.Status"}},"visibility":"internal"}],"src":"21094:42:9"},"returnParameters":{"id":3833,"nodeType":"ParameterList","parameters":[],"src":"21150:0:9"},"scope":4009,"stateMutability":"view","virtual":false,"visibility":"private"},{"id":3907,"nodeType":"FunctionDefinition","src":"21246:521:9","nodes":[],"body":{"id":3906,"nodeType":"Block","src":"21418:349:9","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":3861,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":3855,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3847,"src":"21432:8:9","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$4046_calldata_ptr","typeString":"struct IBridge.Message calldata"}},"id":3856,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"21441:2:9","memberName":"to","nodeType":"MemberAccess","referencedDeclaration":4041,"src":"21432:11:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":3859,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21455:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":3858,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"21447:7:9","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3857,"name":"address","nodeType":"ElementaryTypeName","src":"21447:7:9","typeDescriptions":{}}},"id":3860,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21447:10:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"21432:25:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3864,"nodeType":"IfStatement","src":"21428:42:9","trueBody":{"expression":{"hexValue":"74727565","id":3862,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"21466:4:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":3854,"id":3863,"nodeType":"Return","src":"21459:11:9"}},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":3871,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":3865,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3847,"src":"21484:8:9","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$4046_calldata_ptr","typeString":"struct IBridge.Message calldata"}},"id":3866,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"21493:2:9","memberName":"to","nodeType":"MemberAccess","referencedDeclaration":4041,"src":"21484:11:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"id":3869,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"21507:4:9","typeDescriptions":{"typeIdentifier":"t_contract$_Bridge_$4009","typeString":"contract Bridge"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Bridge_$4009","typeString":"contract Bridge"}],"id":3868,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"21499:7:9","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3867,"name":"address","nodeType":"ElementaryTypeName","src":"21499:7:9","typeDescriptions":{}}},"id":3870,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21499:13:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"21484:28:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3874,"nodeType":"IfStatement","src":"21480:45:9","trueBody":{"expression":{"hexValue":"74727565","id":3872,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"21521:4:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":3854,"id":3873,"nodeType":"Return","src":"21514:11:9"}},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":3881,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":3875,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3847,"src":"21539:8:9","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$4046_calldata_ptr","typeString":"struct IBridge.Message calldata"}},"id":3876,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"21548:2:9","memberName":"to","nodeType":"MemberAccess","referencedDeclaration":4041,"src":"21539:11:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"id":3879,"name":"_signalService","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3850,"src":"21562:14:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISignalService_$6277","typeString":"contract ISignalService"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ISignalService_$6277","typeString":"contract ISignalService"}],"id":3878,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"21554:7:9","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3877,"name":"address","nodeType":"ElementaryTypeName","src":"21554:7:9","typeDescriptions":{}}},"id":3880,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21554:23:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"21539:38:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3884,"nodeType":"IfStatement","src":"21535:55:9","trueBody":{"expression":{"hexValue":"74727565","id":3882,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"21586:4:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":3854,"id":3883,"nodeType":"Return","src":"21579:11:9"}},{"expression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":3904,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":3899,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3889,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":3885,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3847,"src":"21608:8:9","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$4046_calldata_ptr","typeString":"struct IBridge.Message calldata"}},"id":3886,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"21617:4:9","memberName":"data","nodeType":"MemberAccess","referencedDeclaration":4045,"src":"21608:13:9","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"id":3887,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"21622:6:9","memberName":"length","nodeType":"MemberAccess","src":"21608:20:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"hexValue":"34","id":3888,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21632:1:9","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"21608:25:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":3898,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"expression":{"id":3892,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3847,"src":"21656:8:9","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$4046_calldata_ptr","typeString":"struct IBridge.Message calldata"}},"id":3893,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"21665:4:9","memberName":"data","nodeType":"MemberAccess","referencedDeclaration":4045,"src":"21656:13:9","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"id":3891,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"21649:6:9","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes4_$","typeString":"type(bytes4)"},"typeName":{"id":3890,"name":"bytes4","nodeType":"ElementaryTypeName","src":"21649:6:9","typeDescriptions":{}}},"id":3894,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21649:21:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"expression":{"id":3895,"name":"IMessageInvocable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4172,"src":"21674:17:9","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IMessageInvocable_$4172_$","typeString":"type(contract IMessageInvocable)"}},"id":3896,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"21692:19:9","memberName":"onMessageInvocation","nodeType":"MemberAccess","referencedDeclaration":4171,"src":"21674:37:9","typeDescriptions":{"typeIdentifier":"t_function_declaration_payable$_t_bytes_calldata_ptr_$returns$__$","typeString":"function IMessageInvocable.onMessageInvocation(bytes calldata) payable"}},"id":3897,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"21712:8:9","memberName":"selector","nodeType":"MemberAccess","src":"21674:46:9","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"21649:71:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"21608:112:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"expression":{"id":3900,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3847,"src":"21736:8:9","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$4046_calldata_ptr","typeString":"struct IBridge.Message calldata"}},"id":3901,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"21745:2:9","memberName":"to","nodeType":"MemberAccess","referencedDeclaration":4041,"src":"21736:11:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":3902,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"21748:10:9","memberName":"isContract","nodeType":"MemberAccess","referencedDeclaration":22454,"src":"21736:22:9","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_bool_$attached_to$_t_address_$","typeString":"function (address) view returns (bool)"}},"id":3903,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21736:24:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"21608:152:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":3854,"id":3905,"nodeType":"Return","src":"21601:159:9"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_unableToInvokeMessageCall","nameLocation":"21255:26:9","parameters":{"id":3851,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3847,"mutability":"mutable","name":"_message","nameLocation":"21308:8:9","nodeType":"VariableDeclaration","scope":3907,"src":"21291:25:9","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$4046_calldata_ptr","typeString":"struct IBridge.Message"},"typeName":{"id":3846,"nodeType":"UserDefinedTypeName","pathNode":{"id":3845,"name":"Message","nameLocations":["21291:7:9"],"nodeType":"IdentifierPath","referencedDeclaration":4046,"src":"21291:7:9"},"referencedDeclaration":4046,"src":"21291:7:9","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$4046_storage_ptr","typeString":"struct IBridge.Message"}},"visibility":"internal"},{"constant":false,"id":3850,"mutability":"mutable","name":"_signalService","nameLocation":"21341:14:9","nodeType":"VariableDeclaration","scope":3907,"src":"21326:29:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISignalService_$6277","typeString":"contract ISignalService"},"typeName":{"id":3849,"nodeType":"UserDefinedTypeName","pathNode":{"id":3848,"name":"ISignalService","nameLocations":["21326:14:9"],"nodeType":"IdentifierPath","referencedDeclaration":6277,"src":"21326:14:9"},"referencedDeclaration":6277,"src":"21326:14:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISignalService_$6277","typeString":"contract ISignalService"}},"visibility":"internal"}],"src":"21281:80:9"},"returnParameters":{"id":3854,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3853,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3907,"src":"21408:4:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3852,"name":"bool","nodeType":"ElementaryTypeName","src":"21408:4:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"21407:6:9"},"scope":4009,"stateMutability":"view","virtual":false,"visibility":"private"},{"id":3933,"nodeType":"FunctionDefinition","src":"21773:277:9","nodes":[],"body":{"id":3932,"nodeType":"Block","src":"21860:190:9","nodes":[],"statements":[{"assignments":[3916],"declarations":[{"constant":false,"id":3916,"mutability":"mutable","name":"minGasRequired","nameLocation":"21878:14:9","nodeType":"VariableDeclaration","scope":3932,"src":"21870:22:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3915,"name":"uint256","nodeType":"ElementaryTypeName","src":"21870:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3922,"initialValue":{"arguments":[{"expression":{"expression":{"id":3918,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3910,"src":"21917:8:9","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$4046_calldata_ptr","typeString":"struct IBridge.Message calldata"}},"id":3919,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"21926:4:9","memberName":"data","nodeType":"MemberAccess","referencedDeclaration":4045,"src":"21917:13:9","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"id":3920,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"21931:6:9","memberName":"length","nodeType":"MemberAccess","src":"21917:20:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3917,"name":"getMessageMinGasLimit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3586,"src":"21895:21:9","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint32_$","typeString":"function (uint256) pure returns (uint32)"}},"id":3921,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21895:43:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"VariableDeclarationStatement","src":"21870:68:9"},{"id":3931,"nodeType":"UncheckedBlock","src":"21948:96:9","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3929,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"expression":{"id":3925,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3910,"src":"21998:8:9","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$4046_calldata_ptr","typeString":"struct IBridge.Message calldata"}},"id":3926,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"22007:8:9","memberName":"gasLimit","nodeType":"MemberAccess","referencedDeclaration":4029,"src":"21998:17:9","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint32","typeString":"uint32"}],"expression":{"id":3923,"name":"minGasRequired","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3916,"src":"21979:14:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3924,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"21994:3:9","memberName":"max","nodeType":"MemberAccess","referencedDeclaration":5766,"src":"21979:18:9","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$attached_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":3927,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21979:37:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":3928,"name":"minGasRequired","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3916,"src":"22019:14:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"21979:54:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":3914,"id":3930,"nodeType":"Return","src":"21972:61:9"}]}]},"implemented":true,"kind":"function","modifiers":[],"name":"_invocationGasLimit","nameLocation":"21782:19:9","parameters":{"id":3911,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3910,"mutability":"mutable","name":"_message","nameLocation":"21819:8:9","nodeType":"VariableDeclaration","scope":3933,"src":"21802:25:9","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$4046_calldata_ptr","typeString":"struct IBridge.Message"},"typeName":{"id":3909,"nodeType":"UserDefinedTypeName","pathNode":{"id":3908,"name":"Message","nameLocations":["21802:7:9"],"nodeType":"IdentifierPath","referencedDeclaration":4046,"src":"21802:7:9"},"referencedDeclaration":4046,"src":"21802:7:9","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$4046_storage_ptr","typeString":"struct IBridge.Message"}},"visibility":"internal"}],"src":"21801:27:9"},"returnParameters":{"id":3914,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3913,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3933,"src":"21851:7:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3912,"name":"uint256","nodeType":"ElementaryTypeName","src":"21851:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"21850:9:9"},"scope":4009,"stateMutability":"pure","virtual":false,"visibility":"private"},{"id":3959,"nodeType":"FunctionDefinition","src":"22056:604:9","nodes":[],"body":{"id":3958,"nodeType":"Block","src":"22136:524:9","nodes":[],"statements":[{"id":3957,"nodeType":"UncheckedBlock","src":"22564:90:9","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3954,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3951,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3949,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3947,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3944,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3942,"name":"dataLength","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3935,"src":"22604:10:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"3331","id":3943,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22617:2:9","typeDescriptions":{"typeIdentifier":"t_rational_31_by_1","typeString":"int_const 31"},"value":"31"},"src":"22604:15:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":3945,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"22603:17:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"3332","id":3946,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22623:2:9","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"22603:22:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"3332","id":3948,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22628:2:9","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"22603:27:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"343136","id":3950,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22633:3:9","typeDescriptions":{"typeIdentifier":"t_rational_416_by_1","typeString":"int_const 416"},"value":"416"},"src":"22603:33:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":3952,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"22602:35:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"34","id":3953,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22641:1:9","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"22602:40:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3941,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"22595:6:9","typeDescriptions":{"typeIdentifier":"t_type$_t_uint32_$","typeString":"type(uint32)"},"typeName":{"id":3940,"name":"uint32","nodeType":"ElementaryTypeName","src":"22595:6:9","typeDescriptions":{}}},"id":3955,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22595:48:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"functionReturnParameters":3939,"id":3956,"nodeType":"Return","src":"22588:55:9"}]}]},"implemented":true,"kind":"function","modifiers":[],"name":"_messageCalldataCost","nameLocation":"22065:20:9","parameters":{"id":3936,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3935,"mutability":"mutable","name":"dataLength","nameLocation":"22094:10:9","nodeType":"VariableDeclaration","scope":3959,"src":"22086:18:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3934,"name":"uint256","nodeType":"ElementaryTypeName","src":"22086:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"22085:20:9"},"returnParameters":{"id":3939,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3938,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3959,"src":"22128:6:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":3937,"name":"uint32","nodeType":"ElementaryTypeName","src":"22128:6:9","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"src":"22127:8:9"},"scope":4009,"stateMutability":"pure","virtual":false,"visibility":"private"},{"id":3976,"nodeType":"FunctionDefinition","src":"23684:2292:9","nodes":[],"body":{"id":3975,"nodeType":"Block","src":"23766:2210:9","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3971,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3967,"name":"_gasLeft","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3962,"src":"25501:8:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3970,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3968,"name":"_gasRequested","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3964,"src":"25512:13:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"3633","id":3969,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25528:2:9","typeDescriptions":{"typeIdentifier":"t_rational_63_by_1","typeString":"int_const 63"},"value":"63"},"src":"25512:18:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25501:29:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3974,"nodeType":"IfStatement","src":"25497:473:9","trueBody":{"id":3973,"nodeType":"Block","src":"25532:438:9","statements":[{"AST":{"nativeSrc":"25919:41:9","nodeType":"YulBlock","src":"25919:41:9","statements":[{"expression":{"arguments":[],"functionName":{"name":"invalid","nativeSrc":"25937:7:9","nodeType":"YulIdentifier","src":"25937:7:9"},"nativeSrc":"25937:9:9","nodeType":"YulFunctionCall","src":"25937:9:9"},"nativeSrc":"25937:9:9","nodeType":"YulExpressionStatement","src":"25937:9:9"}]},"evmVersion":"shanghai","externalReferences":[],"id":3972,"nodeType":"InlineAssembly","src":"25910:50:9"}]}}]},"documentation":{"id":3960,"nodeType":"StructuredDocumentation","src":"22834:845:9","text":"@dev Suggested by OpenZeppelin and copied from\n https://github.com/OpenZeppelin/openzeppelin-contracts/\n blob/83c7e45092dac350b070c421cd2bf7105616cf1a/contracts/\n metatx/ERC2771Forwarder.sol#L327C1-L370C6\n @dev Checks if the requested gas was correctly forwarded to the callee.\n As a consequence of https://eips.ethereum.org/EIPS/eip-150[EIP-150]:\n - At most `gasleft() - floor(gasleft() / 64)` is forwarded to the callee.\n - At least `floor(gasleft() / 64)` is kept in the caller.\n It reverts consuming all the available gas if the forwarded gas is not the requested gas.\n IMPORTANT: The `gasLeft` parameter should be measured exactly at the end of the forwarded\n call.\n Any gas consumed in between will make room for bypassing this check."},"implemented":true,"kind":"function","modifiers":[],"name":"_checkForwardedGas","nameLocation":"23693:18:9","parameters":{"id":3965,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3962,"mutability":"mutable","name":"_gasLeft","nameLocation":"23720:8:9","nodeType":"VariableDeclaration","scope":3976,"src":"23712:16:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3961,"name":"uint256","nodeType":"ElementaryTypeName","src":"23712:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3964,"mutability":"mutable","name":"_gasRequested","nameLocation":"23738:13:9","nodeType":"VariableDeclaration","scope":3976,"src":"23730:21:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3963,"name":"uint256","nodeType":"ElementaryTypeName","src":"23730:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"23711:41:9"},"returnParameters":{"id":3966,"nodeType":"ParameterList","parameters":[],"src":"23766:0:9"},"scope":4009,"stateMutability":"pure","virtual":false,"visibility":"private"},{"id":3990,"nodeType":"FunctionDefinition","src":"25982:130:9","nodes":[],"body":{"id":3989,"nodeType":"Block","src":"26038:74:9","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3984,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3981,"name":"_chainId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3978,"src":"26052:8:9","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"id":3982,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"26064:5:9","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":3983,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"26070:7:9","memberName":"chainid","nodeType":"MemberAccess","src":"26064:13:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"26052:25:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3988,"nodeType":"IfStatement","src":"26048:57:9","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":3985,"name":"B_INVALID_CHAINID","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2557,"src":"26086:17:9","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":3986,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26086:19:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":3987,"nodeType":"RevertStatement","src":"26079:26:9"}}]},"implemented":true,"kind":"function","modifiers":[],"name":"_checkSameChain","nameLocation":"25991:15:9","parameters":{"id":3979,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3978,"mutability":"mutable","name":"_chainId","nameLocation":"26014:8:9","nodeType":"VariableDeclaration","scope":3990,"src":"26007:15:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":3977,"name":"uint64","nodeType":"ElementaryTypeName","src":"26007:6:9","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"src":"26006:17:9"},"returnParameters":{"id":3980,"nodeType":"ParameterList","parameters":[],"src":"26038:0:9"},"scope":4009,"stateMutability":"view","virtual":false,"visibility":"internal"},{"id":4008,"nodeType":"FunctionDefinition","src":"26118:147:9","nodes":[],"body":{"id":4007,"nodeType":"Block","src":"26174:91:9","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":4002,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint64","typeString":"uint64"},"id":3997,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3995,"name":"_chainId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3992,"src":"26188:8:9","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":3996,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"26200:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"26188:13:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4001,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3998,"name":"_chainId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3992,"src":"26205:8:9","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":3999,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"26217:5:9","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":4000,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"26223:7:9","memberName":"chainid","nodeType":"MemberAccess","src":"26217:13:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"26205:25:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"26188:42:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4006,"nodeType":"IfStatement","src":"26184:74:9","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":4003,"name":"B_INVALID_CHAINID","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2557,"src":"26239:17:9","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":4004,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26239:19:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":4005,"nodeType":"RevertStatement","src":"26232:26:9"}}]},"implemented":true,"kind":"function","modifiers":[],"name":"_checkDiffChain","nameLocation":"26127:15:9","parameters":{"id":3993,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3992,"mutability":"mutable","name":"_chainId","nameLocation":"26150:8:9","nodeType":"VariableDeclaration","scope":4008,"src":"26143:15:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":3991,"name":"uint64","nodeType":"ElementaryTypeName","src":"26143:6:9","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"src":"26142:17:9"},"returnParameters":{"id":3994,"nodeType":"ParameterList","parameters":[],"src":"26174:0:9"},"scope":4009,"stateMutability":"view","virtual":false,"visibility":"internal"}],"abstract":false,"baseContracts":[{"baseName":{"id":2464,"name":"EssentialResolverContract","nameLocations":["662:25:9"],"nodeType":"IdentifierPath","referencedDeclaration":5017,"src":"662:25:9"},"id":2465,"nodeType":"InheritanceSpecifier","src":"662:25:9"},{"baseName":{"id":2466,"name":"IBridge","nameLocations":["689:7:9"],"nodeType":"IdentifierPath","referencedDeclaration":4153,"src":"689:7:9"},"id":2467,"nodeType":"InheritanceSpecifier","src":"689:7:9"}],"canonicalName":"Bridge","contractDependencies":[],"contractKind":"contract","documentation":{"id":2463,"nodeType":"StructuredDocumentation","src":"394:249:9","text":"@title Bridge\n @notice See the documentation for {IBridge}.\n @dev Labeled in address resolver as \"bridge\". Additionally, the code hash for the same address\n on L1 and L2 may be different.\n @custom:security-contact security@taiko.xyz"},"fullyImplemented":true,"linearizedBaseContracts":[4009,4153,5017,4802,11319,11452,16421,11748,21013,20512,20161,20171],"name":"Bridge","nameLocation":"652:6:9","scope":4010,"usedErrors":[2557,2559,2561,2563,2565,2567,2569,2571,2573,2575,2577,2579,4337,4339,4341,4343,4345,4347,5016,5441],"usedEvents":[2499,4061,4069,4330,4335,11230,11337,11594,20148,20155,20160]}],"license":"MIT"},"id":9} \ No newline at end of file +{ + "abi": [ + { + "type": "constructor", + "inputs": [ + { + "name": "_resolver", + "type": "address", + "internalType": "address" + }, + { + "name": "_signalService", + "type": "address", + "internalType": "address" + } + ], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "GAS_OVERHEAD", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint32", + "internalType": "uint32" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "GAS_RESERVE", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint32", + "internalType": "uint32" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "RELAYER_MAX_PROOF_BYTES", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "acceptOwnership", + "inputs": [], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "context", + "inputs": [], + "outputs": [ + { + "name": "ctx_", + "type": "tuple", + "internalType": "struct IBridge.Context", + "components": [ + { + "name": "msgHash", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "from", + "type": "address", + "internalType": "address" + }, + { + "name": "srcChainId", + "type": "uint64", + "internalType": "uint64" + } + ] + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "failMessage", + "inputs": [ + { + "name": "_message", + "type": "tuple", + "internalType": "struct IBridge.Message", + "components": [ + { + "name": "id", + "type": "uint64", + "internalType": "uint64" + }, + { + "name": "fee", + "type": "uint64", + "internalType": "uint64" + }, + { + "name": "gasLimit", + "type": "uint32", + "internalType": "uint32" + }, + { + "name": "from", + "type": "address", + "internalType": "address" + }, + { + "name": "srcChainId", + "type": "uint64", + "internalType": "uint64" + }, + { + "name": "srcOwner", + "type": "address", + "internalType": "address" + }, + { + "name": "destChainId", + "type": "uint64", + "internalType": "uint64" + }, + { + "name": "destOwner", + "type": "address", + "internalType": "address" + }, + { + "name": "to", + "type": "address", + "internalType": "address" + }, + { + "name": "value", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "data", + "type": "bytes", + "internalType": "bytes" + } + ] + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "getMessageMinGasLimit", + "inputs": [ + { + "name": "dataLength", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [ + { + "name": "", + "type": "uint32", + "internalType": "uint32" + } + ], + "stateMutability": "pure" + }, + { + "type": "function", + "name": "hashMessage", + "inputs": [ + { + "name": "_message", + "type": "tuple", + "internalType": "struct IBridge.Message", + "components": [ + { + "name": "id", + "type": "uint64", + "internalType": "uint64" + }, + { + "name": "fee", + "type": "uint64", + "internalType": "uint64" + }, + { + "name": "gasLimit", + "type": "uint32", + "internalType": "uint32" + }, + { + "name": "from", + "type": "address", + "internalType": "address" + }, + { + "name": "srcChainId", + "type": "uint64", + "internalType": "uint64" + }, + { + "name": "srcOwner", + "type": "address", + "internalType": "address" + }, + { + "name": "destChainId", + "type": "uint64", + "internalType": "uint64" + }, + { + "name": "destOwner", + "type": "address", + "internalType": "address" + }, + { + "name": "to", + "type": "address", + "internalType": "address" + }, + { + "name": "value", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "data", + "type": "bytes", + "internalType": "bytes" + } + ] + } + ], + "outputs": [ + { + "name": "", + "type": "bytes32", + "internalType": "bytes32" + } + ], + "stateMutability": "pure" + }, + { + "type": "function", + "name": "impl", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "inNonReentrant", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "init", + "inputs": [ + { + "name": "_owner", + "type": "address", + "internalType": "address" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "init2", + "inputs": [], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "isDestChainEnabled", + "inputs": [ + { + "name": "_chainId", + "type": "uint64", + "internalType": "uint64" + } + ], + "outputs": [ + { + "name": "enabled_", + "type": "bool", + "internalType": "bool" + }, + { + "name": "destBridge_", + "type": "address", + "internalType": "address" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "isMessageFailed", + "inputs": [ + { + "name": "_message", + "type": "tuple", + "internalType": "struct IBridge.Message", + "components": [ + { + "name": "id", + "type": "uint64", + "internalType": "uint64" + }, + { + "name": "fee", + "type": "uint64", + "internalType": "uint64" + }, + { + "name": "gasLimit", + "type": "uint32", + "internalType": "uint32" + }, + { + "name": "from", + "type": "address", + "internalType": "address" + }, + { + "name": "srcChainId", + "type": "uint64", + "internalType": "uint64" + }, + { + "name": "srcOwner", + "type": "address", + "internalType": "address" + }, + { + "name": "destChainId", + "type": "uint64", + "internalType": "uint64" + }, + { + "name": "destOwner", + "type": "address", + "internalType": "address" + }, + { + "name": "to", + "type": "address", + "internalType": "address" + }, + { + "name": "value", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "data", + "type": "bytes", + "internalType": "bytes" + } + ] + }, + { + "name": "_proof", + "type": "bytes", + "internalType": "bytes" + } + ], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "isMessageReceived", + "inputs": [ + { + "name": "_message", + "type": "tuple", + "internalType": "struct IBridge.Message", + "components": [ + { + "name": "id", + "type": "uint64", + "internalType": "uint64" + }, + { + "name": "fee", + "type": "uint64", + "internalType": "uint64" + }, + { + "name": "gasLimit", + "type": "uint32", + "internalType": "uint32" + }, + { + "name": "from", + "type": "address", + "internalType": "address" + }, + { + "name": "srcChainId", + "type": "uint64", + "internalType": "uint64" + }, + { + "name": "srcOwner", + "type": "address", + "internalType": "address" + }, + { + "name": "destChainId", + "type": "uint64", + "internalType": "uint64" + }, + { + "name": "destOwner", + "type": "address", + "internalType": "address" + }, + { + "name": "to", + "type": "address", + "internalType": "address" + }, + { + "name": "value", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "data", + "type": "bytes", + "internalType": "bytes" + } + ] + }, + { + "name": "_proof", + "type": "bytes", + "internalType": "bytes" + } + ], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "isMessageSent", + "inputs": [ + { + "name": "_message", + "type": "tuple", + "internalType": "struct IBridge.Message", + "components": [ + { + "name": "id", + "type": "uint64", + "internalType": "uint64" + }, + { + "name": "fee", + "type": "uint64", + "internalType": "uint64" + }, + { + "name": "gasLimit", + "type": "uint32", + "internalType": "uint32" + }, + { + "name": "from", + "type": "address", + "internalType": "address" + }, + { + "name": "srcChainId", + "type": "uint64", + "internalType": "uint64" + }, + { + "name": "srcOwner", + "type": "address", + "internalType": "address" + }, + { + "name": "destChainId", + "type": "uint64", + "internalType": "uint64" + }, + { + "name": "destOwner", + "type": "address", + "internalType": "address" + }, + { + "name": "to", + "type": "address", + "internalType": "address" + }, + { + "name": "value", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "data", + "type": "bytes", + "internalType": "bytes" + } + ] + } + ], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "messageStatus", + "inputs": [ + { + "name": "msgHash", + "type": "bytes32", + "internalType": "bytes32" + } + ], + "outputs": [ + { + "name": "status", + "type": "uint8", + "internalType": "enum IBridge.Status" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "nextMessageId", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint64", + "internalType": "uint64" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "owner", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "pause", + "inputs": [], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "paused", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "pendingOwner", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "processMessage", + "inputs": [ + { + "name": "_message", + "type": "tuple", + "internalType": "struct IBridge.Message", + "components": [ + { + "name": "id", + "type": "uint64", + "internalType": "uint64" + }, + { + "name": "fee", + "type": "uint64", + "internalType": "uint64" + }, + { + "name": "gasLimit", + "type": "uint32", + "internalType": "uint32" + }, + { + "name": "from", + "type": "address", + "internalType": "address" + }, + { + "name": "srcChainId", + "type": "uint64", + "internalType": "uint64" + }, + { + "name": "srcOwner", + "type": "address", + "internalType": "address" + }, + { + "name": "destChainId", + "type": "uint64", + "internalType": "uint64" + }, + { + "name": "destOwner", + "type": "address", + "internalType": "address" + }, + { + "name": "to", + "type": "address", + "internalType": "address" + }, + { + "name": "value", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "data", + "type": "bytes", + "internalType": "bytes" + } + ] + }, + { + "name": "_proof", + "type": "bytes", + "internalType": "bytes" + } + ], + "outputs": [ + { + "name": "status_", + "type": "uint8", + "internalType": "enum IBridge.Status" + }, + { + "name": "reason_", + "type": "uint8", + "internalType": "enum IBridge.StatusReason" + } + ], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "proxiableUUID", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "bytes32", + "internalType": "bytes32" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "recallMessage", + "inputs": [ + { + "name": "_message", + "type": "tuple", + "internalType": "struct IBridge.Message", + "components": [ + { + "name": "id", + "type": "uint64", + "internalType": "uint64" + }, + { + "name": "fee", + "type": "uint64", + "internalType": "uint64" + }, + { + "name": "gasLimit", + "type": "uint32", + "internalType": "uint32" + }, + { + "name": "from", + "type": "address", + "internalType": "address" + }, + { + "name": "srcChainId", + "type": "uint64", + "internalType": "uint64" + }, + { + "name": "srcOwner", + "type": "address", + "internalType": "address" + }, + { + "name": "destChainId", + "type": "uint64", + "internalType": "uint64" + }, + { + "name": "destOwner", + "type": "address", + "internalType": "address" + }, + { + "name": "to", + "type": "address", + "internalType": "address" + }, + { + "name": "value", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "data", + "type": "bytes", + "internalType": "bytes" + } + ] + }, + { + "name": "_proof", + "type": "bytes", + "internalType": "bytes" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "renounceOwnership", + "inputs": [], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "resolver", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "retryMessage", + "inputs": [ + { + "name": "_message", + "type": "tuple", + "internalType": "struct IBridge.Message", + "components": [ + { + "name": "id", + "type": "uint64", + "internalType": "uint64" + }, + { + "name": "fee", + "type": "uint64", + "internalType": "uint64" + }, + { + "name": "gasLimit", + "type": "uint32", + "internalType": "uint32" + }, + { + "name": "from", + "type": "address", + "internalType": "address" + }, + { + "name": "srcChainId", + "type": "uint64", + "internalType": "uint64" + }, + { + "name": "srcOwner", + "type": "address", + "internalType": "address" + }, + { + "name": "destChainId", + "type": "uint64", + "internalType": "uint64" + }, + { + "name": "destOwner", + "type": "address", + "internalType": "address" + }, + { + "name": "to", + "type": "address", + "internalType": "address" + }, + { + "name": "value", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "data", + "type": "bytes", + "internalType": "bytes" + } + ] + }, + { + "name": "_isLastAttempt", + "type": "bool", + "internalType": "bool" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "sendMessage", + "inputs": [ + { + "name": "_message", + "type": "tuple", + "internalType": "struct IBridge.Message", + "components": [ + { + "name": "id", + "type": "uint64", + "internalType": "uint64" + }, + { + "name": "fee", + "type": "uint64", + "internalType": "uint64" + }, + { + "name": "gasLimit", + "type": "uint32", + "internalType": "uint32" + }, + { + "name": "from", + "type": "address", + "internalType": "address" + }, + { + "name": "srcChainId", + "type": "uint64", + "internalType": "uint64" + }, + { + "name": "srcOwner", + "type": "address", + "internalType": "address" + }, + { + "name": "destChainId", + "type": "uint64", + "internalType": "uint64" + }, + { + "name": "destOwner", + "type": "address", + "internalType": "address" + }, + { + "name": "to", + "type": "address", + "internalType": "address" + }, + { + "name": "value", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "data", + "type": "bytes", + "internalType": "bytes" + } + ] + } + ], + "outputs": [ + { + "name": "msgHash_", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "message_", + "type": "tuple", + "internalType": "struct IBridge.Message", + "components": [ + { + "name": "id", + "type": "uint64", + "internalType": "uint64" + }, + { + "name": "fee", + "type": "uint64", + "internalType": "uint64" + }, + { + "name": "gasLimit", + "type": "uint32", + "internalType": "uint32" + }, + { + "name": "from", + "type": "address", + "internalType": "address" + }, + { + "name": "srcChainId", + "type": "uint64", + "internalType": "uint64" + }, + { + "name": "srcOwner", + "type": "address", + "internalType": "address" + }, + { + "name": "destChainId", + "type": "uint64", + "internalType": "uint64" + }, + { + "name": "destOwner", + "type": "address", + "internalType": "address" + }, + { + "name": "to", + "type": "address", + "internalType": "address" + }, + { + "name": "value", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "data", + "type": "bytes", + "internalType": "bytes" + } + ] + } + ], + "stateMutability": "payable" + }, + { + "type": "function", + "name": "signalForFailedMessage", + "inputs": [ + { + "name": "_msgHash", + "type": "bytes32", + "internalType": "bytes32" + } + ], + "outputs": [ + { + "name": "", + "type": "bytes32", + "internalType": "bytes32" + } + ], + "stateMutability": "pure" + }, + { + "type": "function", + "name": "signalService", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "contract ISignalService" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "transferOwnership", + "inputs": [ + { + "name": "newOwner", + "type": "address", + "internalType": "address" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "unpause", + "inputs": [], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "upgradeTo", + "inputs": [ + { + "name": "newImplementation", + "type": "address", + "internalType": "address" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "upgradeToAndCall", + "inputs": [ + { + "name": "newImplementation", + "type": "address", + "internalType": "address" + }, + { + "name": "data", + "type": "bytes", + "internalType": "bytes" + } + ], + "outputs": [], + "stateMutability": "payable" + }, + { + "type": "event", + "name": "AdminChanged", + "inputs": [ + { + "name": "previousAdmin", + "type": "address", + "indexed": false, + "internalType": "address" + }, + { + "name": "newAdmin", + "type": "address", + "indexed": false, + "internalType": "address" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "BeaconUpgraded", + "inputs": [ + { + "name": "beacon", + "type": "address", + "indexed": true, + "internalType": "address" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "Initialized", + "inputs": [ + { + "name": "version", + "type": "uint8", + "indexed": false, + "internalType": "uint8" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "MessageProcessed", + "inputs": [ + { + "name": "msgHash", + "type": "bytes32", + "indexed": true, + "internalType": "bytes32" + }, + { + "name": "message", + "type": "tuple", + "indexed": false, + "internalType": "struct IBridge.Message", + "components": [ + { + "name": "id", + "type": "uint64", + "internalType": "uint64" + }, + { + "name": "fee", + "type": "uint64", + "internalType": "uint64" + }, + { + "name": "gasLimit", + "type": "uint32", + "internalType": "uint32" + }, + { + "name": "from", + "type": "address", + "internalType": "address" + }, + { + "name": "srcChainId", + "type": "uint64", + "internalType": "uint64" + }, + { + "name": "srcOwner", + "type": "address", + "internalType": "address" + }, + { + "name": "destChainId", + "type": "uint64", + "internalType": "uint64" + }, + { + "name": "destOwner", + "type": "address", + "internalType": "address" + }, + { + "name": "to", + "type": "address", + "internalType": "address" + }, + { + "name": "value", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "data", + "type": "bytes", + "internalType": "bytes" + } + ] + }, + { + "name": "stats", + "type": "tuple", + "indexed": false, + "internalType": "struct Bridge.ProcessingStats", + "components": [ + { + "name": "gasUsedInFeeCalc", + "type": "uint32", + "internalType": "uint32" + }, + { + "name": "proofSize", + "type": "uint32", + "internalType": "uint32" + }, + { + "name": "numCacheOps", + "type": "uint32", + "internalType": "uint32" + }, + { + "name": "processedByRelayer", + "type": "bool", + "internalType": "bool" + } + ] + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "MessageSent", + "inputs": [ + { + "name": "msgHash", + "type": "bytes32", + "indexed": true, + "internalType": "bytes32" + }, + { + "name": "message", + "type": "tuple", + "indexed": false, + "internalType": "struct IBridge.Message", + "components": [ + { + "name": "id", + "type": "uint64", + "internalType": "uint64" + }, + { + "name": "fee", + "type": "uint64", + "internalType": "uint64" + }, + { + "name": "gasLimit", + "type": "uint32", + "internalType": "uint32" + }, + { + "name": "from", + "type": "address", + "internalType": "address" + }, + { + "name": "srcChainId", + "type": "uint64", + "internalType": "uint64" + }, + { + "name": "srcOwner", + "type": "address", + "internalType": "address" + }, + { + "name": "destChainId", + "type": "uint64", + "internalType": "uint64" + }, + { + "name": "destOwner", + "type": "address", + "internalType": "address" + }, + { + "name": "to", + "type": "address", + "internalType": "address" + }, + { + "name": "value", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "data", + "type": "bytes", + "internalType": "bytes" + } + ] + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "MessageStatusChanged", + "inputs": [ + { + "name": "msgHash", + "type": "bytes32", + "indexed": true, + "internalType": "bytes32" + }, + { + "name": "status", + "type": "uint8", + "indexed": false, + "internalType": "enum IBridge.Status" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "OwnershipTransferStarted", + "inputs": [ + { + "name": "previousOwner", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "newOwner", + "type": "address", + "indexed": true, + "internalType": "address" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "OwnershipTransferred", + "inputs": [ + { + "name": "previousOwner", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "newOwner", + "type": "address", + "indexed": true, + "internalType": "address" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "Paused", + "inputs": [ + { + "name": "account", + "type": "address", + "indexed": false, + "internalType": "address" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "Unpaused", + "inputs": [ + { + "name": "account", + "type": "address", + "indexed": false, + "internalType": "address" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "Upgraded", + "inputs": [ + { + "name": "implementation", + "type": "address", + "indexed": true, + "internalType": "address" + } + ], + "anonymous": false + }, + { + "type": "error", + "name": "ACCESS_DENIED", + "inputs": [] + }, + { + "type": "error", + "name": "B_INSUFFICIENT_GAS", + "inputs": [] + }, + { + "type": "error", + "name": "B_INVALID_CHAINID", + "inputs": [] + }, + { + "type": "error", + "name": "B_INVALID_CONTEXT", + "inputs": [] + }, + { + "type": "error", + "name": "B_INVALID_FEE", + "inputs": [] + }, + { + "type": "error", + "name": "B_INVALID_GAS_LIMIT", + "inputs": [] + }, + { + "type": "error", + "name": "B_INVALID_STATUS", + "inputs": [] + }, + { + "type": "error", + "name": "B_INVALID_VALUE", + "inputs": [] + }, + { + "type": "error", + "name": "B_MESSAGE_NOT_SENT", + "inputs": [] + }, + { + "type": "error", + "name": "B_PERMISSION_DENIED", + "inputs": [] + }, + { + "type": "error", + "name": "B_PROOF_TOO_LARGE", + "inputs": [] + }, + { + "type": "error", + "name": "B_RETRY_FAILED", + "inputs": [] + }, + { + "type": "error", + "name": "B_SIGNAL_NOT_RECEIVED", + "inputs": [] + }, + { + "type": "error", + "name": "ETH_TRANSFER_FAILED", + "inputs": [] + }, + { + "type": "error", + "name": "FUNC_NOT_IMPLEMENTED", + "inputs": [] + }, + { + "type": "error", + "name": "INVALID_PAUSE_STATUS", + "inputs": [] + }, + { + "type": "error", + "name": "REENTRANT_CALL", + "inputs": [] + }, + { + "type": "error", + "name": "RESOLVER_NOT_FOUND", + "inputs": [] + }, + { + "type": "error", + "name": "ZERO_ADDRESS", + "inputs": [] + }, + { + "type": "error", + "name": "ZERO_VALUE", + "inputs": [] + } + ], + "bytecode": { + "object": "0x60e060405230608052348015610013575f5ffd5b5060405161379838038061379883398101604081905261003291610151565b8161003b61007a565b6001600160a01b03811661006257604051634b6f57f560e01b815260040160405180910390fd5b6001600160a01b0390811660a0521660c05250610182565b5f54610100900460ff16156100e55760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b5f5460ff90811614610134575f805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b80516001600160a01b038116811461014c575f5ffd5b919050565b5f5f60408385031215610162575f5ffd5b61016b83610136565b915061017960208401610136565b90509250929050565b60805160a05160c05161357c61021c5f395f8181610439015281816107310152818161085901528181610d0401528181610f0a01528181610f530152818161149401528181611514015281816117b7015281816118bb0152818161194e0152611abb01525f818161022f015261252d01525f81816111e9015281816112290152818161130b0152818161134b01526113c2015261357c5ff3fe6080604052600436106101fc575f3560e01c8063715018a611610113578063a730cdfb1161009d578063d0496d6a1161006d578063d0496d6a146105e2578063d1aaa5df1461062a578063e30c39781461064a578063eefbf17e14610667578063f2fde38b146106a5575f5ffd5b8063a730cdfb14610578578063b8acae0e1461058e578063be880c81146105ad578063c012fa77146105c3575f5ffd5b80638abf6077116100e35780638abf6077146104cb5780638da5cb5b146104df5780638e3881a9146104fc578063913b16cb1461053a5780639efc7a2e14610559575f5ffd5b8063715018a61461045b57806379ba50971461046f5780637cbadfaa146104835780638456cb59146104b7575f5ffd5b80633c6cf4731161019457806352d1902d1161016457806352d1902d146103b65780635862f6e1146103ca5780635c975abb146103e957806360620c6b1461040957806362d0945314610428575f5ffd5b80633c6cf473146103305780633f4ba83a1461036b578063422770fa1461037f5780634f1ef286146103a3575f5ffd5b80631bdb0037116101cf5780631bdb00371461029f5780632035065e146102c05780633075db56146102ed5780633659cfe614610311575f5ffd5b80630432873c1461020057806304f3bcec14610221578063069489a21461026c57806319ab453c14610280575b5f5ffd5b34801561020b575f5ffd5b5061021f61021a3660046129c9565b6106c4565b005b34801561022c575f5ffd5b507f00000000000000000000000000000000000000000000000000000000000000005b6040516001600160a01b0390911681526020015b60405180910390f35b348015610277575f5ffd5b5061021f6108fc565b34801561028b575f5ffd5b5061021f61029a366004612a3b565b6109b3565b6102b26102ad366004612a56565b610a79565b604051610263929190612be2565b3480156102cb575f5ffd5b506102df6102da366004612bfa565b610d8b565b604051610263929190612cb7565b3480156102f8575f5ffd5b506103016111c7565b6040519015158152602001610263565b34801561031c575f5ffd5b5061021f61032b366004612a3b565b6111df565b34801561033b575f5ffd5b5061035e61034a366004612ce2565b60fc6020525f908152604090205460ff1681565b6040516102639190612cf9565b348015610376575f5ffd5b5061021f6112a6565b34801561038a575f5ffd5b5061039562030d4081565b604051908152602001610263565b61021f6103b1366004612dcd565b611301565b3480156103c1575f5ffd5b506103956113b6565b3480156103d5575f5ffd5b506103016103e4366004612bfa565b611468565b3480156103f4575f5ffd5b5061030160c954610100900460ff1660021490565b348015610414575f5ffd5b50610301610423366004612a56565b6114e3565b348015610433575f5ffd5b5061024f7f000000000000000000000000000000000000000000000000000000000000000081565b348015610466575f5ffd5b5061021f6115b7565b34801561047a575f5ffd5b5061021f6115c8565b34801561048e575f5ffd5b506104a261049d366004612ce2565b61163f565b60405163ffffffff9091168152602001610263565b3480156104c2575f5ffd5b5061021f61165d565b3480156104d6575f5ffd5b5061024f6116b2565b3480156104ea575f5ffd5b506033546001600160a01b031661024f565b348015610507575f5ffd5b5061051b610516366004612e2f565b6116c0565b6040805192151583526001600160a01b03909116602083015201610263565b348015610545575f5ffd5b5061021f610554366004612a56565b6116ec565b348015610564575f5ffd5b5061021f610573366004612bfa565b61183a565b348015610583575f5ffd5b506104a26201d4c081565b348015610599575f5ffd5b506103016105a8366004612bfa565b611a8f565b3480156105b8575f5ffd5b506104a2620c350081565b3480156105ce575f5ffd5b506103956105dd366004612f48565b611af6565b3480156105ed575f5ffd5b506105f6611b25565b60408051825181526020808401516001600160a01b031690820152918101516001600160401b031690820152606001610263565b348015610635575f5ffd5b50610395610644366004612ce2565b60031890565b348015610655575f5ffd5b506065546001600160a01b031661024f565b348015610672575f5ffd5b5060fb5461068d90600160401b90046001600160401b031681565b6040516001600160401b039091168152602001610263565b3480156106b0575f5ffd5b5061021f6106bf366004612a3b565b611bcc565b6106d460e0830160c08401612e2f565b6106dd81611c3d565b6106ed60a0840160808501612e2f565b6106f681611c66565b6106fe611ca2565b610706611cd4565b6107106002611d03565b5f61071d6105dd86612f79565b905061072a816001611d19565b5f610755867f0000000000000000000000000000000000000000000000000000000000000000611d6b565b156107a0576107998661012001356188b860405180602001604052805f8152508960e00160208101906107889190612a3b565b6001600160a01b0316929190611e62565b905061081a565b6107b06060870160408801612f84565b63ffffffff1615806107bf5750845b80156107ed57506107d7610100870160e08801612a3b565b6001600160a01b0316336001600160a01b031614155b1561080b576040516372b6e1c360e11b815260040160405180910390fd5b61081786835a5f611e9f565b90505b80156108305761082b826002611fc3565b6108ea565b84156108d157610841826003611fc3565b60405163019b28af60e61b81526003831860048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906366ca2bc0906024016020604051808303815f875af11580156108a7573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108cb9190612f9d565b506108ea565b60405163161e3ead60e01b815260040160405180910390fd5b50506108f66001611d03565b50505050565b610904612080565b5f54600290610100900460ff1615801561092457505f5460ff8083169116105b6109495760405162461bcd60e51b815260040161094090612fb4565b60405180910390fd5b5f805460fb805467ffffffffffffffff1916905560ff82815561010083815561ff001991851661ffff19909316831717169091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a150565b5f54610100900460ff16158080156109d157505f54600160ff909116105b806109ea5750303b1580156109ea57505f5460ff166001145b610a065760405162461bcd60e51b815260040161094090612fb4565b5f805460ff191660011790558015610a27575f805461ff0019166101001790555b610a30826120da565b8015610a75575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b60408051610160810182525f8082526020820181905291810182905260608082018390526080820183905260a0820183905260c0820183905260e0820183905261010082018390526101208201839052610140820152610adf60c0840160a08501612a3b565b610ae881612138565b610af9610100850160e08601612a3b565b610b0281612138565b610b1461012086016101008701612a3b565b610b1d81612138565b610b2d60e0870160c08801612e2f565b610b3681611c66565b610b3e611ca2565b610b46611cd4565b610b506002611d03565b610b606060880160408901612f84565b63ffffffff165f03610ba857610b7c6040880160208901612e2f565b6001600160401b031615610ba35760405163c9f5178760e01b815260040160405180910390fd5b610bd0565b610bb18761215f565b5f03610bd0576040516308c2ad5360e01b815260040160405180910390fd5b5f610be461051660e08a0160c08b01612e2f565b50905080610c0557604051631c6c777560e31b815260040160405180910390fd5b34610c1660408a0160208b01612e2f565b610c2e906001600160401b03166101208b0135613016565b14610c4c57604051634ac2abdf60e11b815260040160405180910390fd5b610c5588612f79565b60fb8054919750600160401b9091046001600160401b0316906008610c7983613029565b82546101009290920a6001600160401b03818102199093169183160217909155908116875233606088015246166080870152610cb486611af6565b9650867fe33fd33b4f45b95b1c196242240c5b5233129d724b578f95b66ce8d8aae9351787604051610ce69190613053565b60405180910390a260405163019b28af60e61b8152600481018890527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906366ca2bc0906024016020604051808303815f875af1158015610d52573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d769190612f9d565b5050610d826001611d03565b50505050915091565b5f5f610d95611ca2565b610d9d611cd4565b610da76002611d03565b5f5a905046610dbc60e0880160c08901612e2f565b6001600160401b031614610de357604051631c6c777560e31b815260040160405180910390fd5b610df360a0870160808801612e2f565b6001600160401b03161580610e1f575046610e1460a0880160808901612e2f565b6001600160401b0316145b15610e3d57604051631c6c777560e31b815260040160405180910390fd5b604080516080810182525f808252602082018190529181018290526060810191909152610e71610100880160e08901612a3b565b6001600160a01b0316331480156060830152610ee057610e976060880160408901612f84565b63ffffffff165f03610ebc576040516372b6e1c360e11b815260040160405180910390fd5b62030d40851115610ee057604051631e3b03c960e01b815260040160405180910390fd5b5f610eed6105dd89612f79565b9050610ef9815f611d19565b63ffffffff86166020830152610f417f000000000000000000000000000000000000000000000000000000000000000082610f3a60a08c0160808d01612e2f565b8a8a6121b2565b63ffffffff1660408301525f610f77897f0000000000000000000000000000000000000000000000000000000000000000611d6b565b15610f9057506002945060019350610120880135610fd7565b5f8360600151610fa0575a610fa9565b610fa98a61215f565b9050610fbb8a84838760600151611e9f565b15610fcc57600296505f9550610fd5565b60019650600295505b505b610fe760408a0160208b01612e2f565b6001600160401b0316156111455761100560408a0160208b01612e2f565b611018906001600160401b031682613016565b90508260600151801561103f575061103660608a0160408b01612f84565b63ffffffff1615155b1561114557604083015163ffffffff16614e20025a61107c6110656101408d018d613065565b6020601f909101819004026101a00160041b919050565b63ffffffff9081168701919091036201d4c00181168086525f9183916110a59183919061225d16565b0390505f6110b960608d0160408e01612f84565b63ffffffff166110cf60408e0160208f01612e2f565b6001600160401b03168302816110e7576110e76130ae565b0490505f48830290505f61112b8e60200160208101906111079190612e2f565b6001600160401b0316848410156111235784840160011c611125565b845b90612272565b9586900395905061113f33826188b8612286565b50505050505b61116d816188b861115d6101008d0160e08e01612a3b565b6001600160a01b03169190612286565b6111778287611fc3565b817f8580f507761043ecdd2bdca084d6fb0109150b3d9842d854d34e3dea6d69387d8a856040516111a9929190613246565b60405180910390a2505050506111bf6001611d03565b935093915050565b5f60026111d660c95460ff1690565b60ff1614905090565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036112275760405162461bcd60e51b81526004016109409061329a565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166112596122c9565b6001600160a01b03161461127f5760405162461bcd60e51b8152600401610940906132e6565b611288816122e4565b604080515f808252602082019092526112a3918391906122ec565b50565b6112ae612456565b6112c260c9805461ff001916610100179055565b6040513381527f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa9060200160405180910390a16112ff335f612487565b565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036113495760405162461bcd60e51b81526004016109409061329a565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661137b6122c9565b6001600160a01b0316146113a15760405162461bcd60e51b8152600401610940906132e6565b6113aa826122e4565b610a75828260016122ec565b5f306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146114555760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c00000000000000006064820152608401610940565b505f5160206135005f395f51905f525b90565b5f4661147a60a0860160808701612e2f565b6001600160401b03161461148f57505f6114dc565b6114d97f00000000000000000000000000000000000000000000000000000000000000006114c26106446105dd88612f79565b6114d260e0880160c08901612e2f565b868661248f565b90505b9392505050565b5f466114f560a0840160808501612e2f565b6001600160401b03161461150a57505f919050565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166332676bc6306115466105dd86612f79565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401602060405180830381865afa15801561158d573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115b19190613332565b92915050565b6115bf612080565b6112ff5f612511565b60655433906001600160a01b031681146116365760405162461bcd60e51b815260206004820152602960248201527f4f776e61626c6532537465703a2063616c6c6572206973206e6f7420746865206044820152683732bb9037bbb732b960b91b6064820152608401610940565b6112a381612511565b5f6115b1620c35006101a06020601f8601819004020160041b61334d565b611665611ca2565b60c9805461ff0019166102001790556040513381527f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2589060200160405180910390a16112ff336001612487565b5f6116bb6122c9565b905090565b5f5f6116d7836562726964676560d01b600161252a565b6001600160a01b038116151594909350915050565b6116fc60e0820160c08301612e2f565b61170581611c3d565b61171560a0830160808401612e2f565b61171e81611c66565b611726611ca2565b61172e611cd4565b6117386002611d03565b611749610100840160e08501612a3b565b6001600160a01b0316336001600160a01b03161461177a576040516372b6e1c360e11b815260040160405180910390fd5b5f6117876105dd85612f79565b9050611794816001611d19565b61179f816003611fc3565b60405163019b28af60e61b81526003821860048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906366ca2bc0906024016020604051808303815f875af1158015611805573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118299190612f9d565b50506118356001611d03565b505050565b61184a60a0840160808501612e2f565b61185381611c3d565b61186360e0850160c08601612e2f565b61186c81611c66565b611874611ca2565b61187c611cd4565b6118866002611d03565b5f6118936105dd87612f79565b905061189f815f611d19565b604051631933b5e360e11b8152306004820152602481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906332676bc690604401602060405180830381865afa158015611908573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061192c9190613332565b6119495760405163ab035ad560e01b815260040160405180910390fd5b6119887f00000000000000000000000000000000000000000000000000000000000000006003831861198160e08a0160c08b01612e2f565b88886121b2565b50611994816004611fc3565b6119bd62bc399d60e11b6119ae6080890160608a01612a3b565b6001600160a01b0316906125cc565b15611a61576119dc81306119d760a08a0160808b01612e2f565b61269c565b6119ec6080870160608801612a3b565b6001600160a01b0316630178733a87610120013588846040518463ffffffff1660e01b8152600401611a1f929190613369565b5f604051808303818588803b158015611a36575f5ffd5b505af1158015611a48573d5f5f3e3d5ffd5b5050505050611a5c5f195f1b5f198061269c565b611a7d565b611a7d6101208701356188b861115d60c08a0160a08b01612a3b565b50611a886001611d03565b5050505050565b5f46611aa160e0860160c08701612e2f565b6001600160401b031614611ab657505f6114dc565b6114d97f0000000000000000000000000000000000000000000000000000000000000000611ae66105dd87612f79565b6114d260a0880160808901612e2f565b5f81604051602001611b08919061338a565b604051602081830303815290604052805190602001209050919050565b604080516060810182525f8082526020820181905291810191909152611b9c604080516060810182525f8082526020820181905291810191909152506040805160608101825260fd54815260fe546001600160a01b0381166020830152600160a01b90046001600160401b03169181019190915290565b80519091501580611bae575080515f19145b1561146557604051635ceed17360e01b815260040160405180910390fd5b611bd4612080565b606580546001600160a01b0383166001600160a01b03199091168117909155611c056033546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b46816001600160401b0316146112a357604051631c6c777560e31b815260040160405180910390fd5b6001600160401b0381161580611c84575046816001600160401b0316145b156112a357604051631c6c777560e31b815260040160405180910390fd5b611cb660c954610100900460ff1660021490565b156112ff5760405163bae6e2a960e01b815260040160405180910390fd5b6002611ce260c95460ff1690565b60ff16036112ff5760405163dfc60d8560e01b815260040160405180910390fd5b60c9805460ff191660ff92909216919091179055565b806004811115611d2b57611d2b612c8f565b5f83815260fc602052604090205460ff166004811115611d4d57611d4d612c8f565b14610a75576040516319d893ad60e21b815260040160405180910390fd5b5f80611d7f61012085016101008601612a3b565b6001600160a01b031603611d95575060016115b1565b30611da861012085016101008601612a3b565b6001600160a01b031603611dbe575060016115b1565b6001600160a01b038216611dda61012085016101008601612a3b565b6001600160a01b031603611df0575060016115b1565b6004611e00610140850185613065565b905010158015611e375750637f07c94760e01b611e21610140850185613065565b611e2a916133c0565b6001600160e01b03191614155b80156114dc57506114dc611e5361012085016101008601612a3b565b6001600160a01b03163b151590565b5f6001600160a01b038516611e8a57604051634c67134d60e11b815260040160405180910390fd5b5f5f835160208501878988f195945050505050565b5f30611eb16080870160608801612a3b565b6001600160a01b031603611ec757611ec76133f8565b610120850135158015611ee75750611ee3610140860186613065565b1590505b15611ef457506001611fbb565b825f03611f0257505f611fbb565b611f2684611f166080880160608901612a3b565b6119d760a0890160808a01612e2f565b5f611f3961012087016101008801612a3b565b90506101208601355f611f50610140890189613065565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92018290525084519495509384935083925090506020850186888cf194505a90508515611faa57611faa81886126f1565b611fb65f19808061269c565b505050505b949350505050565b806004811115611fd557611fd5612c8f565b5f83815260fc602052604090205460ff166004811115611ff757611ff7612c8f565b03612015576040516319d893ad60e21b815260040160405180910390fd5b5f82815260fc60205260409020805482919060ff1916600183600481111561203f5761203f612c8f565b0217905550817f6c51882bc2ed67617f77a1e9b9a25d2caad8448647ecb093b357a603b2575634826040516120749190612cf9565b60405180910390a25050565b6033546001600160a01b031633146112ff5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610940565b5f54610100900460ff166121005760405162461bcd60e51b81526004016109409061340c565b612108612705565b6121266001600160a01b038216156121205781612511565b33612511565b5060c9805461ff001916610100179055565b6001600160a01b0381166112a35760405163538ba4f960e01b815260040160405180910390fd5b5f80612179612172610140850185613065565b905061163f565b63ffffffff169050806121aa6121956060860160408701612f84565b63ffffffff168361225d90919063ffffffff16565b039392505050565b5f856001600160a01b031663910af6ed856121d7876562726964676560d01b5f61252a565b8887876040518663ffffffff1660e01b81526004016121fa959493929190613457565b6020604051808303815f875af1925050508015612234575060408051601f3d908101601f1916820190925261223191810190612f9d565b60015b612251576040516314504c7360e31b815260040160405180910390fd5b90505b95945050505050565b5f81831161226b57816114dc565b5090919050565b5f81831161228057826114dc565b50919050565b815f0361229257505050565b6122ac83838360405180602001604052805f815250611e62565b61183557604051634c67134d60e11b815260040160405180910390fd5b5f5160206135005f395f51905f52546001600160a01b031690565b6112a3612080565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff161561231f576118358361272b565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015612379575060408051601f3d908101601f1916820190925261237691810190612f9d565b60015b6123dc5760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b6064820152608401610940565b5f5160206135005f395f51905f52811461244a5760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b6064820152608401610940565b506118358383836127c6565b61246a60c954610100900460ff1660021490565b6112ff5760405163bae6e2a960e01b815260040160405180910390fd5b610a75612080565b5f856001600160a01b031663ce9d0820856124b4876562726964676560d01b5f61252a565b8887876040518663ffffffff1660e01b81526004016124d7959493929190613457565b5f6040518083038186803b1580156124ed575f5ffd5b505afa9250505080156124fe575060015b61250957505f612254565b506001612254565b606580546001600160a01b03191690556112a3816127ea565b5f7f0000000000000000000000000000000000000000000000000000000000000000604051633632b1fb60e11b81526001600160401b03861660048201526024810185905283151560448201526001600160a01b039190911690636c6563f690606401602060405180830381865afa1580156125a8573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114d99190613498565b6040516001600160e01b0319821660248201525f90819081906001600160a01b0386169060440160408051601f198184030181529181526020820180516001600160e01b03166301ffc9a760e01b1790525161262891906134b3565b5f60405180830381855afa9150503d805f8114612660576040519150601f19603f3d011682016040523d82523d5f602084013e612665565b606091505b5091509150818015612678575080516020145b1561269457808060200190518101906126919190613332565b92505b505092915050565b604080516060810182528481526001600160a01b03909316602084018190526001600160401b03909216920182905260fd9290925560fe8054600160a01b9092026001600160e01b0319909216909217179055565b6126fc603f826134ce565b821015610a7557fe5b5f54610100900460ff166112ff5760405162461bcd60e51b81526004016109409061340c565b6001600160a01b0381163b6127985760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610940565b5f5160206135005f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b6127cf8361283b565b5f825111806127db5750805b15611835576108f6838361287a565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b6128448161272b565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b60606114dc83836040518060600160405280602781526020016135206027913960605f5f856001600160a01b0316856040516128b691906134b3565b5f60405180830381855af49150503d805f81146128ee576040519150601f19603f3d011682016040523d82523d5f602084013e6128f3565b606091505b50915091506129048683838761290e565b9695505050505050565b6060831561297c5782515f03612975576001600160a01b0385163b6129755760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610940565b5081611fbb565b611fbb83838151156129915781518083602001fd5b8060405162461bcd60e51b815260040161094091906134ed565b5f6101608284031215612280575f5ffd5b80151581146112a3575f5ffd5b5f5f604083850312156129da575f5ffd5b82356001600160401b038111156129ef575f5ffd5b6129fb858286016129ab565b9250506020830135612a0c816129bc565b809150509250929050565b6001600160a01b03811681146112a3575f5ffd5b8035612a3681612a17565b919050565b5f60208284031215612a4b575f5ffd5b81356114dc81612a17565b5f60208284031215612a66575f5ffd5b81356001600160401b03811115612a7b575f5ffd5b611fbb848285016129ab565b5f5b83811015612aa1578181015183820152602001612a89565b50505f910152565b5f8151808452612ac0816020860160208601612a87565b601f01601f19169290920160200192915050565b80516001600160401b031682525f6020820151612afc60208501826001600160401b03169052565b506040820151612b14604085018263ffffffff169052565b506060820151612b2f60608501826001600160a01b03169052565b506080820151612b4a60808501826001600160401b03169052565b5060a0820151612b6560a08501826001600160a01b03169052565b5060c0820151612b8060c08501826001600160401b03169052565b5060e0820151612b9b60e08501826001600160a01b03169052565b50610100820151612bb86101008501826001600160a01b03169052565b50610120820151610120840152610140820151610160610140850152611fbb610160850182612aa9565b828152604060208201525f6114d96040830184612ad4565b5f5f5f60408486031215612c0c575f5ffd5b83356001600160401b03811115612c21575f5ffd5b612c2d868287016129ab565b93505060208401356001600160401b03811115612c48575f5ffd5b8401601f81018613612c58575f5ffd5b80356001600160401b03811115612c6d575f5ffd5b866020828401011115612c7e575f5ffd5b939660209190910195509293505050565b634e487b7160e01b5f52602160045260245ffd5b60058110612cb357612cb3612c8f565b9052565b60408101612cc58285612ca3565b60048310612cd557612cd5612c8f565b8260208301529392505050565b5f60208284031215612cf2575f5ffd5b5035919050565b602081016115b18284612ca3565b634e487b7160e01b5f52604160045260245ffd5b60405161016081016001600160401b0381118282101715612d3e57612d3e612d07565b60405290565b5f82601f830112612d53575f5ffd5b81356001600160401b03811115612d6c57612d6c612d07565b604051601f8201601f19908116603f011681016001600160401b0381118282101715612d9a57612d9a612d07565b604052818152838201602001851015612db1575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f5f60408385031215612dde575f5ffd5b8235612de981612a17565b915060208301356001600160401b03811115612e03575f5ffd5b612e0f85828601612d44565b9150509250929050565b80356001600160401b0381168114612a36575f5ffd5b5f60208284031215612e3f575f5ffd5b6114dc82612e19565b803563ffffffff81168114612a36575f5ffd5b5f6101608284031215612e6c575f5ffd5b612e74612d1b565b9050612e7f82612e19565b8152612e8d60208301612e19565b6020820152612e9e60408301612e48565b6040820152612eaf60608301612a2b565b6060820152612ec060808301612e19565b6080820152612ed160a08301612a2b565b60a0820152612ee260c08301612e19565b60c0820152612ef360e08301612a2b565b60e0820152612f056101008301612a2b565b61010082015261012082810135908201526101408201356001600160401b03811115612f2f575f5ffd5b612f3b84828501612d44565b6101408301525092915050565b5f60208284031215612f58575f5ffd5b81356001600160401b03811115612f6d575f5ffd5b611fbb84828501612e5b565b5f6115b13683612e5b565b5f60208284031215612f94575f5ffd5b6114dc82612e48565b5f60208284031215612fad575f5ffd5b5051919050565b6020808252602e908201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160408201526d191e481a5b9a5d1a585b1a5e995960921b606082015260800190565b634e487b7160e01b5f52601160045260245ffd5b808201808211156115b1576115b1613002565b5f6001600160401b0382166001600160401b03810361304a5761304a613002565b60010192915050565b602081525f6114dc6020830184612ad4565b5f5f8335601e1984360301811261307a575f5ffd5b8301803591506001600160401b03821115613093575f5ffd5b6020019150368190038213156130a7575f5ffd5b9250929050565b634e487b7160e01b5f52601260045260245ffd5b5f5f8335601e198436030181126130d7575f5ffd5b83016020810192503590506001600160401b038111156130f5575f5ffd5b8036038213156130a7575f5ffd5b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b6131458261313883612e19565b6001600160401b03169052565b5f61315260208301612e19565b6001600160401b0316602084015261316c60408301612e48565b63ffffffff16604084015261318360608301612a2b565b6001600160a01b0316606084015261319d60808301612e19565b6001600160401b031660808401526131b760a08301612a2b565b6001600160a01b031660a08401526131d160c08301612e19565b6001600160401b031660c08401526131eb60e08301612a2b565b6001600160a01b031660e08401526132066101008301612a2b565b6001600160a01b0316610100840152610120828101359084015261322e6101408301836130c2565b61016061014086015261269161016086018284613103565b60a081525f61325860a083018561312b565b905063ffffffff835116602083015263ffffffff602084015116604083015263ffffffff60408401511660608301526060830151151560808301529392505050565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b5f60208284031215613342575f5ffd5b81516114dc816129bc565b63ffffffff81811683821601908111156115b1576115b1613002565b604081525f61337b604083018561312b565b90508260208301529392505050565b60408152600d60408201526c5441494b4f5f4d45535341474560981b6060820152608060208201525f6114dc6080830184612ad4565b80356001600160e01b031981169060048410156133f1576001600160e01b0319600485900360031b81901b82161691505b5092915050565b634e487b7160e01b5f52600160045260245ffd5b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b6001600160401b038616815260018060a01b0385166020820152836040820152608060608201525f61348d608083018486613103565b979650505050505050565b5f602082840312156134a8575f5ffd5b81516114dc81612a17565b5f82516134c4818460208701612a87565b9190910192915050565b5f826134e857634e487b7160e01b5f52601260045260245ffd5b500490565b602081525f6114dc6020830184612aa956fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220d82c8f7c970681ddfa323cbf4b55420679e492c19c2d89df90bab3191259c47f64736f6c634300081e0033", + "sourceMap": "643:25624:9:-:0;;;1088:4:84;1045:48;;3630:189:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3741:9;4375:22:12;:20;:22::i;:::-;-1:-1:-1;;;;;1688:23:13;;1680:54;;;;-1:-1:-1;;;1680:54:13;;;;;;;;;;;;-1:-1:-1;;;;;1744:22:13;;;;;3766:46:9::1;;::::0;-1:-1:-1;643:25624:9;;5939:280:48;6007:13;;;;;;;6006:14;5998:66;;;;-1:-1:-1;;;5998:66:48;;696:2:150;5998:66:48;;;678:21:150;735:2;715:18;;;708:30;774:34;754:18;;;747:62;-1:-1:-1;;;825:18:150;;;818:37;872:19;;5998:66:48;;;;;;;;6078:12;;6094:15;6078:12;;;:31;6074:139;;6125:12;:30;;-1:-1:-1;;6125:30:48;6140:15;6125:30;;;;;;6174:28;;1044:36:150;;;6174:28:48;;1032:2:150;1017:18;6174:28:48;;;;;;;6074:139;5939:280::o;14:177:150:-;93:13;;-1:-1:-1;;;;;135:31:150;;125:42;;115:70;;181:1;178;171:12;115:70;14:177;;;:::o;196:293::-;275:6;283;336:2;324:9;315:7;311:23;307:32;304:52;;;352:1;349;342:12;304:52;375:40;405:9;375:40;:::i;:::-;365:50;;434:49;479:2;468:9;464:18;434:49;:::i;:::-;424:59;;196:293;;;;;:::o;902:184::-;643:25624:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;", + "linkReferences": {} + }, + "deployedBytecode": { + "object": "0x6080604052600436106101fc575f3560e01c8063715018a611610113578063a730cdfb1161009d578063d0496d6a1161006d578063d0496d6a146105e2578063d1aaa5df1461062a578063e30c39781461064a578063eefbf17e14610667578063f2fde38b146106a5575f5ffd5b8063a730cdfb14610578578063b8acae0e1461058e578063be880c81146105ad578063c012fa77146105c3575f5ffd5b80638abf6077116100e35780638abf6077146104cb5780638da5cb5b146104df5780638e3881a9146104fc578063913b16cb1461053a5780639efc7a2e14610559575f5ffd5b8063715018a61461045b57806379ba50971461046f5780637cbadfaa146104835780638456cb59146104b7575f5ffd5b80633c6cf4731161019457806352d1902d1161016457806352d1902d146103b65780635862f6e1146103ca5780635c975abb146103e957806360620c6b1461040957806362d0945314610428575f5ffd5b80633c6cf473146103305780633f4ba83a1461036b578063422770fa1461037f5780634f1ef286146103a3575f5ffd5b80631bdb0037116101cf5780631bdb00371461029f5780632035065e146102c05780633075db56146102ed5780633659cfe614610311575f5ffd5b80630432873c1461020057806304f3bcec14610221578063069489a21461026c57806319ab453c14610280575b5f5ffd5b34801561020b575f5ffd5b5061021f61021a3660046129c9565b6106c4565b005b34801561022c575f5ffd5b507f00000000000000000000000000000000000000000000000000000000000000005b6040516001600160a01b0390911681526020015b60405180910390f35b348015610277575f5ffd5b5061021f6108fc565b34801561028b575f5ffd5b5061021f61029a366004612a3b565b6109b3565b6102b26102ad366004612a56565b610a79565b604051610263929190612be2565b3480156102cb575f5ffd5b506102df6102da366004612bfa565b610d8b565b604051610263929190612cb7565b3480156102f8575f5ffd5b506103016111c7565b6040519015158152602001610263565b34801561031c575f5ffd5b5061021f61032b366004612a3b565b6111df565b34801561033b575f5ffd5b5061035e61034a366004612ce2565b60fc6020525f908152604090205460ff1681565b6040516102639190612cf9565b348015610376575f5ffd5b5061021f6112a6565b34801561038a575f5ffd5b5061039562030d4081565b604051908152602001610263565b61021f6103b1366004612dcd565b611301565b3480156103c1575f5ffd5b506103956113b6565b3480156103d5575f5ffd5b506103016103e4366004612bfa565b611468565b3480156103f4575f5ffd5b5061030160c954610100900460ff1660021490565b348015610414575f5ffd5b50610301610423366004612a56565b6114e3565b348015610433575f5ffd5b5061024f7f000000000000000000000000000000000000000000000000000000000000000081565b348015610466575f5ffd5b5061021f6115b7565b34801561047a575f5ffd5b5061021f6115c8565b34801561048e575f5ffd5b506104a261049d366004612ce2565b61163f565b60405163ffffffff9091168152602001610263565b3480156104c2575f5ffd5b5061021f61165d565b3480156104d6575f5ffd5b5061024f6116b2565b3480156104ea575f5ffd5b506033546001600160a01b031661024f565b348015610507575f5ffd5b5061051b610516366004612e2f565b6116c0565b6040805192151583526001600160a01b03909116602083015201610263565b348015610545575f5ffd5b5061021f610554366004612a56565b6116ec565b348015610564575f5ffd5b5061021f610573366004612bfa565b61183a565b348015610583575f5ffd5b506104a26201d4c081565b348015610599575f5ffd5b506103016105a8366004612bfa565b611a8f565b3480156105b8575f5ffd5b506104a2620c350081565b3480156105ce575f5ffd5b506103956105dd366004612f48565b611af6565b3480156105ed575f5ffd5b506105f6611b25565b60408051825181526020808401516001600160a01b031690820152918101516001600160401b031690820152606001610263565b348015610635575f5ffd5b50610395610644366004612ce2565b60031890565b348015610655575f5ffd5b506065546001600160a01b031661024f565b348015610672575f5ffd5b5060fb5461068d90600160401b90046001600160401b031681565b6040516001600160401b039091168152602001610263565b3480156106b0575f5ffd5b5061021f6106bf366004612a3b565b611bcc565b6106d460e0830160c08401612e2f565b6106dd81611c3d565b6106ed60a0840160808501612e2f565b6106f681611c66565b6106fe611ca2565b610706611cd4565b6107106002611d03565b5f61071d6105dd86612f79565b905061072a816001611d19565b5f610755867f0000000000000000000000000000000000000000000000000000000000000000611d6b565b156107a0576107998661012001356188b860405180602001604052805f8152508960e00160208101906107889190612a3b565b6001600160a01b0316929190611e62565b905061081a565b6107b06060870160408801612f84565b63ffffffff1615806107bf5750845b80156107ed57506107d7610100870160e08801612a3b565b6001600160a01b0316336001600160a01b031614155b1561080b576040516372b6e1c360e11b815260040160405180910390fd5b61081786835a5f611e9f565b90505b80156108305761082b826002611fc3565b6108ea565b84156108d157610841826003611fc3565b60405163019b28af60e61b81526003831860048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906366ca2bc0906024016020604051808303815f875af11580156108a7573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108cb9190612f9d565b506108ea565b60405163161e3ead60e01b815260040160405180910390fd5b50506108f66001611d03565b50505050565b610904612080565b5f54600290610100900460ff1615801561092457505f5460ff8083169116105b6109495760405162461bcd60e51b815260040161094090612fb4565b60405180910390fd5b5f805460fb805467ffffffffffffffff1916905560ff82815561010083815561ff001991851661ffff19909316831717169091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a150565b5f54610100900460ff16158080156109d157505f54600160ff909116105b806109ea5750303b1580156109ea57505f5460ff166001145b610a065760405162461bcd60e51b815260040161094090612fb4565b5f805460ff191660011790558015610a27575f805461ff0019166101001790555b610a30826120da565b8015610a75575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b60408051610160810182525f8082526020820181905291810182905260608082018390526080820183905260a0820183905260c0820183905260e0820183905261010082018390526101208201839052610140820152610adf60c0840160a08501612a3b565b610ae881612138565b610af9610100850160e08601612a3b565b610b0281612138565b610b1461012086016101008701612a3b565b610b1d81612138565b610b2d60e0870160c08801612e2f565b610b3681611c66565b610b3e611ca2565b610b46611cd4565b610b506002611d03565b610b606060880160408901612f84565b63ffffffff165f03610ba857610b7c6040880160208901612e2f565b6001600160401b031615610ba35760405163c9f5178760e01b815260040160405180910390fd5b610bd0565b610bb18761215f565b5f03610bd0576040516308c2ad5360e01b815260040160405180910390fd5b5f610be461051660e08a0160c08b01612e2f565b50905080610c0557604051631c6c777560e31b815260040160405180910390fd5b34610c1660408a0160208b01612e2f565b610c2e906001600160401b03166101208b0135613016565b14610c4c57604051634ac2abdf60e11b815260040160405180910390fd5b610c5588612f79565b60fb8054919750600160401b9091046001600160401b0316906008610c7983613029565b82546101009290920a6001600160401b03818102199093169183160217909155908116875233606088015246166080870152610cb486611af6565b9650867fe33fd33b4f45b95b1c196242240c5b5233129d724b578f95b66ce8d8aae9351787604051610ce69190613053565b60405180910390a260405163019b28af60e61b8152600481018890527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906366ca2bc0906024016020604051808303815f875af1158015610d52573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d769190612f9d565b5050610d826001611d03565b50505050915091565b5f5f610d95611ca2565b610d9d611cd4565b610da76002611d03565b5f5a905046610dbc60e0880160c08901612e2f565b6001600160401b031614610de357604051631c6c777560e31b815260040160405180910390fd5b610df360a0870160808801612e2f565b6001600160401b03161580610e1f575046610e1460a0880160808901612e2f565b6001600160401b0316145b15610e3d57604051631c6c777560e31b815260040160405180910390fd5b604080516080810182525f808252602082018190529181018290526060810191909152610e71610100880160e08901612a3b565b6001600160a01b0316331480156060830152610ee057610e976060880160408901612f84565b63ffffffff165f03610ebc576040516372b6e1c360e11b815260040160405180910390fd5b62030d40851115610ee057604051631e3b03c960e01b815260040160405180910390fd5b5f610eed6105dd89612f79565b9050610ef9815f611d19565b63ffffffff86166020830152610f417f000000000000000000000000000000000000000000000000000000000000000082610f3a60a08c0160808d01612e2f565b8a8a6121b2565b63ffffffff1660408301525f610f77897f0000000000000000000000000000000000000000000000000000000000000000611d6b565b15610f9057506002945060019350610120880135610fd7565b5f8360600151610fa0575a610fa9565b610fa98a61215f565b9050610fbb8a84838760600151611e9f565b15610fcc57600296505f9550610fd5565b60019650600295505b505b610fe760408a0160208b01612e2f565b6001600160401b0316156111455761100560408a0160208b01612e2f565b611018906001600160401b031682613016565b90508260600151801561103f575061103660608a0160408b01612f84565b63ffffffff1615155b1561114557604083015163ffffffff16614e20025a61107c6110656101408d018d613065565b6020601f909101819004026101a00160041b919050565b63ffffffff9081168701919091036201d4c00181168086525f9183916110a59183919061225d16565b0390505f6110b960608d0160408e01612f84565b63ffffffff166110cf60408e0160208f01612e2f565b6001600160401b03168302816110e7576110e76130ae565b0490505f48830290505f61112b8e60200160208101906111079190612e2f565b6001600160401b0316848410156111235784840160011c611125565b845b90612272565b9586900395905061113f33826188b8612286565b50505050505b61116d816188b861115d6101008d0160e08e01612a3b565b6001600160a01b03169190612286565b6111778287611fc3565b817f8580f507761043ecdd2bdca084d6fb0109150b3d9842d854d34e3dea6d69387d8a856040516111a9929190613246565b60405180910390a2505050506111bf6001611d03565b935093915050565b5f60026111d660c95460ff1690565b60ff1614905090565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036112275760405162461bcd60e51b81526004016109409061329a565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166112596122c9565b6001600160a01b03161461127f5760405162461bcd60e51b8152600401610940906132e6565b611288816122e4565b604080515f808252602082019092526112a3918391906122ec565b50565b6112ae612456565b6112c260c9805461ff001916610100179055565b6040513381527f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa9060200160405180910390a16112ff335f612487565b565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036113495760405162461bcd60e51b81526004016109409061329a565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661137b6122c9565b6001600160a01b0316146113a15760405162461bcd60e51b8152600401610940906132e6565b6113aa826122e4565b610a75828260016122ec565b5f306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146114555760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c00000000000000006064820152608401610940565b505f5160206135005f395f51905f525b90565b5f4661147a60a0860160808701612e2f565b6001600160401b03161461148f57505f6114dc565b6114d97f00000000000000000000000000000000000000000000000000000000000000006114c26106446105dd88612f79565b6114d260e0880160c08901612e2f565b868661248f565b90505b9392505050565b5f466114f560a0840160808501612e2f565b6001600160401b03161461150a57505f919050565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166332676bc6306115466105dd86612f79565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401602060405180830381865afa15801561158d573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115b19190613332565b92915050565b6115bf612080565b6112ff5f612511565b60655433906001600160a01b031681146116365760405162461bcd60e51b815260206004820152602960248201527f4f776e61626c6532537465703a2063616c6c6572206973206e6f7420746865206044820152683732bb9037bbb732b960b91b6064820152608401610940565b6112a381612511565b5f6115b1620c35006101a06020601f8601819004020160041b61334d565b611665611ca2565b60c9805461ff0019166102001790556040513381527f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2589060200160405180910390a16112ff336001612487565b5f6116bb6122c9565b905090565b5f5f6116d7836562726964676560d01b600161252a565b6001600160a01b038116151594909350915050565b6116fc60e0820160c08301612e2f565b61170581611c3d565b61171560a0830160808401612e2f565b61171e81611c66565b611726611ca2565b61172e611cd4565b6117386002611d03565b611749610100840160e08501612a3b565b6001600160a01b0316336001600160a01b03161461177a576040516372b6e1c360e11b815260040160405180910390fd5b5f6117876105dd85612f79565b9050611794816001611d19565b61179f816003611fc3565b60405163019b28af60e61b81526003821860048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906366ca2bc0906024016020604051808303815f875af1158015611805573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118299190612f9d565b50506118356001611d03565b505050565b61184a60a0840160808501612e2f565b61185381611c3d565b61186360e0850160c08601612e2f565b61186c81611c66565b611874611ca2565b61187c611cd4565b6118866002611d03565b5f6118936105dd87612f79565b905061189f815f611d19565b604051631933b5e360e11b8152306004820152602481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906332676bc690604401602060405180830381865afa158015611908573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061192c9190613332565b6119495760405163ab035ad560e01b815260040160405180910390fd5b6119887f00000000000000000000000000000000000000000000000000000000000000006003831861198160e08a0160c08b01612e2f565b88886121b2565b50611994816004611fc3565b6119bd62bc399d60e11b6119ae6080890160608a01612a3b565b6001600160a01b0316906125cc565b15611a61576119dc81306119d760a08a0160808b01612e2f565b61269c565b6119ec6080870160608801612a3b565b6001600160a01b0316630178733a87610120013588846040518463ffffffff1660e01b8152600401611a1f929190613369565b5f604051808303818588803b158015611a36575f5ffd5b505af1158015611a48573d5f5f3e3d5ffd5b5050505050611a5c5f195f1b5f198061269c565b611a7d565b611a7d6101208701356188b861115d60c08a0160a08b01612a3b565b50611a886001611d03565b5050505050565b5f46611aa160e0860160c08701612e2f565b6001600160401b031614611ab657505f6114dc565b6114d97f0000000000000000000000000000000000000000000000000000000000000000611ae66105dd87612f79565b6114d260a0880160808901612e2f565b5f81604051602001611b08919061338a565b604051602081830303815290604052805190602001209050919050565b604080516060810182525f8082526020820181905291810191909152611b9c604080516060810182525f8082526020820181905291810191909152506040805160608101825260fd54815260fe546001600160a01b0381166020830152600160a01b90046001600160401b03169181019190915290565b80519091501580611bae575080515f19145b1561146557604051635ceed17360e01b815260040160405180910390fd5b611bd4612080565b606580546001600160a01b0383166001600160a01b03199091168117909155611c056033546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b46816001600160401b0316146112a357604051631c6c777560e31b815260040160405180910390fd5b6001600160401b0381161580611c84575046816001600160401b0316145b156112a357604051631c6c777560e31b815260040160405180910390fd5b611cb660c954610100900460ff1660021490565b156112ff5760405163bae6e2a960e01b815260040160405180910390fd5b6002611ce260c95460ff1690565b60ff16036112ff5760405163dfc60d8560e01b815260040160405180910390fd5b60c9805460ff191660ff92909216919091179055565b806004811115611d2b57611d2b612c8f565b5f83815260fc602052604090205460ff166004811115611d4d57611d4d612c8f565b14610a75576040516319d893ad60e21b815260040160405180910390fd5b5f80611d7f61012085016101008601612a3b565b6001600160a01b031603611d95575060016115b1565b30611da861012085016101008601612a3b565b6001600160a01b031603611dbe575060016115b1565b6001600160a01b038216611dda61012085016101008601612a3b565b6001600160a01b031603611df0575060016115b1565b6004611e00610140850185613065565b905010158015611e375750637f07c94760e01b611e21610140850185613065565b611e2a916133c0565b6001600160e01b03191614155b80156114dc57506114dc611e5361012085016101008601612a3b565b6001600160a01b03163b151590565b5f6001600160a01b038516611e8a57604051634c67134d60e11b815260040160405180910390fd5b5f5f835160208501878988f195945050505050565b5f30611eb16080870160608801612a3b565b6001600160a01b031603611ec757611ec76133f8565b610120850135158015611ee75750611ee3610140860186613065565b1590505b15611ef457506001611fbb565b825f03611f0257505f611fbb565b611f2684611f166080880160608901612a3b565b6119d760a0890160808a01612e2f565b5f611f3961012087016101008801612a3b565b90506101208601355f611f50610140890189613065565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92018290525084519495509384935083925090506020850186888cf194505a90508515611faa57611faa81886126f1565b611fb65f19808061269c565b505050505b949350505050565b806004811115611fd557611fd5612c8f565b5f83815260fc602052604090205460ff166004811115611ff757611ff7612c8f565b03612015576040516319d893ad60e21b815260040160405180910390fd5b5f82815260fc60205260409020805482919060ff1916600183600481111561203f5761203f612c8f565b0217905550817f6c51882bc2ed67617f77a1e9b9a25d2caad8448647ecb093b357a603b2575634826040516120749190612cf9565b60405180910390a25050565b6033546001600160a01b031633146112ff5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610940565b5f54610100900460ff166121005760405162461bcd60e51b81526004016109409061340c565b612108612705565b6121266001600160a01b038216156121205781612511565b33612511565b5060c9805461ff001916610100179055565b6001600160a01b0381166112a35760405163538ba4f960e01b815260040160405180910390fd5b5f80612179612172610140850185613065565b905061163f565b63ffffffff169050806121aa6121956060860160408701612f84565b63ffffffff168361225d90919063ffffffff16565b039392505050565b5f856001600160a01b031663910af6ed856121d7876562726964676560d01b5f61252a565b8887876040518663ffffffff1660e01b81526004016121fa959493929190613457565b6020604051808303815f875af1925050508015612234575060408051601f3d908101601f1916820190925261223191810190612f9d565b60015b612251576040516314504c7360e31b815260040160405180910390fd5b90505b95945050505050565b5f81831161226b57816114dc565b5090919050565b5f81831161228057826114dc565b50919050565b815f0361229257505050565b6122ac83838360405180602001604052805f815250611e62565b61183557604051634c67134d60e11b815260040160405180910390fd5b5f5160206135005f395f51905f52546001600160a01b031690565b6112a3612080565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff161561231f576118358361272b565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015612379575060408051601f3d908101601f1916820190925261237691810190612f9d565b60015b6123dc5760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b6064820152608401610940565b5f5160206135005f395f51905f52811461244a5760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b6064820152608401610940565b506118358383836127c6565b61246a60c954610100900460ff1660021490565b6112ff5760405163bae6e2a960e01b815260040160405180910390fd5b610a75612080565b5f856001600160a01b031663ce9d0820856124b4876562726964676560d01b5f61252a565b8887876040518663ffffffff1660e01b81526004016124d7959493929190613457565b5f6040518083038186803b1580156124ed575f5ffd5b505afa9250505080156124fe575060015b61250957505f612254565b506001612254565b606580546001600160a01b03191690556112a3816127ea565b5f7f0000000000000000000000000000000000000000000000000000000000000000604051633632b1fb60e11b81526001600160401b03861660048201526024810185905283151560448201526001600160a01b039190911690636c6563f690606401602060405180830381865afa1580156125a8573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114d99190613498565b6040516001600160e01b0319821660248201525f90819081906001600160a01b0386169060440160408051601f198184030181529181526020820180516001600160e01b03166301ffc9a760e01b1790525161262891906134b3565b5f60405180830381855afa9150503d805f8114612660576040519150601f19603f3d011682016040523d82523d5f602084013e612665565b606091505b5091509150818015612678575080516020145b1561269457808060200190518101906126919190613332565b92505b505092915050565b604080516060810182528481526001600160a01b03909316602084018190526001600160401b03909216920182905260fd9290925560fe8054600160a01b9092026001600160e01b0319909216909217179055565b6126fc603f826134ce565b821015610a7557fe5b5f54610100900460ff166112ff5760405162461bcd60e51b81526004016109409061340c565b6001600160a01b0381163b6127985760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610940565b5f5160206135005f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b6127cf8361283b565b5f825111806127db5750805b15611835576108f6838361287a565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b6128448161272b565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b60606114dc83836040518060600160405280602781526020016135206027913960605f5f856001600160a01b0316856040516128b691906134b3565b5f60405180830381855af49150503d805f81146128ee576040519150601f19603f3d011682016040523d82523d5f602084013e6128f3565b606091505b50915091506129048683838761290e565b9695505050505050565b6060831561297c5782515f03612975576001600160a01b0385163b6129755760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610940565b5081611fbb565b611fbb83838151156129915781518083602001fd5b8060405162461bcd60e51b815260040161094091906134ed565b5f6101608284031215612280575f5ffd5b80151581146112a3575f5ffd5b5f5f604083850312156129da575f5ffd5b82356001600160401b038111156129ef575f5ffd5b6129fb858286016129ab565b9250506020830135612a0c816129bc565b809150509250929050565b6001600160a01b03811681146112a3575f5ffd5b8035612a3681612a17565b919050565b5f60208284031215612a4b575f5ffd5b81356114dc81612a17565b5f60208284031215612a66575f5ffd5b81356001600160401b03811115612a7b575f5ffd5b611fbb848285016129ab565b5f5b83811015612aa1578181015183820152602001612a89565b50505f910152565b5f8151808452612ac0816020860160208601612a87565b601f01601f19169290920160200192915050565b80516001600160401b031682525f6020820151612afc60208501826001600160401b03169052565b506040820151612b14604085018263ffffffff169052565b506060820151612b2f60608501826001600160a01b03169052565b506080820151612b4a60808501826001600160401b03169052565b5060a0820151612b6560a08501826001600160a01b03169052565b5060c0820151612b8060c08501826001600160401b03169052565b5060e0820151612b9b60e08501826001600160a01b03169052565b50610100820151612bb86101008501826001600160a01b03169052565b50610120820151610120840152610140820151610160610140850152611fbb610160850182612aa9565b828152604060208201525f6114d96040830184612ad4565b5f5f5f60408486031215612c0c575f5ffd5b83356001600160401b03811115612c21575f5ffd5b612c2d868287016129ab565b93505060208401356001600160401b03811115612c48575f5ffd5b8401601f81018613612c58575f5ffd5b80356001600160401b03811115612c6d575f5ffd5b866020828401011115612c7e575f5ffd5b939660209190910195509293505050565b634e487b7160e01b5f52602160045260245ffd5b60058110612cb357612cb3612c8f565b9052565b60408101612cc58285612ca3565b60048310612cd557612cd5612c8f565b8260208301529392505050565b5f60208284031215612cf2575f5ffd5b5035919050565b602081016115b18284612ca3565b634e487b7160e01b5f52604160045260245ffd5b60405161016081016001600160401b0381118282101715612d3e57612d3e612d07565b60405290565b5f82601f830112612d53575f5ffd5b81356001600160401b03811115612d6c57612d6c612d07565b604051601f8201601f19908116603f011681016001600160401b0381118282101715612d9a57612d9a612d07565b604052818152838201602001851015612db1575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f5f60408385031215612dde575f5ffd5b8235612de981612a17565b915060208301356001600160401b03811115612e03575f5ffd5b612e0f85828601612d44565b9150509250929050565b80356001600160401b0381168114612a36575f5ffd5b5f60208284031215612e3f575f5ffd5b6114dc82612e19565b803563ffffffff81168114612a36575f5ffd5b5f6101608284031215612e6c575f5ffd5b612e74612d1b565b9050612e7f82612e19565b8152612e8d60208301612e19565b6020820152612e9e60408301612e48565b6040820152612eaf60608301612a2b565b6060820152612ec060808301612e19565b6080820152612ed160a08301612a2b565b60a0820152612ee260c08301612e19565b60c0820152612ef360e08301612a2b565b60e0820152612f056101008301612a2b565b61010082015261012082810135908201526101408201356001600160401b03811115612f2f575f5ffd5b612f3b84828501612d44565b6101408301525092915050565b5f60208284031215612f58575f5ffd5b81356001600160401b03811115612f6d575f5ffd5b611fbb84828501612e5b565b5f6115b13683612e5b565b5f60208284031215612f94575f5ffd5b6114dc82612e48565b5f60208284031215612fad575f5ffd5b5051919050565b6020808252602e908201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160408201526d191e481a5b9a5d1a585b1a5e995960921b606082015260800190565b634e487b7160e01b5f52601160045260245ffd5b808201808211156115b1576115b1613002565b5f6001600160401b0382166001600160401b03810361304a5761304a613002565b60010192915050565b602081525f6114dc6020830184612ad4565b5f5f8335601e1984360301811261307a575f5ffd5b8301803591506001600160401b03821115613093575f5ffd5b6020019150368190038213156130a7575f5ffd5b9250929050565b634e487b7160e01b5f52601260045260245ffd5b5f5f8335601e198436030181126130d7575f5ffd5b83016020810192503590506001600160401b038111156130f5575f5ffd5b8036038213156130a7575f5ffd5b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b6131458261313883612e19565b6001600160401b03169052565b5f61315260208301612e19565b6001600160401b0316602084015261316c60408301612e48565b63ffffffff16604084015261318360608301612a2b565b6001600160a01b0316606084015261319d60808301612e19565b6001600160401b031660808401526131b760a08301612a2b565b6001600160a01b031660a08401526131d160c08301612e19565b6001600160401b031660c08401526131eb60e08301612a2b565b6001600160a01b031660e08401526132066101008301612a2b565b6001600160a01b0316610100840152610120828101359084015261322e6101408301836130c2565b61016061014086015261269161016086018284613103565b60a081525f61325860a083018561312b565b905063ffffffff835116602083015263ffffffff602084015116604083015263ffffffff60408401511660608301526060830151151560808301529392505050565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b5f60208284031215613342575f5ffd5b81516114dc816129bc565b63ffffffff81811683821601908111156115b1576115b1613002565b604081525f61337b604083018561312b565b90508260208301529392505050565b60408152600d60408201526c5441494b4f5f4d45535341474560981b6060820152608060208201525f6114dc6080830184612ad4565b80356001600160e01b031981169060048410156133f1576001600160e01b0319600485900360031b81901b82161691505b5092915050565b634e487b7160e01b5f52600160045260245ffd5b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b6001600160401b038616815260018060a01b0385166020820152836040820152608060608201525f61348d608083018486613103565b979650505050505050565b5f602082840312156134a8575f5ffd5b81516114dc81612a17565b5f82516134c4818460208701612a87565b9190910192915050565b5f826134e857634e487b7160e01b5f52601260045260245ffd5b500490565b602081525f6114dc6020830184612aa956fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220d82c8f7c970681ddfa323cbf4b55420679e492c19c2d89df90bab3191259c47f64736f6c634300081e0033", + "sourceMap": "643:25624:9:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11832:1159;;;;;;;;;;-1:-1:-1;11832:1159:9;;;;;:::i;:::-;;:::i;:::-;;5694:92:12;;;;;;;;;;-1:-1:-1;5769:10:12;5694:92;;;-1:-1:-1;;;;;1061:32:150;;;1043:51;;1031:2;1016:18;5694:92:12;;;;;;;;4320:196:9;;;;;;;;;;;;;:::i;4142:92::-;;;;;;;;;;-1:-1:-1;4142:92:9;;;;;:::i;:::-;;:::i;4550:1319::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;7586:4212::-;;;;;;;;;;-1:-1:-1;7586:4212:9;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;5484:104:12:-;;;;;;;;;;;;;:::i;:::-;;;5930:14:150;;5923:22;5905:41;;5893:2;5878:18;5484:104:12;5765:187:150;3143:195:84;;;;;;;;;;-1:-1:-1;3143:195:84;;;;;:::i;:::-;;:::i;2641:62:9:-;;;;;;;;;;-1:-1:-1;2641:62:9;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;:::i;4911:245:12:-;;;;;;;;;;;;;:::i;1713:57:9:-;;;;;;;;;;;;1763:7;1713:57;;;;;6495:25:150;;;6483:2;6468:18;1713:57:9;6349:177:150;3657:220:84;;;;;;:::i;:::-;;:::i;2762:131::-;;;;;;;;;;;;;:::i;14121:410:9:-;;;;;;;;;;-1:-1:-1;14121:410:9;;;;;:::i;:::-;;:::i;5384:94:12:-;;;;;;;;;;;;5454:8;;;;;:17;:8;650:1;5454:17;;5384:94;13578:250:9;;;;;;;;;;-1:-1:-1;13578:250:9;;;;;:::i;:::-;;:::i;2372:45::-;;;;;;;;;;;;;;;2085:101:43;;;;;;;;;;;;;:::i;2031:212:42:-;;;;;;;;;;;;;:::i;16688:150:9:-;;;;;;;;;;-1:-1:-1;16688:150:9;;;;;:::i;:::-;;:::i;:::-;;;8946:10:150;8934:23;;;8916:42;;8904:2;8889:18;16688:150:9;8772:192:150;4625:241:12;;;;;;;;;;;;;:::i;5162:90::-;;;;;;;;;;;;;:::i;1462:85:43:-;;;;;;;;;;-1:-1:-1;1534:6:43;;-1:-1:-1;;;;;1534:6:43;1462:85;;15412:249:9;;;;;;;;;;-1:-1:-1;15412:249:9;;;;;:::i;:::-;;:::i;:::-;;;;9527:14:150;;9520:22;9502:41;;-1:-1:-1;;;;;9579:32:150;;;9574:2;9559:18;;9552:60;9475:18;15412:249:9;9334:284:150;13025:519:9;;;;;;;;;;-1:-1:-1;13025:519:9;;;;;:::i;:::-;;:::i;5903:1380::-;;;;;;;;;;-1:-1:-1;5903:1380:9;;;;;:::i;:::-;;:::i;1584:45::-;;;;;;;;;;;;1622:7;1584:45;;14835:329;;;;;;;;;;-1:-1:-1;14835:329:9;;;;;:::i;:::-;;:::i;1354:44::-;;;;;;;;;;;;1391:7;1354:44;;15996:148;;;;;;;;;;-1:-1:-1;15996:148:9;;;;;:::i;:::-;;:::i;15737:225::-;;;;;;;;;;;;;:::i;:::-;;;;11466:13:150;;11448:32;;11540:4;11528:17;;;11522:24;-1:-1:-1;;;;;11518:50:150;11496:20;;;11489:80;11617:17;;;11611:24;-1:-1:-1;;;;;11607:49:150;11585:20;;;11578:79;11436:2;11421:18;15737:225:9;11252:411:150;16325:146:9;;;;;;;;;;-1:-1:-1;16325:146:9;;;;;:::i;:::-;16449:13;16422:42;;16325:146;1144:99:42;;;;;;;;;;-1:-1:-1;1223:13:42;;-1:-1:-1;;;;;1223:13:42;1144:99;;2514:27:9;;;;;;;;;;-1:-1:-1;2514:27:9;;;;-1:-1:-1;;;2514:27:9;;-1:-1:-1;;;;;2514:27:9;;;;;;-1:-1:-1;;;;;11830:31:150;;;11812:50;;11800:2;11785:18;2514:27:9;11668:200:150;1436:178:42;;;;;;;;;;-1:-1:-1;1436:178:42;;;;;:::i;:::-;;:::i;11832:1159:9:-;11959:20;;;;;;;;:::i;:::-;3486:25;3502:8;3486:15;:25::i;:::-;11999:19:::1;::::0;;;::::1;::::0;::::1;;:::i;:::-;3581:25;3597:8;3581:15;:25::i;:::-;2739:17:12::2;:15;:17::i;:::-;2345:18:::3;:16;:18::i;:::-;2373:24;650:1;2373:17;:24::i;:::-;12077:15:9::4;12095:21;;12107:8:::0;12095:21:::4;:::i;:::-;12077:39;;12126;12139:7;12148:16;12126:12;:39::i;:::-;12176:14;12204:51;12231:8;12241:13;12204:26;:51::i;:::-;12200:472;;;12283:71;12312:8;:14;;;2230:6;12283:71;;;;;;;;;;;::::0;:8:::4;:18;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;12283:28:9::4;::::0;:71;;:28:::4;:71::i;:::-;12271:83;;12200:472;;;12390:17;::::0;;;::::4;::::0;::::4;;:::i;:::-;:22;;::::0;;:40:::4;;;12416:14;12390:40;12389:78;;;;-1:-1:-1::0;12449:18:9::4;::::0;;;::::4;::::0;::::4;;:::i;:::-;-1:-1:-1::0;;;;;12435:32:9::4;:10;-1:-1:-1::0;;;;;12435:32:9::4;;;12389:78;12385:145;;;12494:21;;-1:-1:-1::0;;;12494:21:9::4;;;;;;;;;;;12385:145;12606:55;12625:8;12635:7;12644:9;12655:5;12606:18;:55::i;:::-;12594:67;;12200:472;12686:9;12682:303;;;12711:42;12732:7;12741:11;12711:20;:42::i;:::-;12682:303;;;12774:14;12770:215;;;12804:44;12825:7;12834:13;12804:20;:44::i;:::-;12863:57;::::0;-1:-1:-1;;;12863:57:9;;16449:13;16422:42;;12863:57:::4;::::0;::::4;6495:25:150::0;12863:13:9::4;-1:-1:-1::0;;;;;12863:24:9::4;::::0;::::4;::::0;6468:18:150;;12863:57:9::4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;12770:215;;;12958:16;;-1:-1:-1::0;;;12958:16:9::4;;;;;;;;;;;12770:215;12067:924;;2418:25:12::3;611:1;2418:17;:25::i;:::-;3521:1:9::1;11832:1159:::0;;;:::o;4320:196::-;1355:13:43;:11;:13::i;:::-;4882::48::1;::::0;4370:1:9::1;::::0;4882:13:48::1;::::0;::::1;;;4881:14;:40:::0;::::1;;;-1:-1:-1::0;4899:12:48::1;::::0;:22:::1;::::0;;::::1;:12:::0;::::1;:22;4881:40;4873:99;;;;-1:-1:-1::0;;;4873:99:48::1;;;;;;;:::i;:::-;;;;;;;;;4982:12;:22:::0;;4444:11:9::2;:15:::0;;-1:-1:-1;;4444:15:9::2;::::0;;4982:22:48::1;4469:15:9::0;;;4982:22:48::1;4494:15:9::0;;;-1:-1:-1;;4982:22:48;;::::1;-1:-1:-1::0;;5014:20:48;;;;;::::1;5055:21;::::0;;;5091:20:::1;::::0;13006:36:150;;;5091:20:48::1;::::0;12994:2:150;12979:18;5091:20:48::1;;;;;;;1378:1:43;4320:196:9:o:0;4142:92::-;3279:19:48;3302:13;;;;;;3301:14;;3347:34;;;;-1:-1:-1;3365:12:48;;3380:1;3365:12;;;;:16;3347:34;3346:108;;;-1:-1:-1;3426:4:48;1713:19:64;:23;;;3387:66:48;;-1:-1:-1;3436:12:48;;;;;:17;3387:66;3325:201;;;;-1:-1:-1;;;3325:201:48;;;;;;;:::i;:::-;3536:12;:16;;-1:-1:-1;;3536:16:48;3551:1;3536:16;;;3562:65;;;;3596:13;:20;;-1:-1:-1;;3596:20:48;;;;;3562:65;4203:24:9::1;4220:6;4203:16;:24::i;:::-;3651:14:48::0;3647:99;;;3697:5;3681:21;;-1:-1:-1;;3681:21:48;;;3721:14;;-1:-1:-1;13006:36:150;;3721:14:48;;12994:2:150;12979:18;3721:14:48;;;;;;;3647:99;3269:483;4142:92:9;:::o;4550:1319::-;-1:-1:-1;;;;;;;;4860:16:9;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4668:17:9;;;;;;;;:::i;:::-;2950:24:12;2968:5;2950:17;:24::i;:::-;4707:18:9::1;::::0;;;::::1;::::0;::::1;;:::i;:::-;2950:24:12;2968:5;2950:17;:24::i;:::-;4747:11:9::2;::::0;;;::::2;::::0;::::2;;:::i;:::-;2950:24:12;2968:5;2950:17;:24::i;:::-;4778:20:9::3;::::0;;;::::3;::::0;::::3;;:::i;:::-;3581:25;3597:8;3581:15;:25::i;:::-;2739:17:12::4;:15;:17::i;:::-;2345:18:::5;:16;:18::i;:::-;2373:24;650:1;2373:17;:24::i;:::-;4921:17:9::6;::::0;;;::::6;::::0;::::6;;:::i;:::-;:22;;4942:1;4921:22:::0;4917:197:::6;;4963:12;::::0;;;::::6;::::0;::::6;;:::i;:::-;-1:-1:-1::0;;;;;4963:17:9::6;::::0;4959:45:::6;;4989:15;;-1:-1:-1::0;;;4989:15:9::6;;;;;;;;;;;4959:45;4917:197;;;5025:29;5045:8;5025:19;:29::i;:::-;5058:1;5025:34:::0;5021:93:::6;;5082:21;;-1:-1:-1::0;;;5082:21:9::6;;;;;;;;;;;5021:93;5179:21;5205:40;5224:20;::::0;;;::::6;::::0;::::6;;:::i;5205:40::-;5178:67;;;5298:16;5293:49;;5323:19;;-1:-1:-1::0;;;5323:19:9::6;;;;;;;;;;;5293:49;5452:9;5436:12;::::0;;;::::6;::::0;::::6;;:::i;:::-;5419:29;::::0;-1:-1:-1;;;;;5419:29:9::6;:14;::::0;::::6;;:29;:::i;:::-;:42;5415:72;;5470:17;;-1:-1:-1::0;;;5470:17:9::6;;;;;;;;;;;5415:72;5498:19;5509:8:::0;5498:19:::6;:::i;:::-;5624:13;:15:::0;;5498:19;;-1:-1:-1;;;;5624:15:9;;::::6;-1:-1:-1::0;;;;;5624:15:9::6;::::0;:13:::6;:15;::::0;::::6;:::i;:::-;::::0;;::::6;::::0;;;::::6;-1:-1:-1::0;;;;;5624:15:9;;::::6;;::::0;;::::6;::::0;;::::6;;;::::0;;;5610:29;;::::6;::::0;;5665:10:::6;5649:13;::::0;::::6;:26:::0;5714:13:::6;5685:43;:19;::::0;::::6;:43:::0;5750:21:::6;5610:29:::0;5750:11:::6;:21::i;:::-;5739:32;;5799:8;5787:31;5809:8;5787:31;;;;;;:::i;:::-;;;;;;;;5828:34;::::0;-1:-1:-1;;;5828:34:9;;::::6;::::0;::::6;6495:25:150::0;;;5828:13:9::6;-1:-1:-1::0;;;;;5828:24:9::6;::::0;::::6;::::0;6468:18:150;;5828:34:9::6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;4907:962;2418:25:12::5;611:1;2418:17;:25::i;:::-;2984:1:::3;::::2;::::1;4550:1319:9::0;;;;:::o;7586:4212::-;7759:14;7775:20;2739:17:12;:15;:17::i;:::-;2345:18:::1;:16;:18::i;:::-;2373:24;650:1;2373:17;:24::i;:::-;7811:16:9::2;7830:9;7811:28:::0;-1:-1:-1;7958:13:9::2;7934:20;::::0;;;::::2;::::0;::::2;;:::i;:::-;-1:-1:-1::0;;;;;7934:37:9::2;;7930:69;;7980:19;;-1:-1:-1::0;;;7980:19:9::2;;;;;;;;;;;7930:69;8093:19;::::0;;;::::2;::::0;::::2;;:::i;:::-;-1:-1:-1::0;;;;;8093:24:9::2;::::0;;:64:::2;;-1:-1:-1::0;8144:13:9::2;8121:19;::::0;;;::::2;::::0;::::2;;:::i;:::-;-1:-1:-1::0;;;;;8121:36:9::2;;8093:64;8089:121;;;8180:19;;-1:-1:-1::0;;;8180:19:9::2;;;;;;;;;;;8089:121;-1:-1:-1::0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8299:18:9::2;::::0;;;::::2;::::0;::::2;;:::i;:::-;-1:-1:-1::0;;;;;8285:32:9::2;:10;:32;::::0;::::2;8258:24;::::0;::::2;:59:::0;8412:196:::2;;8460:17;::::0;;;::::2;::::0;::::2;;:::i;:::-;:22;;8481:1;8460:22:::0;8456:56:::2;;8491:21;;-1:-1:-1::0;;;8491:21:9::2;;;;;;;;;;;8456:56;1763:7;8530:39:::0;::::2;8526:71;;;8578:19;;-1:-1:-1::0;;;8578:19:9::2;;;;;;;;;;;8526:71;8618:15;8636:21;;8648:8:::0;8636:21:::2;:::i;:::-;8618:39;;8668:33;8681:7;8690:10;8668:12;:33::i;:::-;8712:39;::::0;::::2;:15;::::0;::::2;:39:::0;8793:73:::2;8814:13;8829:7:::0;8838:19:::2;::::0;;;::::2;::::0;::::2;;:::i;:::-;8859:6;;8793:20;:73::i;:::-;8761:105;;:17;::::0;::::2;:105:::0;8877:20:::2;8911:51;8938:8:::0;8948:13:::2;8911:26;:51::i;:::-;8907:829;;;-1:-1:-1::0;9214:11:9::2;::::0;-1:-1:-1;9249:34:9::2;::::0;-1:-1:-1;9176:14:9::2;::::0;::::2;;8907:829;;;9314:16;9333:5;:24;;;:68;;9392:9;9333:68;;;9360:29;9380:8;9360:19;:29::i;:::-;9314:87;;9420:73;9439:8;9449:7;9458:8;9468:5;:24;;;9420:18;:73::i;:::-;9416:310;;;9523:11;9513:21;;9562:26;9552:36;;9416:310;;;9637:16;9627:26;;9681:30;9671:40;;9416:310;9300:436;8907:829;9750:12;::::0;;;::::2;::::0;::::2;;:::i;:::-;-1:-1:-1::0;;;;;9750:17:9::2;::::0;9746:1855:::2;;9799:12;::::0;;;::::2;::::0;::::2;;:::i;:::-;9783:28;::::0;-1:-1:-1;;;;;9783:28:9::2;::::0;::::2;:::i;:::-;;;9830:5;:24;;;:50;;;;-1:-1:-1::0;9858:17:9::2;::::0;;;::::2;::::0;::::2;;:::i;:::-;:22;;::::0;::::2;9830:50;9826:1765;;;10616:17;::::0;::::2;::::0;:51:::2;;1906:6;10616:51;11037:9;10964:42;10985:13;;::::0;::::2;:8:::0;:13:::2;:::i;:::-;22623:2:::0;22617;22604:15;;;22603:22;;;:27;22633:3;22603:33;22641:1;22602:40;;;-1:-1:-1;22056:604:9;10964:42:::2;10938:68;::::0;;::::2;::::0;;:108;;;;1622:7:::2;10938:108:::0;10881:187;::::2;::::0;;;:22:::2;::::0;11149:6;;11112:34:::2;::::0;11149:6;;10881:187;11112:10:::2;:34;:::i;:::-;:43;::::0;-1:-1:-1;11177:14:9::2;11222:17;::::0;;;::::2;::::0;::::2;;:::i;:::-;11194:45;;11207:12;::::0;;;::::2;::::0;::::2;;:::i;:::-;-1:-1:-1::0;;;;;11194:25:9::2;:10;:25;:45;;;;;:::i;:::-;;11177:62;;11261:15;11292:13;11279:10;:26;11261:44;;11327:11;11365:72;11424:8;:12;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;11365:72:9::2;11377:6;11366:7;:17;;:52;;11396:16:::0;;::::2;11417:1;11395:23;11366:52;;;11386:6;11366:52;11365:58:::0;::::2;:72::i;:::-;11460:19:::0;;;::::2;::::0;11327:110;-1:-1:-1;11501:57:9::2;:10;11327:110:::0;2230:6:::2;11501:29;:57::i;:::-;9900:1677;;;;;9826:1765;11611:74;11649:12:::0;2230:6:::2;11611:18;::::0;;;::::2;::::0;::::2;;:::i;:::-;-1:-1:-1::0;;;;;11611:37:9::2;::::0;:74;:37:::2;:74::i;:::-;11696:38;11717:7;11726;11696:20;:38::i;:::-;11766:7;11749:42;11775:8;11785:5;11749:42;;;;;;;:::i;:::-;;;;;;;;7801:3997;;;;2418:25:12::1;611:1;2418:17;:25::i;:::-;7586:4212:9::0;;;;;;:::o;5484:104:12:-;5531:4;650:1;5554:18;6882:9;;;;;6786:112;5554:18;:27;;;5547:34;;5484:104;:::o;3143:195:84:-;-1:-1:-1;;;;;1654:6:84;1637:23;1645:4;1637:23;1629:80;;;;-1:-1:-1;;;1629:80:84;;;;;;;:::i;:::-;1751:6;-1:-1:-1;;;;;1727:30:84;:20;:18;:20::i;:::-;-1:-1:-1;;;;;1727:30:84;;1719:87;;;;-1:-1:-1;;;1719:87:84;;;;;;;:::i;:::-;3224:36:::1;3242:17;3224;:36::i;:::-;3311:12;::::0;;3321:1:::1;3311:12:::0;;;::::1;::::0;::::1;::::0;;;3270:61:::1;::::0;3292:17;;3311:12;3270:21:::1;:61::i;:::-;3143:195:::0;:::o;4911:245:12:-;2575:14;:12;:14::i;:::-;4958:10:::1;6435:8:::0;:17;;-1:-1:-1;;6435:17:12;;;;;6388:71;4958:10:::1;4983:20;::::0;4992:10:::1;1043:51:150::0;;4983:20:12::1;::::0;1031:2:150;1016:18;4983:20:12::1;;;;;;;5115:34;5131:10;5143:5;5115:15;:34::i;:::-;4911:245::o:0;3657:220:84:-;-1:-1:-1;;;;;1654:6:84;1637:23;1645:4;1637:23;1629:80;;;;-1:-1:-1;;;1629:80:84;;;;;;;:::i;:::-;1751:6;-1:-1:-1;;;;;1727:30:84;:20;:18;:20::i;:::-;-1:-1:-1;;;;;1727:30:84;;1719:87;;;;-1:-1:-1;;;1719:87:84;;;;;;;:::i;:::-;3772:36:::1;3790:17;3772;:36::i;:::-;3818:52;3840:17;3859:4;3865;3818:21;:52::i;2762:131::-:0;2840:7;2080:4;-1:-1:-1;;;;;2089:6:84;2072:23;;2064:92;;;;-1:-1:-1;;;2064:92:84;;18600:2:150;2064:92:84;;;18582:21:150;18639:2;18619:18;;;18612:30;18678:34;18658:18;;;18651:62;18749:26;18729:18;;;18722:54;18793:19;;2064:92:84;18398:420:150;2064:92:84;-1:-1:-1;;;;;;;;;;;;2166:1:84::1;2762:131:::0;:::o;14121:410:9:-;14265:4;14312:13;14289:19;;;;;;;;:::i;:::-;-1:-1:-1;;;;;14289:36:9;;14285:54;;-1:-1:-1;14334:5:9;14327:12;;14285:54;14357:167;14388:13;14415:45;14438:21;;14450:8;14438:21;:::i;14415:45::-;14474:20;;;;;;;;:::i;:::-;14508:6;;14357:17;:167::i;:::-;14350:174;;14121:410;;;;;;:::o;13578:250::-;13651:4;13694:13;13671:19;;;;;;;;:::i;:::-;-1:-1:-1;;;;;13671:36:9;;13667:54;;-1:-1:-1;13716:5:9;;13578:250;-1:-1:-1;13578:250:9:o;13667:54::-;-1:-1:-1;;;;;13738:13:9;:26;;13781:4;13797:21;;13809:8;13797:21;:::i;:::-;13738:83;;-1:-1:-1;;;;;;13738:83:9;;;;;;;-1:-1:-1;;;;;19015:32:150;;;13738:83:9;;;18997:51:150;19064:18;;;19057:34;18970:18;;13738:83:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13731:90;13578:250;-1:-1:-1;;13578:250:9:o;2085:101:43:-;1355:13;:11;:13::i;:::-;2149:30:::1;2176:1;2149:18;:30::i;2031:212:42:-:0;1223:13;;965:10:65;;-1:-1:-1;;;;;1223:13:42;2130:24;;2122:78;;;;-1:-1:-1;;;2122:78:42;;19554:2:150;2122:78:42;;;19536:21:150;19593:2;19573:18;;;19566:30;19632:34;19612:18;;;19605:62;-1:-1:-1;;;19683:18:150;;;19676:39;19732:19;;2122:78:42;19352:405:150;2122:78:42;2210:26;2229:6;2210:18;:26::i;16688:150:9:-;16760:6;16785:46;1391:7;22633:3;22623:2;22617;22604:15;;22603:22;;;:27;:33;22641:1;22602:40;16785:46;:::i;4625:241:12:-;2739:17;:15;:17::i;:::-;6359:8;:16;;-1:-1:-1;;6359:16:12;;;;;4696:18:::1;::::0;4703:10:::1;1043:51:150::0;;4696:18:12::1;::::0;1031:2:150;1016:18;4696::12::1;;;;;;;4826:33;4842:10;4854:4;4826:15;:33::i;5162:90::-:0;5199:7;5225:20;:18;:20::i;:::-;5218:27;;5162:90;:::o;15412:249:9:-;15502:13;15517:19;15566:42;15574:8;-1:-1:-1;;;15603:4:9;15566:7;:42::i;:::-;-1:-1:-1;;;;;15629:25:9;;;;;15552:56;;-1:-1:-1;15412:249:9;-1:-1:-1;;15412:249:9:o;13025:519::-;13108:20;;;;;;;;:::i;:::-;3486:25;3502:8;3486:15;:25::i;:::-;13148:19:::1;::::0;;;::::1;::::0;::::1;;:::i;:::-;3581:25;3597:8;3581:15;:25::i;:::-;2739:17:12::2;:15;:17::i;:::-;2345:18:::3;:16;:18::i;:::-;2373:24;650:1;2373:17;:24::i;:::-;13244:18:9::4;::::0;;;::::4;::::0;::::4;;:::i;:::-;-1:-1:-1::0;;;;;13230:32:9::4;:10;-1:-1:-1::0;;;;;13230:32:9::4;;13226:91;;13285:21;;-1:-1:-1::0;;;13285:21:9::4;;;;;;;;;;;13226:91;13327:15;13345:21;;13357:8:::0;13345:21:::4;:::i;:::-;13327:39;;13376;13389:7;13398:16;13376:12;:39::i;:::-;13426:44;13447:7;13456:13;13426:20;:44::i;:::-;13480:57;::::0;-1:-1:-1;;;13480:57:9;;16449:13;16422:42;;13480:57:::4;::::0;::::4;6495:25:150::0;13480:13:9::4;-1:-1:-1::0;;;;;13480:24:9::4;::::0;::::4;::::0;6468:18:150;;13480:57:9::4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;13216:328;2418:25:12::3;611:1;2418:17;:25::i;:::-;3521:1:9::1;13025:519:::0;;:::o;5903:1380::-;6033:19;;;;;;;;:::i;:::-;3486:25;3502:8;3486:15;:25::i;:::-;6072:20:::1;::::0;;;::::1;::::0;::::1;;:::i;:::-;3581:25;3597:8;3581:15;:25::i;:::-;2739:17:12::2;:15;:17::i;:::-;2345:18:::3;:16;:18::i;:::-;2373:24;650:1;2373:17;:24::i;:::-;6151:15:9::4;6169:21;;6181:8:::0;6169:21:::4;:::i;:::-;6151:39;;6200:33;6213:7;6222:10;6200:12;:33::i;:::-;6249:50;::::0;-1:-1:-1;;;6249:50:9;;6284:4:::4;6249:50;::::0;::::4;18997:51:150::0;19064:18;;;19057:34;;;6249:13:9::4;-1:-1:-1::0;;;;;6249:26:9::4;::::0;::::4;::::0;18970:18:150;;6249:50:9::4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6244:109;;6322:20;;-1:-1:-1::0;;;6322:20:9::4;;;;;;;;;;;6244:109;6363:120;6397:13;16449::::0;16422:42;;6445:20:::4;::::0;;;::::4;::::0;::::4;;:::i;:::-;6467:6;;6363:20;:120::i;:::-;;6494:46;6515:7;6524:15;6494:20;:46::i;:::-;6670:68;-1:-1:-1::0;;;6670:13:9::4;::::0;;;::::4;::::0;::::4;;:::i;:::-;-1:-1:-1::0;;;;;6670:31:9::4;::::0;::::4;:68::i;:::-;6666:611;;;6754:58;6768:7:::0;6785:4:::4;6792:19;::::0;;;::::4;::::0;::::4;;:::i;:::-;6754:13;:58::i;:::-;6875:13;::::0;;;::::4;::::0;::::4;;:::i;:::-;-1:-1:-1::0;;;;;6857:63:9::4;;6929:8;:14;;;6946:8;6956:7;6857:107;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7040:120;-1:-1:-1::0;;7071:21:9::4;;-1:-1:-1::0;;2348:17:9;7040:13:::4;:120::i;:::-;6666:611;;;7191:75;7228:14;::::0;::::4;;2230:6;7191:17;::::0;;;::::4;::::0;::::4;;:::i;:75::-;6141:1142;2418:25:12::3;611:1;2418:17;:25::i;:::-;3521:1:9::1;5903:1380:::0;;;;:::o;14835:329::-;14981:4;15029:13;15005:20;;;;;;;;:::i;:::-;-1:-1:-1;;;;;15005:37:9;;15001:55;;-1:-1:-1;15051:5:9;15044:12;;15001:55;15073:84;15091:13;15106:21;;15118:8;15106:21;:::i;:::-;15129:19;;;;;;;;:::i;15996:148::-;16063:7;16127:8;16099:37;;;;;;;;:::i;:::-;;;;;;;;;;;;;16089:48;;;;;;16082:55;;15996:148;;;:::o;15737:225::-;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;15817:14:9;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;20226:12:9;;;;;;;;20233:5;20226:12;;;;;-1:-1:-1;;;;;20226:12:9;;;;;;-1:-1:-1;;;20226:12:9;;-1:-1:-1;;;;;20226:12:9;;;;;;;;;20145:100;15817:14;15845:12;;15810:21;;-1:-1:-1;15845:17:9;;:58;;-1:-1:-1;15866:12:9;;-1:-1:-1;;15866:37:9;15845:58;15841:115;;;15926:19;;-1:-1:-1;;;15926:19:9;;;;;;;;;;;1436:178:42;1355:13:43;:11;:13::i;:::-;1525::42::1;:24:::0;;-1:-1:-1;;;;;1525:24:42;::::1;-1:-1:-1::0;;;;;;1525:24:42;;::::1;::::0;::::1;::::0;;;1589:7:::1;1534:6:43::0;;-1:-1:-1;;;;;1534:6:43;;1462:85;1589:7:42::1;-1:-1:-1::0;;;;;1564:43:42::1;;;;;;;;;;;1436:178:::0;:::o;25982:130:9:-;26064:13;26052:8;-1:-1:-1;;;;;26052:25:9;;26048:57;;26086:19;;-1:-1:-1;;;26086:19:9;;;;;;;;;;;26118:147;-1:-1:-1;;;;;26188:13:9;;;;:42;;;26217:13;26205:8;-1:-1:-1;;;;;26205:25:9;;26188:42;26184:74;;;26239:19;;-1:-1:-1;;;26239:19:9;;;;;;;;;;;7435:99:12;7494:8;5454;;;;;:17;:8;650:1;5454:17;;5384:94;7494:8;7493:9;7485:42;;;;-1:-1:-1;;;7485:42:12;;;;;;;;;;;7216:112;650:1;7275:18;6882:9;;;;;6786:112;7275:18;:27;;;7267:54;;;;-1:-1:-1;;;7267:54:12;;;;;;;;;;;6653:97;6723:9;:20;;-1:-1:-1;;6723:20:12;;;;;;;;;;;;6653:97::o;21073:167:9:-;21191:15;21164:42;;;;;;;;:::i;:::-;:23;;;;:13;:23;;;;;;;;:42;;;;;;;;:::i;:::-;;21160:73;;21215:18;;-1:-1:-1;;;21215:18:9;;;;;;;;;;;21246:521;21408:4;;21432:11;;;;;;;;:::i;:::-;-1:-1:-1;;;;;21432:25:9;;21428:42;;-1:-1:-1;21466:4:9;21459:11;;21428:42;21507:4;21484:11;;;;;;;;:::i;:::-;-1:-1:-1;;;;;21484:28:9;;21480:45;;-1:-1:-1;21521:4:9;21514:11;;21480:45;-1:-1:-1;;;;;21539:38:9;;:11;;;;;;;;:::i;:::-;-1:-1:-1;;;;;21539:38:9;;21535:55;;-1:-1:-1;21586:4:9;21579:11;;21535:55;21632:1;21608:13;;;;:8;:13;:::i;:::-;:20;;:25;;:112;;;;-1:-1:-1;;;;21656:13:9;;;;:8;:13;:::i;:::-;21649:21;;;:::i;:::-;-1:-1:-1;;;;;;21649:71:9;;;21608:112;:152;;;;-1:-1:-1;21736:24:9;:11;;;;;;;;:::i;:::-;-1:-1:-1;;;;;21736:22:9;1713:19:64;:23;;;1423:320;810:850:19;974:13;-1:-1:-1;;;;;1058:17:19;;1050:49;;;;-1:-1:-1;;;1050:49:19;;;;;;;;;;;;1619:1;1590;1553:9;1547:16;1515:4;1504:9;1500:20;1460:7;1426:3;1392:9;1370:274;1358:286;810:850;-1:-1:-1;;;;;810:850:19:o;17315:949:9:-;17509:13;17570:4;17545:13;;;;;;;;:::i;:::-;-1:-1:-1;;;;;17545:30:9;;17538:38;;;;:::i;:::-;17591:14;;;;:19;:48;;;;-1:-1:-1;17614:13:9;;;;:8;:13;:::i;:::-;:25;;-1:-1:-1;17591:48:9;17587:65;;;-1:-1:-1;17648:4:9;17641:11;;17587:65;17667:9;17680:1;17667:14;17663:32;;-1:-1:-1;17690:5:9;17683:12;;17663:32;17706:59;17720:8;17730:13;;;;;;;;:::i;:::-;17745:19;;;;;;;;:::i;17706:59::-;17776:10;17789:11;;;;;;;;:::i;:::-;17776:24;-1:-1:-1;17826:14:9;;;;17810:13;17870;;;;17826:8;17870:13;:::i;:::-;17850:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;17998:11:9;;17850:33;;-1:-1:-1;17850:33:9;;;-1:-1:-1;17850:33:9;;-1:-1:-1;17998:11:9;-1:-1:-1;17991:4:9;17981:15;;17974:5;17970:2;17959:9;17954:62;17942:74;;18040:5;18029:16;;18069:24;18065:93;;;18109:38;18128:7;18137:9;18109:18;:38::i;:::-;18167:90;-1:-1:-1;;2348:17:9;;18167:13;:90::i;:::-;17528:736;;;;17315:949;;;;;;;:::o;18568:251::-;18681:7;18654:34;;;;;;;;:::i;:::-;:23;;;;:13;:23;;;;;;;;:34;;;;;;;;:::i;:::-;;18650:65;;18697:18;;-1:-1:-1;;;18697:18:9;;;;;;;;;;;18650:65;18725:23;;;;:13;:23;;;;;:33;;18751:7;;18725:23;-1:-1:-1;;18725:33:9;;18751:7;18725:33;;;;;;;;:::i;:::-;;;;;;18794:8;18773:39;18804:7;18773:39;;;;;;:::i;:::-;;;;;;;;18568:251;;:::o;1620:130:43:-;1534:6;;-1:-1:-1;;;;;1534:6:43;965:10:65;1683:23:43;1675:68;;;;-1:-1:-1;;;1675:68:43;;21454:2:150;1675:68:43;;;21436:21:150;;;21473:18;;;21466:30;21532:34;21512:18;;;21505:62;21584:18;;1675:68:43;21252:356:150;6100:208:12;5374:13:48;;;;;;;5366:69;;;;-1:-1:-1;;;5366:69:48;;;;;;;:::i;:::-;6186:16:12::1;:14;:16::i;:::-;6212:62;-1:-1:-1::0;;;;;6231:20:12;::::1;::::0;:42:::1;;6267:6;6212:18;:62::i;6231:42::-;6254:10;6212:18;:62::i;:::-;-1:-1:-1::0;6284:8:12::1;:17:::0;;-1:-1:-1;;6284:17:12::1;;;::::0;;6100:208::o;7540:116::-;-1:-1:-1;;;;;7613:19:12;;7605:44;;;;-1:-1:-1;;;7605:44:12;;;;;;;;;;;21773:277:9;21851:7;;21895:43;21917:13;;;;:8;:13;:::i;:::-;:20;;21895:21;:43::i;:::-;21870:68;;;-1:-1:-1;21870:68:9;21979:37;21998:17;;;;;;;;:::i;:::-;21979:37;;:14;:18;;:37;;;;:::i;:::-;:54;;21773:277;-1:-1:-1;;;21773:277:9:o;19512:536::-;19701:19;19740:14;-1:-1:-1;;;;;19740:34:9;;19788:8;19798:43;19806:8;-1:-1:-1;;;19835:5:9;19798:7;:43::i;:::-;19843:7;19852:6;;19740:128;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;-1:-1:-1;19740:128:9;;;;;;;;-1:-1:-1;;19740:128:9;;;;;;;;;;;;:::i;:::-;;;19736:306;;20008:23;;-1:-1:-1;;;20008:23:9;;;;;;;;;;;19736:306;19957:11;-1:-1:-1;19736:306:9;19512:536;;;;;;;:::o;731:110:22:-;791:7;822:2;817;:7;:17;;832:2;817:17;;;-1:-1:-1;827:2:22;;731:110;-1:-1:-1;731:110:22:o;416:::-;476:7;507:2;502;:7;:17;;517:2;502:17;;;-1:-1:-1;512:2:22;416:110;-1:-1:-1;416:110:22:o;1939:207:19:-;2039:7;2050:1;2039:12;2035:25;;1939:207;;;:::o;2035:25::-;2077:38;2087:3;2092:7;2101:9;2077:38;;;;;;;;;;;;:9;:38::i;:::-;2069:70;;;;-1:-1:-1;;;2069:70:19;;;;;;;;;;;1175:140:80;-1:-1:-1;;;;;;;;;;;1254:54:80;-1:-1:-1;;;;;1254:54:80;;1175:140::o;6465:75:12:-;1355:13:43;:11;:13::i;2494:922:80:-;689:66;2910:48;;;2906:504;;;2974:37;2993:17;2974:18;:37::i;2906:504::-;3064:17;-1:-1:-1;;;;;3046:50:80;;:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3046:52:80;;;;;;;;-1:-1:-1;;3046:52:80;;;;;;;;;;;;:::i;:::-;;;3042:291;;3262:56;;-1:-1:-1;;;3262:56:80;;22929:2:150;3262:56:80;;;22911:21:150;22968:2;22948:18;;;22941:30;23007:34;22987:18;;;22980:62;-1:-1:-1;;;23058:18:150;;;23051:44;23112:19;;3262:56:80;22727:410:150;3042:291:80;-1:-1:-1;;;;;;;;;;;3148:28:80;;3140:82;;;;-1:-1:-1;;;3140:82:80;;23344:2:150;3140:82:80;;;23326:21:150;23383:2;23363:18;;;23356:30;23422:34;23402:18;;;23395:62;-1:-1:-1;;;23473:18:150;;;23466:39;23522:19;;3140:82:80;23142:405:150;3140:82:80;3099:138;3346:53;3364:17;3383:4;3389:9;3346:17;:53::i;7334:95:12:-;7389:8;5454;;;;;:17;:8;650:1;5454:17;;5384:94;7389:8;7381:41;;;;-1:-1:-1;;;7381:41:12;;;;;;;;;;;6546:70;1355:13:43;:11;:13::i;20628:439:9:-;20827:4;20851:14;-1:-1:-1;;;;;20851:35:9;;20900:8;20910:43;20918:8;-1:-1:-1;;;20947:5:9;20910:7;:43::i;:::-;20955:7;20964:6;;20851:129;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20847:214;;-1:-1:-1;21045:5:9;21038:12;;20847:214;-1:-1:-1;21002:4:9;20995:11;;1798:153:42;1887:13;1880:20;;-1:-1:-1;;;;;;1880:20:42;;;1910:34;1935:8;1910:24;:34::i;2232:252:13:-;2382:7;5769:10:12;2412:65:13;;-1:-1:-1;;;2412:65:13;;-1:-1:-1;;;;;23765:31:150;;2412:65:13;;;23747:50:150;23813:18;;;23806:34;;;23883:14;;23876:22;23856:18;;;23849:50;-1:-1:-1;;;;;2412:29:13;;;;;;;23720:18:150;;2412:65:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;2485:392:19:-;2710:57;;-1:-1:-1;;;;;;24328:33:150;;2710:57:19;;;24310:52:150;2617:12:19;;;;;;-1:-1:-1;;;;;2693:16:19;;;24283:18:150;;2710:57:19;;;-1:-1:-1;;2710:57:19;;;;;;;;;;;;;;-1:-1:-1;;;;;2710:57:19;-1:-1:-1;;;2710:57:19;;;2693:75;;;2710:57;2693:75;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2645:123;;;;2782:7;:28;;;;;2793:4;:11;2808:2;2793:17;2782:28;2778:93;;;2847:4;2836:24;;;;;;;;;;;;:::i;:::-;2826:34;;2778:93;2635:242;;2485:392;;;;:::o;18998:155:9:-;19109:37;;;;;;;;;;;-1:-1:-1;;;;;19109:37:9;;;;;;;;;-1:-1:-1;;;;;19109:37:9;;;;;;;;19101:5;:45;;;;;;;-1:-1:-1;;;19101:45:9;;;-1:-1:-1;;;;;;19101:45:9;;;;;;;;;18998:155::o;23684:2292::-;25512:18;25528:2;25512:13;:18;:::i;:::-;25501:8;:29;25497:473;;;25937:9;747:59:65;5374:13:48;;;;;;;5366:69;;;;-1:-1:-1;;;5366:69:48;;;;;;;:::i;1406:259:80:-;-1:-1:-1;;;;;1713:19:64;;;1479:95:80;;;;-1:-1:-1;;;1479:95:80;;25089:2:150;1479:95:80;;;25071:21:150;25128:2;25108:18;;;25101:30;25167:34;25147:18;;;25140:62;-1:-1:-1;;;25218:18:150;;;25211:43;25271:19;;1479:95:80;24887:409:150;1479:95:80;-1:-1:-1;;;;;;;;;;;1584:74:80;;-1:-1:-1;;;;;;1584:74:80;-1:-1:-1;;;;;1584:74:80;;;;;;;;;;1406:259::o;2057:265::-;2165:29;2176:17;2165:10;:29::i;:::-;2222:1;2208:4;:11;:15;:28;;;;2227:9;2208:28;2204:112;;;2252:53;2281:17;2300:4;2252:28;:53::i;2687:187:43:-;2779:6;;;-1:-1:-1;;;;;2795:17:43;;;-1:-1:-1;;;;;;2795:17:43;;;;;;;2827:40;;2779:6;;;2795:17;2779:6;;2827:40;;2760:16;;2827:40;2750:124;2687:187;:::o;1771:152:80:-;1837:37;1856:17;1837:18;:37::i;:::-;1889:27;;-1:-1:-1;;;;;1889:27:80;;;;;;;;1771:152;:::o;6674:198:94:-;6757:12;6788:77;6809:6;6817:4;6788:77;;;;;;;;;;;;;;;;;7199:12;7224;7238:23;7265:6;-1:-1:-1;;;;;7265:19:94;7285:4;7265:25;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7223:67;;;;7307:69;7334:6;7342:7;7351:10;7363:12;7307:26;:69::i;:::-;7300:76;7058:325;-1:-1:-1;;;;;;7058:325:94:o;7671:628::-;7851:12;7879:7;7875:418;;;7906:10;:17;7927:1;7906:22;7902:286;;-1:-1:-1;;;;;1713:19:64;;;8113:60:94;;;;-1:-1:-1;;;8113:60:94;;25503:2:150;8113:60:94;;;25485:21:150;25542:2;25522:18;;;25515:30;25581:31;25561:18;;;25554:59;25630:18;;8113:60:94;25301:353:150;8113:60:94;-1:-1:-1;8208:10:94;8201:17;;7875:418;8249:33;8257:10;8269:12;8980:17;;:21;8976:379;;9208:10;9202:17;9264:15;9251:10;9247:2;9243:19;9236:44;8976:379;9331:12;9324:20;;-1:-1:-1;;;9324:20:94;;;;;;;;:::i;14:156:150:-;74:5;119:3;110:6;105:3;101:16;97:26;94:46;;;136:1;133;126:12;175:118;261:5;254:13;247:21;240:5;237:32;227:60;;283:1;280;273:12;298:485;390:6;398;451:2;439:9;430:7;426:23;422:32;419:52;;;467:1;464;457:12;419:52;507:9;494:23;-1:-1:-1;;;;;532:6:150;529:30;526:50;;;572:1;569;562:12;526:50;595:67;654:7;645:6;634:9;630:22;595:67;:::i;:::-;585:77;;;712:2;701:9;697:18;684:32;725:28;747:5;725:28;:::i;:::-;772:5;762:15;;;298:485;;;;;:::o;1105:131::-;-1:-1:-1;;;;;1180:31:150;;1170:42;;1160:70;;1226:1;1223;1216:12;1241:134;1309:20;;1338:31;1309:20;1338:31;:::i;:::-;1241:134;;;:::o;1380:247::-;1439:6;1492:2;1480:9;1471:7;1467:23;1463:32;1460:52;;;1508:1;1505;1498:12;1460:52;1547:9;1534:23;1566:31;1591:5;1566:31;:::i;1632:356::-;1718:6;1771:2;1759:9;1750:7;1746:23;1742:32;1739:52;;;1787:1;1784;1777:12;1739:52;1827:9;1814:23;-1:-1:-1;;;;;1852:6:150;1849:30;1846:50;;;1892:1;1889;1882:12;1846:50;1915:67;1974:7;1965:6;1954:9;1950:22;1915:67;:::i;2199:250::-;2284:1;2294:113;2308:6;2305:1;2302:13;2294:113;;;2384:11;;;2378:18;2365:11;;;2358:39;2330:2;2323:10;2294:113;;;-1:-1:-1;;2441:1:150;2423:16;;2416:27;2199:250::o;2454:270::-;2495:3;2533:5;2527:12;2560:6;2555:3;2548:19;2576:76;2645:6;2638:4;2633:3;2629:14;2622:4;2615:5;2611:16;2576:76;:::i;:::-;2706:2;2685:15;-1:-1:-1;;2681:29:150;2672:39;;;;2713:4;2668:50;;2454:270;-1:-1:-1;;2454:270:150:o;2729:1233::-;2815:12;;-1:-1:-1;;;;;2058:30:150;2046:43;;2779:3;2879:4;2872:5;2868:16;2862:23;2894:47;2935:4;2930:3;2926:14;2912:12;-1:-1:-1;;;;;2058:30:150;2046:43;;1993:102;2894:47;;2989:4;2982:5;2978:16;2972:23;3004:49;3047:4;3042:3;3038:14;3022;2176:10;2165:22;2153:35;;2100:94;3004:49;;3101:4;3094:5;3090:16;3084:23;3116:50;3160:4;3155:3;3151:14;3135;-1:-1:-1;;;;;854:31:150;842:44;;788:104;3116:50;;3214:4;3207:5;3203:16;3197:23;3229:49;3272:4;3267:3;3263:14;3247;-1:-1:-1;;;;;2058:30:150;2046:43;;1993:102;3229:49;;3326:4;3319:5;3315:16;3309:23;3341:50;3385:4;3380:3;3376:14;3360;-1:-1:-1;;;;;854:31:150;842:44;;788:104;3341:50;;3439:4;3432:5;3428:16;3422:23;3454:49;3497:4;3492:3;3488:14;3472;-1:-1:-1;;;;;2058:30:150;2046:43;;1993:102;3454:49;;3551:4;3544:5;3540:16;3534:23;3566:50;3610:4;3605:3;3601:14;3585;-1:-1:-1;;;;;854:31:150;842:44;;788:104;3566:50;;3664:6;3657:5;3653:18;3647:25;3681:52;3725:6;3720:3;3716:16;3700:14;-1:-1:-1;;;;;854:31:150;842:44;;788:104;3681:52;;3784:6;3777:5;3773:18;3767:25;3758:6;3753:3;3749:16;3742:51;3841:6;3834:5;3830:18;3824:25;3883:6;3874;3869:3;3865:16;3858:32;3906:50;3948:6;3943:3;3939:16;3923:14;3906:50;:::i;3967:329::-;4174:6;4163:9;4156:25;4217:2;4212;4201:9;4197:18;4190:30;4137:4;4237:53;4286:2;4275:9;4271:18;4263:6;4237:53;:::i;4301:836::-;4407:6;4415;4423;4476:2;4464:9;4455:7;4451:23;4447:32;4444:52;;;4492:1;4489;4482:12;4444:52;4532:9;4519:23;-1:-1:-1;;;;;4557:6:150;4554:30;4551:50;;;4597:1;4594;4587:12;4551:50;4620:67;4679:7;4670:6;4659:9;4655:22;4620:67;:::i;:::-;4610:77;;;4740:2;4729:9;4725:18;4712:32;-1:-1:-1;;;;;4759:8:150;4756:32;4753:52;;;4801:1;4798;4791:12;4753:52;4824:24;;4879:4;4871:13;;4867:27;-1:-1:-1;4857:55:150;;4908:1;4905;4898:12;4857:55;4948:2;4935:16;-1:-1:-1;;;;;4966:6:150;4963:30;4960:50;;;5006:1;5003;4996:12;4960:50;5051:7;5046:2;5037:6;5033:2;5029:15;5025:24;5022:37;5019:57;;;5072:1;5069;5062:12;5019:57;4301:836;;5103:2;5095:11;;;;;-1:-1:-1;5125:6:150;;-1:-1:-1;;;4301:836:150:o;5142:127::-;5203:10;5198:3;5194:20;5191:1;5184:31;5234:4;5231:1;5224:15;5258:4;5255:1;5248:15;5274:137;5352:1;5345:5;5342:12;5332:46;;5358:18;;:::i;:::-;5387;;5274:137::o;5416:344::-;5602:2;5587:18;;5614:41;5591:9;5637:6;5614:41;:::i;:::-;5685:1;5677:6;5674:13;5664:47;;5691:18;;:::i;:::-;5747:6;5742:2;5731:9;5727:18;5720:34;5416:344;;;;;:::o;5957:180::-;6016:6;6069:2;6057:9;6048:7;6044:23;6040:32;6037:52;;;6085:1;6082;6075:12;6037:52;-1:-1:-1;6108:23:150;;5957:180;-1:-1:-1;5957:180:150:o;6142:202::-;6285:2;6270:18;;6297:41;6274:9;6320:6;6297:41;:::i;6531:127::-;6592:10;6587:3;6583:20;6580:1;6573:31;6623:4;6620:1;6613:15;6647:4;6644:1;6637:15;6663:250;6730:2;6724:9;6772:6;6760:19;;-1:-1:-1;;;;;6794:34:150;;6830:22;;;6791:62;6788:88;;;6856:18;;:::i;:::-;6892:2;6885:22;6663:250;:::o;6918:745::-;6960:5;7013:3;7006:4;6998:6;6994:17;6990:27;6980:55;;7031:1;7028;7021:12;6980:55;7071:6;7058:20;-1:-1:-1;;;;;7093:6:150;7090:30;7087:56;;;7123:18;;:::i;:::-;7192:2;7186:9;7284:2;7246:17;;-1:-1:-1;;7242:31:150;;;7275:2;7238:40;7234:54;7222:67;;-1:-1:-1;;;;;7304:34:150;;7340:22;;;7301:62;7298:88;;;7366:18;;:::i;:::-;7402:2;7395:22;7426;;;7467:19;;;7488:4;7463:30;7460:39;-1:-1:-1;7457:59:150;;;7512:1;7509;7502:12;7457:59;7576:6;7569:4;7561:6;7557:17;7550:4;7542:6;7538:17;7525:58;7631:1;7603:19;;;7624:4;7599:30;7592:41;;;;7607:6;6918:745;-1:-1:-1;;;6918:745:150:o;7668:455::-;7745:6;7753;7806:2;7794:9;7785:7;7781:23;7777:32;7774:52;;;7822:1;7819;7812:12;7774:52;7861:9;7848:23;7880:31;7905:5;7880:31;:::i;:::-;7930:5;-1:-1:-1;7986:2:150;7971:18;;7958:32;-1:-1:-1;;;;;8002:30:150;;7999:50;;;8045:1;8042;8035:12;7999:50;8068:49;8109:7;8100:6;8089:9;8085:22;8068:49;:::i;:::-;8058:59;;;7668:455;;;;;:::o;8969:171::-;9036:20;;-1:-1:-1;;;;;9085:30:150;;9075:41;;9065:69;;9130:1;9127;9120:12;9145:184;9203:6;9256:2;9244:9;9235:7;9231:23;9227:32;9224:52;;;9272:1;9269;9262:12;9224:52;9295:28;9313:9;9295:28;:::i;9623:163::-;9690:20;;9750:10;9739:22;;9729:33;;9719:61;;9776:1;9773;9766:12;9791:1106;9845:5;9893:6;9881:9;9876:3;9872:19;9868:32;9865:52;;;9913:1;9910;9903:12;9865:52;9935:17;;:::i;:::-;9926:26;;9975:28;9993:9;9975:28;:::i;:::-;9968:5;9961:43;10036:37;10069:2;10058:9;10054:18;10036:37;:::i;:::-;10031:2;10024:5;10020:14;10013:61;10106:37;10139:2;10128:9;10124:18;10106:37;:::i;:::-;10101:2;10094:5;10090:14;10083:61;10176:38;10210:2;10199:9;10195:18;10176:38;:::i;:::-;10171:2;10164:5;10160:14;10153:62;10248:38;10281:3;10270:9;10266:19;10248:38;:::i;:::-;10242:3;10235:5;10231:15;10224:63;10320:39;10354:3;10343:9;10339:19;10320:39;:::i;:::-;10314:3;10307:5;10303:15;10296:64;10393:38;10426:3;10415:9;10411:19;10393:38;:::i;:::-;10387:3;10380:5;10376:15;10369:63;10465:39;10499:3;10488:9;10484:19;10465:39;:::i;:::-;10459:3;10452:5;10448:15;10441:64;10538:39;10572:3;10561:9;10557:19;10538:39;:::i;:::-;10532:3;10521:15;;10514:64;10651:3;10636:19;;;10623:33;10672:15;;;10665:32;10748:3;10733:19;;10720:33;-1:-1:-1;;;;;10765:30:150;;10762:50;;;10808:1;10805;10798:12;10762:50;10845:45;10886:3;10877:6;10866:9;10862:22;10845:45;:::i;:::-;10839:3;10832:5;10828:15;10821:70;;9791:1106;;;;:::o;10902:345::-;10986:6;11039:2;11027:9;11018:7;11014:23;11010:32;11007:52;;;11055:1;11052;11045:12;11007:52;11095:9;11082:23;-1:-1:-1;;;;;11120:6:150;11117:30;11114:50;;;11160:1;11157;11150:12;11114:50;11183:58;11233:7;11224:6;11213:9;11209:22;11183:58;:::i;11873:193::-;11975:9;12012:48;12045:14;12038:5;12012:48;:::i;12071:184::-;12129:6;12182:2;12170:9;12161:7;12157:23;12153:32;12150:52;;;12198:1;12195;12188:12;12150:52;12221:28;12239:9;12221:28;:::i;12260:184::-;12330:6;12383:2;12371:9;12362:7;12358:23;12354:32;12351:52;;;12399:1;12396;12389:12;12351:52;-1:-1:-1;12422:16:150;;12260:184;-1:-1:-1;12260:184:150:o;12449:410::-;12651:2;12633:21;;;12690:2;12670:18;;;12663:30;12729:34;12724:2;12709:18;;12702:62;-1:-1:-1;;;12795:2:150;12780:18;;12773:44;12849:3;12834:19;;12449:410::o;13252:127::-;13313:10;13308:3;13304:20;13301:1;13294:31;13344:4;13341:1;13334:15;13368:4;13365:1;13358:15;13384:125;13449:9;;;13470:10;;;13467:36;;;13483:18;;:::i;13514:204::-;13552:3;-1:-1:-1;;;;;13589:5:150;13585:30;-1:-1:-1;;;;;13630:7:150;13627:31;13624:57;;13661:18;;:::i;:::-;13710:1;13697:15;;13514:204;-1:-1:-1;;13514:204:150:o;13723:258::-;13902:2;13891:9;13884:21;13865:4;13922:53;13971:2;13960:9;13956:18;13948:6;13922:53;:::i;13986:521::-;14063:4;14069:6;14129:11;14116:25;14223:2;14219:7;14208:8;14192:14;14188:29;14184:43;14164:18;14160:68;14150:96;;14242:1;14239;14232:12;14150:96;14269:33;;14321:20;;;-1:-1:-1;;;;;;14353:30:150;;14350:50;;;14396:1;14393;14386:12;14350:50;14429:4;14417:17;;-1:-1:-1;14460:14:150;14456:27;;;14446:38;;14443:58;;;14497:1;14494;14487:12;14443:58;13986:521;;;;;:::o;14512:127::-;14573:10;14568:3;14564:20;14561:1;14554:31;14604:4;14601:1;14594:15;14628:4;14625:1;14618:15;14644:500;14702:5;14709:6;14769:3;14756:17;14855:2;14851:7;14840:8;14824:14;14820:29;14816:43;14796:18;14792:68;14782:96;;14874:1;14871;14864:12;14782:96;14902:33;;15006:4;14993:18;;;-1:-1:-1;14954:21:150;;-1:-1:-1;;;;;;15023:30:150;;15020:50;;;15066:1;15063;15056:12;15020:50;15113:6;15097:14;15093:27;15086:5;15082:39;15079:59;;;15134:1;15131;15124:12;15149:266;15237:6;15232:3;15225:19;15289:6;15282:5;15275:4;15270:3;15266:14;15253:43;-1:-1:-1;15341:1:150;15316:16;;;15334:4;15312:27;;;15305:38;;;;15397:2;15376:15;;;-1:-1:-1;;15372:29:150;15363:39;;;15359:50;;15149:266::o;15420:1482::-;15497:48;15541:3;15515:24;15533:5;15515:24;:::i;:::-;-1:-1:-1;;;;;2058:30:150;2046:43;;1993:102;15497:48;15479:3;15574:35;15603:4;15596:5;15592:16;15574:35;:::i;:::-;-1:-1:-1;;;;;2058:30:150;15659:4;15650:14;;2046:43;15696:35;15725:4;15714:16;;15696:35;:::i;:::-;2176:10;2165:22;15783:4;15774:14;;2153:35;15820:36;15850:4;15839:16;;15820:36;:::i;:::-;-1:-1:-1;;;;;854:31:150;15909:4;15900:14;;842:44;15946:35;15975:4;15964:16;;15946:35;:::i;:::-;-1:-1:-1;;;;;2058:30:150;16033:4;16024:14;;2046:43;16070:36;16100:4;16089:16;;16070:36;:::i;:::-;-1:-1:-1;;;;;854:31:150;16159:4;16150:14;;842:44;16196:35;16225:4;16214:16;;16196:35;:::i;:::-;-1:-1:-1;;;;;2058:30:150;16283:4;16274:14;;2046:43;16320:36;16350:4;16339:16;;16320:36;:::i;:::-;-1:-1:-1;;;;;854:31:150;16409:4;16400:14;;842:44;16446:38;16476:6;16465:18;;16446:38;:::i;:::-;-1:-1:-1;;;;;854:31:150;16537:6;16528:16;;842:44;16614:6;16603:18;;;16590:32;16638:16;;;16631:33;16709:57;16758:6;16747:18;;16603;16709:57;:::i;:::-;16800:6;16791;16786:3;16782:16;16775:32;16823:73;16888:6;16883:3;16879:16;16865:12;16849:14;16823:73;:::i;16907:660::-;17182:3;17171:9;17164:22;17145:4;17203:63;17261:3;17250:9;17246:19;17238:6;17203:63;:::i;:::-;17195:71;;17321:10;17312:6;17306:13;17302:30;17297:2;17286:9;17282:18;17275:58;17397:10;17391:2;17383:6;17379:15;17373:22;17369:39;17364:2;17353:9;17349:18;17342:67;17473:10;17467:2;17459:6;17455:15;17449:22;17445:39;17440:2;17429:9;17425:18;17418:67;17554:2;17546:6;17542:15;17536:22;17529:30;17522:38;17516:3;17505:9;17501:19;17494:67;16907:660;;;;;:::o;17572:408::-;17774:2;17756:21;;;17813:2;17793:18;;;17786:30;17852:34;17847:2;17832:18;;17825:62;-1:-1:-1;;;17918:2:150;17903:18;;17896:42;17970:3;17955:19;;17572:408::o;17985:::-;18187:2;18169:21;;;18226:2;18206:18;;;18199:30;18265:34;18260:2;18245:18;;18238:62;-1:-1:-1;;;18331:2:150;18316:18;;18309:42;18383:3;18368:19;;17985:408::o;19102:245::-;19169:6;19222:2;19210:9;19201:7;19197:23;19193:32;19190:52;;;19238:1;19235;19228:12;19190:52;19270:9;19264:16;19289:28;19311:5;19289:28;:::i;19762:167::-;19857:10;19830:18;;;19850;;;19826:43;;19881:19;;19878:45;;;19903:18;;:::i;19934:340::-;20143:2;20132:9;20125:21;20106:4;20163:62;20221:2;20210:9;20206:18;20198:6;20163:62;:::i;:::-;20155:70;;20261:6;20256:2;20245:9;20241:18;20234:34;19934:340;;;;;:::o;20279:493::-;20559:2;20548:9;20541:21;20598:2;20593;20582:9;20578:18;20571:30;-1:-1:-1;;;20632:2:150;20621:9;20617:18;20610:43;20691:3;20684:4;20673:9;20669:20;20662:33;20522:4;20712:54;20761:3;20750:9;20746:19;20738:6;20712:54;:::i;20777:338::-;20897:19;;-1:-1:-1;;;;;;20934:29:150;;;20983:1;20975:10;;20972:137;;;-1:-1:-1;;;;;;21044:1:150;21040:11;;;21037:1;21033:19;21029:46;;;21021:55;;21017:82;;-1:-1:-1;20972:137:150;;20777:338;;;;:::o;21120:127::-;21181:10;21176:3;21172:20;21169:1;21162:31;21212:4;21209:1;21202:15;21236:4;21233:1;21226:15;21613:407;21815:2;21797:21;;;21854:2;21834:18;;;21827:30;21893:34;21888:2;21873:18;;21866:62;-1:-1:-1;;;21959:2:150;21944:18;;21937:41;22010:3;21995:19;;21613:407::o;22025:508::-;-1:-1:-1;;;;;22268:6:150;22264:31;22253:9;22246:50;22361:1;22357;22352:3;22348:11;22344:19;22336:6;22332:32;22327:2;22316:9;22312:18;22305:60;22401:6;22396:2;22385:9;22381:18;22374:34;22444:3;22439:2;22428:9;22424:18;22417:31;22227:4;22465:62;22522:3;22511:9;22507:19;22499:6;22491;22465:62;:::i;:::-;22457:70;22025:508;-1:-1:-1;;;;;;;22025:508:150:o;23910:251::-;23980:6;24033:2;24021:9;24012:7;24008:23;24004:32;24001:52;;;24049:1;24046;24039:12;24001:52;24081:9;24075:16;24100:31;24125:5;24100:31;:::i;24373:287::-;24502:3;24540:6;24534:13;24556:66;24615:6;24610:3;24603:4;24595:6;24591:17;24556:66;:::i;:::-;24638:16;;;;;24373:287;-1:-1:-1;;24373:287:150:o;24665:217::-;24705:1;24731;24721:132;;24775:10;24770:3;24766:20;24763:1;24756:31;24810:4;24807:1;24800:15;24838:4;24835:1;24828:15;24721:132;-1:-1:-1;24867:9:150;;24665:217::o;25659:219::-;25808:2;25797:9;25790:21;25771:4;25828:44;25868:2;25857:9;25853:18;25845:6;25828:44;:::i", + "linkReferences": {}, + "immutableReferences": { + "20913": [ + { + "start": 4585, + "length": 32 + }, + { + "start": 4649, + "length": 32 + }, + { + "start": 4875, + "length": 32 + }, + { + "start": 4939, + "length": 32 + }, + { + "start": 5058, + "length": 32 + } + ], + "2530": [ + { + "start": 1081, + "length": 32 + }, + { + "start": 1841, + "length": 32 + }, + { + "start": 2137, + "length": 32 + }, + { + "start": 3332, + "length": 32 + }, + { + "start": 3850, + "length": 32 + }, + { + "start": 3923, + "length": 32 + }, + { + "start": 5268, + "length": 32 + }, + { + "start": 5396, + "length": 32 + }, + { + "start": 6071, + "length": 32 + }, + { + "start": 6331, + "length": 32 + }, + { + "start": 6478, + "length": 32 + }, + { + "start": 6843, + "length": 32 + } + ], + "4312": [ + { + "start": 559, + "length": 32 + }, + { + "start": 9517, + "length": 32 + } + ] + } + }, + "methodIdentifiers": { + "GAS_OVERHEAD()": "a730cdfb", + "GAS_RESERVE()": "be880c81", + "RELAYER_MAX_PROOF_BYTES()": "422770fa", + "acceptOwnership()": "79ba5097", + "context()": "d0496d6a", + "failMessage((uint64,uint64,uint32,address,uint64,address,uint64,address,address,uint256,bytes))": "913b16cb", + "getMessageMinGasLimit(uint256)": "7cbadfaa", + "hashMessage((uint64,uint64,uint32,address,uint64,address,uint64,address,address,uint256,bytes))": "c012fa77", + "impl()": "8abf6077", + "inNonReentrant()": "3075db56", + "init(address)": "19ab453c", + "init2()": "069489a2", + "isDestChainEnabled(uint64)": "8e3881a9", + "isMessageFailed((uint64,uint64,uint32,address,uint64,address,uint64,address,address,uint256,bytes),bytes)": "5862f6e1", + "isMessageReceived((uint64,uint64,uint32,address,uint64,address,uint64,address,address,uint256,bytes),bytes)": "b8acae0e", + "isMessageSent((uint64,uint64,uint32,address,uint64,address,uint64,address,address,uint256,bytes))": "60620c6b", + "messageStatus(bytes32)": "3c6cf473", + "nextMessageId()": "eefbf17e", + "owner()": "8da5cb5b", + "pause()": "8456cb59", + "paused()": "5c975abb", + "pendingOwner()": "e30c3978", + "processMessage((uint64,uint64,uint32,address,uint64,address,uint64,address,address,uint256,bytes),bytes)": "2035065e", + "proxiableUUID()": "52d1902d", + "recallMessage((uint64,uint64,uint32,address,uint64,address,uint64,address,address,uint256,bytes),bytes)": "9efc7a2e", + "renounceOwnership()": "715018a6", + "resolver()": "04f3bcec", + "retryMessage((uint64,uint64,uint32,address,uint64,address,uint64,address,address,uint256,bytes),bool)": "0432873c", + "sendMessage((uint64,uint64,uint32,address,uint64,address,uint64,address,address,uint256,bytes))": "1bdb0037", + "signalForFailedMessage(bytes32)": "d1aaa5df", + "signalService()": "62d09453", + "transferOwnership(address)": "f2fde38b", + "unpause()": "3f4ba83a", + "upgradeTo(address)": "3659cfe6", + "upgradeToAndCall(address,bytes)": "4f1ef286" + }, + "rawMetadata": "{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_resolver\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_signalService\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"ACCESS_DENIED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"B_INSUFFICIENT_GAS\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"B_INVALID_CHAINID\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"B_INVALID_CONTEXT\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"B_INVALID_FEE\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"B_INVALID_GAS_LIMIT\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"B_INVALID_STATUS\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"B_INVALID_VALUE\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"B_MESSAGE_NOT_SENT\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"B_PERMISSION_DENIED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"B_PROOF_TOO_LARGE\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"B_RETRY_FAILED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"B_SIGNAL_NOT_RECEIVED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ETH_TRANSFER_FAILED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FUNC_NOT_IMPLEMENTED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"INVALID_PAUSE_STATUS\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"REENTRANT_CALL\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"RESOLVER_NOT_FOUND\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZERO_ADDRESS\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZERO_VALUE\",\"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\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"msgHash\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"uint64\",\"name\":\"id\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"fee\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"gasLimit\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"srcChainId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"srcOwner\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"destChainId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"destOwner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"indexed\":false,\"internalType\":\"struct IBridge.Message\",\"name\":\"message\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"gasUsedInFeeCalc\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"proofSize\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"numCacheOps\",\"type\":\"uint32\"},{\"internalType\":\"bool\",\"name\":\"processedByRelayer\",\"type\":\"bool\"}],\"indexed\":false,\"internalType\":\"struct Bridge.ProcessingStats\",\"name\":\"stats\",\"type\":\"tuple\"}],\"name\":\"MessageProcessed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"msgHash\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"uint64\",\"name\":\"id\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"fee\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"gasLimit\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"srcChainId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"srcOwner\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"destChainId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"destOwner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"indexed\":false,\"internalType\":\"struct IBridge.Message\",\"name\":\"message\",\"type\":\"tuple\"}],\"name\":\"MessageSent\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"msgHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"enum IBridge.Status\",\"name\":\"status\",\"type\":\"uint8\"}],\"name\":\"MessageStatusChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferStarted\",\"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\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Paused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Unpaused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"GAS_OVERHEAD\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"GAS_RESERVE\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"RELAYER_MAX_PROOF_BYTES\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"acceptOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"context\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"msgHash\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"srcChainId\",\"type\":\"uint64\"}],\"internalType\":\"struct IBridge.Context\",\"name\":\"ctx_\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"id\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"fee\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"gasLimit\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"srcChainId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"srcOwner\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"destChainId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"destOwner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"internalType\":\"struct IBridge.Message\",\"name\":\"_message\",\"type\":\"tuple\"}],\"name\":\"failMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"dataLength\",\"type\":\"uint256\"}],\"name\":\"getMessageMinGasLimit\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"id\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"fee\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"gasLimit\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"srcChainId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"srcOwner\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"destChainId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"destOwner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"internalType\":\"struct IBridge.Message\",\"name\":\"_message\",\"type\":\"tuple\"}],\"name\":\"hashMessage\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"impl\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"inNonReentrant\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_owner\",\"type\":\"address\"}],\"name\":\"init\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"init2\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"_chainId\",\"type\":\"uint64\"}],\"name\":\"isDestChainEnabled\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"enabled_\",\"type\":\"bool\"},{\"internalType\":\"address\",\"name\":\"destBridge_\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"id\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"fee\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"gasLimit\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"srcChainId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"srcOwner\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"destChainId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"destOwner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"internalType\":\"struct IBridge.Message\",\"name\":\"_message\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"_proof\",\"type\":\"bytes\"}],\"name\":\"isMessageFailed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"id\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"fee\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"gasLimit\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"srcChainId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"srcOwner\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"destChainId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"destOwner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"internalType\":\"struct IBridge.Message\",\"name\":\"_message\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"_proof\",\"type\":\"bytes\"}],\"name\":\"isMessageReceived\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"id\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"fee\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"gasLimit\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"srcChainId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"srcOwner\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"destChainId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"destOwner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"internalType\":\"struct IBridge.Message\",\"name\":\"_message\",\"type\":\"tuple\"}],\"name\":\"isMessageSent\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"msgHash\",\"type\":\"bytes32\"}],\"name\":\"messageStatus\",\"outputs\":[{\"internalType\":\"enum IBridge.Status\",\"name\":\"status\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"nextMessageId\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"paused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pendingOwner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"id\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"fee\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"gasLimit\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"srcChainId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"srcOwner\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"destChainId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"destOwner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"internalType\":\"struct IBridge.Message\",\"name\":\"_message\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"_proof\",\"type\":\"bytes\"}],\"name\":\"processMessage\",\"outputs\":[{\"internalType\":\"enum IBridge.Status\",\"name\":\"status_\",\"type\":\"uint8\"},{\"internalType\":\"enum IBridge.StatusReason\",\"name\":\"reason_\",\"type\":\"uint8\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"proxiableUUID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"id\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"fee\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"gasLimit\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"srcChainId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"srcOwner\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"destChainId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"destOwner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"internalType\":\"struct IBridge.Message\",\"name\":\"_message\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"_proof\",\"type\":\"bytes\"}],\"name\":\"recallMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"resolver\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"id\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"fee\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"gasLimit\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"srcChainId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"srcOwner\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"destChainId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"destOwner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"internalType\":\"struct IBridge.Message\",\"name\":\"_message\",\"type\":\"tuple\"},{\"internalType\":\"bool\",\"name\":\"_isLastAttempt\",\"type\":\"bool\"}],\"name\":\"retryMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"id\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"fee\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"gasLimit\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"srcChainId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"srcOwner\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"destChainId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"destOwner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"internalType\":\"struct IBridge.Message\",\"name\":\"_message\",\"type\":\"tuple\"}],\"name\":\"sendMessage\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"msgHash_\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"uint64\",\"name\":\"id\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"fee\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"gasLimit\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"srcChainId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"srcOwner\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"destChainId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"destOwner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"internalType\":\"struct IBridge.Message\",\"name\":\"message_\",\"type\":\"tuple\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_msgHash\",\"type\":\"bytes32\"}],\"name\":\"signalForFailedMessage\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"signalService\",\"outputs\":[{\"internalType\":\"contract ISignalService\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"unpause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"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\"}],\"devdoc\":{\"custom:security-contact\":\"security@taiko.xyz\",\"details\":\"Labeled in address resolver as \\\"bridge\\\". Additionally, the code hash for the same address on L1 and L2 may be different.\",\"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.\"},\"MessageProcessed(bytes32,(uint64,uint64,uint32,address,uint64,address,uint64,address,address,uint256,bytes),(uint32,uint32,uint32,bool))\":{\"details\":\"A debug event for fine-tuning gas related constants in the future.\"},\"MessageSent(bytes32,(uint64,uint64,uint32,address,uint64,address,uint64,address,address,uint256,bytes))\":{\"params\":{\"message\":\"The message.\",\"msgHash\":\"The hash of the message.\"}},\"MessageStatusChanged(bytes32,uint8)\":{\"params\":{\"msgHash\":\"The hash of the message.\",\"status\":\"The new status of the message.\"}},\"Paused(address)\":{\"params\":{\"account\":\"The account that paused the contract.\"}},\"Unpaused(address)\":{\"params\":{\"account\":\"The account that unpaused the contract.\"}},\"Upgraded(address)\":{\"details\":\"Emitted when the implementation is upgraded.\"}},\"kind\":\"dev\",\"methods\":{\"acceptOwnership()\":{\"details\":\"The new owner accepts the ownership transfer.\"},\"context()\":{\"returns\":{\"ctx_\":\"The context of the current bridge operation.\"}},\"failMessage((uint64,uint64,uint32,address,uint64,address,uint64,address,address,uint256,bytes))\":{\"details\":\"This function can only be called by `message.destOwner`.\",\"params\":{\"_message\":\"The message to fail. message.\"}},\"getMessageMinGasLimit(uint256)\":{\"params\":{\"dataLength\":\"The length of message.data.\"},\"returns\":{\"_0\":\"The minimal gas limit required for sending this message.\"}},\"hashMessage((uint64,uint64,uint32,address,uint64,address,uint64,address,address,uint256,bytes))\":{\"params\":{\"_message\":\"The message struct variable to be hashed.\"},\"returns\":{\"_0\":\"The message's hash.\"}},\"init(address)\":{\"params\":{\"_owner\":\"The owner of this contract. msg.sender will be used if this value is zero.\"}},\"isDestChainEnabled(uint64)\":{\"params\":{\"_chainId\":\"The destination chain ID.\"},\"returns\":{\"destBridge_\":\"The bridge of the destination chain.\",\"enabled_\":\"True if the destination chain is enabled.\"}},\"isMessageFailed((uint64,uint64,uint32,address,uint64,address,uint64,address,address,uint256,bytes),bytes)\":{\"params\":{\"_message\":\"The message.\",\"_proof\":\"The merkle inclusion proof.\"},\"returns\":{\"_0\":\"true if the message has failed, false otherwise.\"}},\"isMessageReceived((uint64,uint64,uint32,address,uint64,address,uint64,address,address,uint256,bytes),bytes)\":{\"params\":{\"_message\":\"The message.\",\"_proof\":\"The merkle inclusion proof.\"},\"returns\":{\"_0\":\"true if the message has been received, false otherwise.\"}},\"isMessageSent((uint64,uint64,uint32,address,uint64,address,uint64,address,address,uint256,bytes))\":{\"params\":{\"_message\":\"The message.\"},\"returns\":{\"_0\":\"true if the message was sent.\"}},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"paused()\":{\"returns\":{\"_0\":\"true if paused, false otherwise.\"}},\"pendingOwner()\":{\"details\":\"Returns the address of the pending owner.\"},\"processMessage((uint64,uint64,uint32,address,uint64,address,uint64,address,address,uint256,bytes),bytes)\":{\"details\":\"To ensure successful execution, we recommend this transaction's gas limit not to be smaller than: `(message.gasLimit - GAS_RESERVE) * 64 / 63 + GAS_RESERVE`, Or we can use a simplified rule: `tx.gaslimit = message.gaslimit * 102%`.\",\"params\":{\"_message\":\"The message to be processed.\",\"_proof\":\"The merkle inclusion proof.\"},\"returns\":{\"status_\":\"The message's status after processing and the reason for the change.\"}},\"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.\"},\"recallMessage((uint64,uint64,uint32,address,uint64,address,uint64,address,address,uint256,bytes),bytes)\":{\"details\":\"Verifies via proof that the message was marked FAILED on the destination chain's Bridge, then releases the associated Ether or tokens on the source chain.\",\"params\":{\"_message\":\"The message whose associated Ether should be released.\",\"_proof\":\"The merkle inclusion proof.\"}},\"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.\"},\"resolver()\":{\"returns\":{\"_0\":\"The address of this contract.\"}},\"retryMessage((uint64,uint64,uint32,address,uint64,address,uint64,address,address,uint256,bytes),bool)\":{\"details\":\"This function can be called by any address, including the `message.destOwner`. It attempts to invoke the messageCall and updates the message status accordingly.\",\"params\":{\"_isLastAttempt\":\"Specifies if this is the last attempt to retry the message.\",\"_message\":\"The message to retry.\"}},\"sendMessage((uint64,uint64,uint32,address,uint64,address,uint64,address,address,uint256,bytes))\":{\"params\":{\"_message\":\"The message to be sent.\"},\"returns\":{\"message_\":\"The updated message sent.\",\"msgHash_\":\"The hash of the sent message.\"}},\"signalForFailedMessage(bytes32)\":{\"params\":{\"_msgHash\":\"The message hash.\"},\"returns\":{\"_0\":\"The failed representation of it as bytes32.\"}},\"transferOwnership(address)\":{\"details\":\"Starts the ownership transfer of the contract to a new account. Replaces the pending transfer if there is one. Can only be called by the current owner.\"},\"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.\"}},\"stateVariables\":{\"GAS_OVERHEAD\":{\"details\":\"The gas overhead for both receiving and invoking a message, as well as the proof calldata cost. This value should be fine-tuned with production data.\"},\"GAS_RESERVE\":{\"details\":\"The amount of gas that will be deducted from message.gasLimit before calculating the invocation gas limit. This value should be fine-tuned with production data.\"},\"RELAYER_MAX_PROOF_BYTES\":{\"details\":\"The max proof size for a message to be processable by a relayer.\"},\"_GAS_REFUND_PER_CACHE_OPERATION\":{\"details\":\"The amount of gas not to charge fee per cache operation.\"},\"_PLACEHOLDER\":{\"details\":\"Place holder value when not using transient storage\"},\"_SEND_ETHER_GAS_LIMIT\":{\"details\":\"Gas limit for sending Ether.\"},\"__ctx\":{\"details\":\"Slots 3 and 4\"},\"__reserved1\":{\"details\":\"Slot 1.\"},\"__reserved2\":{\"details\":\"Slot 5.\"},\"__reserved3\":{\"details\":\"Slot 6.\"},\"messageStatus\":{\"details\":\"Slot 2.\"},\"nextMessageId\":{\"return\":\"A unique id\",\"returns\":{\"_0\":\"A unique id\"}}},\"title\":\"Bridge\",\"version\":1},\"userdoc\":{\"events\":{\"MessageSent(bytes32,(uint64,uint64,uint32,address,uint64,address,uint64,address,address,uint256,bytes))\":{\"notice\":\"Emitted when a message is sent.\"},\"MessageStatusChanged(bytes32,uint8)\":{\"notice\":\"Emitted when the status of a message changes.\"},\"Paused(address)\":{\"notice\":\"Emitted when the contract is paused.\"},\"Unpaused(address)\":{\"notice\":\"Emitted when the contract is unpaused.\"}},\"kind\":\"user\",\"methods\":{\"context()\":{\"notice\":\"Gets the current context.\"},\"failMessage((uint64,uint64,uint32,address,uint64,address,uint64,address,address,uint256,bytes))\":{\"notice\":\"Mark a message as failed if the message is currently retriable.\"},\"getMessageMinGasLimit(uint256)\":{\"notice\":\"Returns the minimal gas limit required for sending a given message.\"},\"hashMessage((uint64,uint64,uint32,address,uint64,address,uint64,address,address,uint256,bytes))\":{\"notice\":\"Hash the message\"},\"init(address)\":{\"notice\":\"Initializes the contract.\"},\"init2()\":{\"notice\":\"This function shall be called by previously deployed contracts.\"},\"isDestChainEnabled(uint64)\":{\"notice\":\"Checks if the destination chain is enabled.\"},\"isMessageFailed((uint64,uint64,uint32,address,uint64,address,uint64,address,address,uint256,bytes),bytes)\":{\"notice\":\"Checks if a msgHash has failed on its destination chain. This is the 'readonly' version of proveMessageFailed.\"},\"isMessageReceived((uint64,uint64,uint32,address,uint64,address,uint64,address,address,uint256,bytes),bytes)\":{\"notice\":\"Checks if a msgHash has been received on its source chain. This is the 'readonly' version of proveMessageReceived.\"},\"isMessageSent((uint64,uint64,uint32,address,uint64,address,uint64,address,address,uint256,bytes))\":{\"notice\":\"Checks if the message was sent.\"},\"messageStatus(bytes32)\":{\"notice\":\"Mapping to store the status of a message from its hash.\"},\"nextMessageId()\":{\"notice\":\"Returns the unique id of the next bridge message\"},\"pause()\":{\"notice\":\"Pauses the contract.\"},\"paused()\":{\"notice\":\"Returns true if the contract is paused, and false otherwise.\"},\"processMessage((uint64,uint64,uint32,address,uint64,address,uint64,address,address,uint256,bytes),bytes)\":{\"notice\":\"Processes a bridge message on the destination chain. This function is callable by any address, including the `message.destOwner`.\"},\"recallMessage((uint64,uint64,uint32,address,uint64,address,uint64,address,address,uint256,bytes),bytes)\":{\"notice\":\"Recalls a message on its source chain after it has failed on the destination chain, releasing associated assets on the source chain.\"},\"resolver()\":{\"notice\":\"Returns the address of this contract.\"},\"retryMessage((uint64,uint64,uint32,address,uint64,address,uint64,address,address,uint256,bytes),bool)\":{\"notice\":\"Retries to invoke the messageCall after releasing associated Ether and tokens.\"},\"sendMessage((uint64,uint64,uint32,address,uint64,address,uint64,address,address,uint256,bytes))\":{\"notice\":\"Sends a message to the destination chain and takes custody of Ether required in this contract.\"},\"signalForFailedMessage(bytes32)\":{\"notice\":\"Returns a signal representing a failed/recalled message.\"},\"unpause()\":{\"notice\":\"Unpauses the contract.\"}},\"notice\":\"See the documentation for {IBridge}.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/shared/bridge/Bridge.sol\":\"Bridge\"},\"evmVersion\":\"shanghai\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@eth-fabric/urc/=node_modules/urc/src/\",\":@openzeppelin-upgrades/contracts/=node_modules/@openzeppelin/contracts-upgradeable/\",\":@openzeppelin/=node_modules/@openzeppelin/\",\":@optimism/=node_modules/optimism/\",\":@p256-verifier/contracts/=node_modules/p256-verifier/src/\",\":@risc0/contracts/=node_modules/risc0-ethereum/contracts/src/\",\":@solady/=node_modules/solady/\",\":@sp1-contracts/=node_modules/sp1-contracts/contracts/\",\":ds-test/=node_modules/ds-test/\",\":forge-std/=node_modules/forge-std/\",\":openzeppelin/=node_modules/@openzeppelin/\",\":optimism/=node_modules/optimism/\",\":p256-verifier/=node_modules/p256-verifier/\",\":risc0-ethereum/=node_modules/risc0-ethereum/\",\":script/=script/\",\":solady/src/=node_modules/solady/src/\",\":solady/utils/=node_modules/solady/src/utils/\",\":sp1-contracts/=node_modules/sp1-contracts/\",\":src/=contracts/\",\":test/=test/\",\":urc/=node_modules/urc/\"]},\"sources\":{\"contracts/shared/bridge/Bridge.sol\":{\"keccak256\":\"0x58d4c542b77fe23d3078c3b9de781db54f1f318ed817d18af39cf915c3100c1e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7482d1d403d37f1a925b5ae979cdb7fba1463b87cfa882cafa54454f9868283d\",\"dweb:/ipfs/QmdhKFvapFkQD11AanqR1v28CRC8ZrMRu4dnVw8QoqGqNR\"]},\"contracts/shared/bridge/IBridge.sol\":{\"keccak256\":\"0x6b200a3471c7d1e2150c7a2f07f9fc4e619b93c72e61a937ecaf2f659f17a6e1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://51633f9d1c2799a6943d94324c7a4630adfbf46aad0639670870835a08ea563e\",\"dweb:/ipfs/Qmbt7P6LSkvgKomUkD5E85128t35kc6QUPXCWSEGrG5n9W\"]},\"contracts/shared/common/EssentialContract.sol\":{\"keccak256\":\"0x23f5e92e919911e82b308b25cf5c06050fd7c7799d44156d8492c2879a12c0a6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://800f8bc7c8a362c8c684906e20c060d893cd4e8badf74cf12026e0cc159c846f\",\"dweb:/ipfs/QmPbre9Skvfz5K7TWVHYTGGnec99VMnY9EUFbB6VqMsd9C\"]},\"contracts/shared/common/EssentialResolverContract.sol\":{\"keccak256\":\"0x5736a30fa45c48e3ff6d53170d980942ad42b788de81f5542a66397fb572b457\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://06d2dcf4d83335d05a12272507991ca23d23ed5a893fd2f97e75324135858ed2\",\"dweb:/ipfs/QmfWRCDnq6TXg8uwv2odpeLFguRSeLKuhL3VPMmGyyh9Eh\"]},\"contracts/shared/common/IResolver.sol\":{\"keccak256\":\"0x01273635aa0be2ad8d6218ad520f824f2003eab82be1d14c46da58f2516a48dd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://122dd3456077cf0be42bb974954c9918dca296415b076faeba0336ecee33de8e\",\"dweb:/ipfs/QmSr4WQEFDJwqyqpextmY8Fp3b7Z96SBHgAEKsvXe6dEZV\"]},\"contracts/shared/libs/LibAddress.sol\":{\"keccak256\":\"0x06e39ae119af22feb19ebf8cbd9ee8514118b84388ef93c4650779fd10da8538\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e0284aa60ade3d0f87134e6f39c181cca41c345af766b2f8f72c6de50ccf9841\",\"dweb:/ipfs/QmYNcjXmgVVPForNL34yrcZ97H2hKef4jL1DaQy6oNFhmY\"]},\"contracts/shared/libs/LibMath.sol\":{\"keccak256\":\"0x3e2ce1ccb5a4d94c6f97e09ebdb1e731c0bae466981be52147f15063b3742d69\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3530b4db00c1f357562d2dbab8978613c09b30ce1a6312de864399c7af82f9c7\",\"dweb:/ipfs/Qmbp9HeWwPAx5Krcjuu8UCJB3so6rZu4TUTPD6vRKDDBjg\"]},\"contracts/shared/libs/LibNames.sol\":{\"keccak256\":\"0x1227d014ad714497f4779b334da558a7da409860a6139b8ba88e53044bf8fb17\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f743c99518df4f1b1a8cdcbcdcc9a60357b81684e40f68573d4b9eef230d67ee\",\"dweb:/ipfs/QmapJMW5WhFjg8FK598gRitW3EwzkRn6TQ9fLuGjoMcaMP\"]},\"contracts/shared/libs/LibNetwork.sol\":{\"keccak256\":\"0xb5c6769cffcf864f725f8a76f98806f668f94a516125b854faa983b29d8f91ee\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://de4a9c2ae643272308f42ec150bae3b2a88145357e78eac074e8f68ff3d04595\",\"dweb:/ipfs/QmWNdKbTUvpR33nDunSjzKtR3ZQPPkFDD538fqhr9m6VY1\"]},\"contracts/shared/signal/ICheckpointStore.sol\":{\"keccak256\":\"0x82d7e6a1a6297ee7126ab7a83039900e453f76c9a0dff367be5699c742312067\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1db8501e9b6cadfdefd1ca1bb0cc9d241c9643abab73ec68d12e17aa8e543679\",\"dweb:/ipfs/QmVMFkLduiSeYoZ3NynDNoAcxZi53Lt6Gct7TtXXTyY4LE\"]},\"contracts/shared/signal/ISignalService.sol\":{\"keccak256\":\"0xda39e5766d2a3cc48e19aa0bd8c1235dd7e44bf6df18f0025999e08e25ad0639\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://71d6bb884be8db07e4b89f792aa8e3ad69c1045912be23cfb114935572fe6274\",\"dweb:/ipfs/QmZBuTtCSs4HtKVWo1zsKdU2WndsVDKX8H9VBwyCYbCGeN\"]},\"node_modules/@openzeppelin/contracts-upgradeable/access/Ownable2StepUpgradeable.sol\":{\"keccak256\":\"0x9140dabc466abab21b48b72dbda26736b1183a310d0e677d3719d201df026510\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://75267b14b60dc216d01d596a4008189a6c44d3314e53eded0edb1e757d95be16\",\"dweb:/ipfs/QmQoMaxTRT6V7uQj9USfdQH9jh1crywB9auVjThzUSAbG2\"]},\"node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol\":{\"keccak256\":\"0x359a1ab89b46b9aba7bcad3fb651924baf4893d15153049b9976b0fc9be1358e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e89863421b4014b96a4b62be76eb3b9f0a8afe9684664a6f389124c0964bfe5c\",\"dweb:/ipfs/Qmbk7xr1irpDuU1WdxXgxELBXxs61rHhCgod7heVcvFx16\"]},\"node_modules/@openzeppelin/contracts-upgradeable/governance/utils/IVotesUpgradeable.sol\":{\"keccak256\":\"0x2d600bbef9320309cd2a86c1d087eb9d6dbcc00430713ee54bbc5c5a2a11ba31\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://52a5380b861d676adef15f33f8f643e236a1acb2d9456beb4065307eaa22bc2a\",\"dweb:/ipfs/QmdwSfxrafQubVvCoQCU5T7bbPR8JDWU1WotSDXSiUdm33\"]},\"node_modules/@openzeppelin/contracts-upgradeable/interfaces/IERC5267Upgradeable.sol\":{\"keccak256\":\"0xe562dab443278837fa50faddb76743399e942181881db8dccaea3bd1712994db\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://79ebe0e661396045cefe94f4256398cf632756d779a6871319db374c9eb128c9\",\"dweb:/ipfs/QmfCTCivb9fFhyCX8hzushzcKunvKL2N9RDsnRNdvbd11M\"]},\"node_modules/@openzeppelin/contracts-upgradeable/interfaces/IERC5805Upgradeable.sol\":{\"keccak256\":\"0x19848eec9045c8b91f1ab6b1853966443e3e36bcbc307593ed37a9f0df179d69\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a07972c1330ee99a5d051b393260e01412ac4c14c7bc4d75d80b7cce291a6412\",\"dweb:/ipfs/QmQx1ZiAo4AbSobN41c1xUEtyX1QejydWCmY7Sj3H5aDNv\"]},\"node_modules/@openzeppelin/contracts-upgradeable/interfaces/IERC6372Upgradeable.sol\":{\"keccak256\":\"0x3026befd6d69d1b46960bdc35a2ad37c0e1352f26983ee3728dd61fd32aa308a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c2001b7209fd4920ec7674f194db7fe163dfea7a7af2dd25fe6c0e5a94dc595c\",\"dweb:/ipfs/QmXX2zTFyiNWoDxivV3trKcKWifAENMqNAB34NgjWq5feX\"]},\"node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x89be10e757d242e9b18d5a32c9fbe2019f6d63052bbe46397a430a1d60d7f794\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f103ee2e4aecd37aac6ceefe670709cdd7613dee25fa2d4d9feaf7fc0aaa155e\",\"dweb:/ipfs/QmRiNZLoJk5k3HPMYGPGjZFd2ke1ZxjhJZkM45Ec9GH9hv\"]},\"node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol\":{\"keccak256\":\"0xa9311aeb22f459e57d4dac77ee76cf43fb28ad3215278456211b5852b0e9e970\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ebdf0d3e42bd25223e45a213311d6d7e177d56a2c541a78b58c0c9d10bbdfbf9\",\"dweb:/ipfs/QmfMyehJ6pxHrh7yL4793J6i7dofXnS2zH3cTtC8JdQMV9\"]},\"node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol\":{\"keccak256\":\"0x0e1f0f5f62f67a881cd1a9597acbc0a5e4071f3c2c10449a183b922ae7272e3f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c25f742ff154998d19a669e2508c3597b363e123ce9144cd0fcf6521229f401f\",\"dweb:/ipfs/QmQXRuFzStEWqeEPbhQU6cAg9PaSowxJVo4PDKyRod7dco\"]},\"node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/extensions/ERC20PermitUpgradeable.sol\":{\"keccak256\":\"0x3d159b9049d4ef465c1fb41f7ff7620f18f52bf6f8f3018bae4ed95c2df537d3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://38f7cfa624d878eec3c97e30dac64c6c00a79c65aa2799cebbf683e74488cd27\",\"dweb:/ipfs/QmdtMH3xSGXNqvBcndsxWCUfmjta6kebnUYwKasJZucTfP\"]},\"node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/extensions/ERC20VotesUpgradeable.sol\":{\"keccak256\":\"0x82d5c2e8d5c7209f5cd2e7a40807ba264cb8bc577db1b121eda5f14f62d609c2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://024b99222ec16e75ff1b719c8f0dacf2d8e26250b3c076bd184ac1dadae47492\",\"dweb:/ipfs/QmP11f3Dumw3CYg4ZtBLJrh8juULgodSuQfCqqgX5DqpJE\"]},\"node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/extensions/IERC20MetadataUpgradeable.sol\":{\"keccak256\":\"0x605434219ebbe4653f703640f06969faa5a1d78f0bfef878e5ddbb1ca369ceeb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4c9c634f99dd02d73ce7498b03a6305e251c05eeebb71457306561c1fab0fa7d\",\"dweb:/ipfs/QmbYRBbZHy8YoaQKXdPryiL3CSS7uUaRfRYi1TUj9cTqJQ\"]},\"node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/extensions/IERC20PermitUpgradeable.sol\":{\"keccak256\":\"0x07e881de3b9f6d2c07909f193f24b96c7fe4ea60013260f3f25aecd8bab3c2f8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1fed09b97ccb0ff9ba9b6a94224f1d489026bf6b4b7279bfe64fb6e8749dee4d\",\"dweb:/ipfs/QmcRAzaSP1UnGr4vrGkfJmB2L9aiTYoXfV1Lg9gqrVRWn8\"]},\"node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol\":{\"keccak256\":\"0x9c80f545915582e63fe206c6ce27cbe85a86fc10b9cd2a0e8c9488fb7c2ee422\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://310136ad60820af4177a11a61d77a3686faf5fca4942b600e08fc940db38396b\",\"dweb:/ipfs/QmbCzMNSTL7Zi7M4UCSqBrkHtp4jjxUnGbkneCZKdR1qeq\"]},\"node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0x75097e35253e7fb282ee4d7f27a80eaacfa759923185bf17302a89cbc059c5ef\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8b06267c5f80bad727af3e48b1382333d591dad51376399ef2f6b0ee6d58bf95\",\"dweb:/ipfs/QmdU5La1agcQvghnfMpWZGDPz2TUDTCxUwTLKmuMRXBpAx\"]},\"node_modules/@openzeppelin/contracts-upgradeable/utils/CountersUpgradeable.sol\":{\"keccak256\":\"0x798741e231b22b81e2dd2eddaaf8832dee4baf5cd8e2dbaa5c1dd12a1c053c4d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c41e8a7a906b8f362c8b760a44edadc61782008ea2ecf377ac5b5325bf6c3912\",\"dweb:/ipfs/QmcXr19zuH3YLzD6RZNE6UTzvsKSckdxZQnagPoDGkCHu2\"]},\"node_modules/@openzeppelin/contracts-upgradeable/utils/StringsUpgradeable.sol\":{\"keccak256\":\"0xb96dc79b65b7c37937919dcdb356a969ce0aa2e8338322bf4dc027a3c9c9a7eb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f8613145881436fc0480fff22da4868d611e2b0c0c3da083334eb4362ce1945a\",\"dweb:/ipfs/QmPqpP3YeRbBdTJRe6Gv2eGsUaANf4J6RwTNRW36iYahfV\"]},\"node_modules/@openzeppelin/contracts-upgradeable/utils/cryptography/ECDSAUpgradeable.sol\":{\"keccak256\":\"0xa014f65d84b02827055d99993ccdbfb4b56b2c9e91eb278d82a93330659d06e4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://50a7e716a74f3d48a7f549086faa94afcd58b9f18ac8e9f74af4571f3a1d8d5c\",\"dweb:/ipfs/QmTkDNWkq5o9Cv2jS7s6JvSmsPBkeunZhPe7Z2njGL31wo\"]},\"node_modules/@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol\":{\"keccak256\":\"0x7077d7f3369b21f286840c0d69b09a8a6d3d6e522fff67bfc240fd0a6cdf178c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0f59e7a19530bd6ee236285f9a87c930d27b73464f6b7398e29a6f4cfc2670ac\",\"dweb:/ipfs/QmVfN4gHvJNac7KiuhLhtgtbdDo5a6Mw5hMcwJkzYugq5R\"]},\"node_modules/@openzeppelin/contracts-upgradeable/utils/math/MathUpgradeable.sol\":{\"keccak256\":\"0x2bc0007987c229ae7624eb29be6a9b84f6a6a5872f76248b15208b131ea41c4e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2b2835c737d073ef8b82a4cc246495a9740f43e7ff2cf130906b2449ff9bfb91\",\"dweb:/ipfs/QmSCWfNoSvvTN57ic7o1RW6NqSxxGAqbBTnLKc7QHe27qB\"]},\"node_modules/@openzeppelin/contracts-upgradeable/utils/math/SafeCastUpgradeable.sol\":{\"keccak256\":\"0xcef50f95b43b038aa40aed25b62fc45906c681a5c1d504a4fdcf3bc6330a8d4b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ef883699a00970d5469e502514e2854704cd53d7a49825078aa807a2f056315c\",\"dweb:/ipfs/QmRjpN9oxgw6zHCVjfWNB9MzaYpNPPgqu7Rrwqwabmhpis\"]},\"node_modules/@openzeppelin/contracts-upgradeable/utils/math/SignedMathUpgradeable.sol\":{\"keccak256\":\"0x88f6b7bba3ee33eeb741f9a0f5bc98b6e6e352d0fe4905377bb328590f84095a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://88ace2d60f265752f18903d839910be4e4e104340b2957678585b812447825d4\",\"dweb:/ipfs/QmXFkNxMc3AAGzhs2wUEZyErWQjsvoTGyYjuU5oZkFki5Z\"]},\"node_modules/@openzeppelin/contracts/interfaces/IERC1967.sol\":{\"keccak256\":\"0x3cbef5ebc24b415252e2f8c0c9254555d30d9f085603b4b80d9b5ed20ab87e90\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e8fa670c3bdce78e642cc6ae11c4cb38b133499cdce5e1990a9979d424703263\",\"dweb:/ipfs/QmVxeCUk4jL2pXQyhsoNJwyU874wRufS2WvGe8TgPKPqhE\"]},\"node_modules/@openzeppelin/contracts/interfaces/draft-IERC1822.sol\":{\"keccak256\":\"0x1d4afe6cb24200cc4545eed814ecf5847277dfe5d613a1707aad5fceecebcfff\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://383fb7b8181016ac5ccf07bc9cdb7c1b5045ea36e2cc4df52bcbf20396fc7688\",\"dweb:/ipfs/QmYJ7Cg4WmE3rR8KGQxjUCXFfTH6TcwZ2Z1f6tPrq7jHFr\"]},\"node_modules/@openzeppelin/contracts/proxy/ERC1967/ERC1967Upgrade.sol\":{\"keccak256\":\"0x3b21ae06bf5957f73fa16754b0669c77b7abd8ba6c072d35c3281d446fdb86c2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2db8e18505e86e02526847005d7287a33e397ed7fb9eaba3fd4a4a197add16e2\",\"dweb:/ipfs/QmW9BSuKTzHWHBNSHF4L8XfVuU1uJrP2vLg84YtBd8mL82\"]},\"node_modules/@openzeppelin/contracts/proxy/beacon/IBeacon.sol\":{\"keccak256\":\"0xd50a3421ac379ccb1be435fa646d66a65c986b4924f0849839f08692f39dde61\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ada1e030c0231db8d143b44ce92b4d1158eedb087880cad6d8cc7bd7ebe7b354\",\"dweb:/ipfs/QmWZ2NHZweRpz1U9GF6R1h65ri76dnX7fNxLBeM2t5N5Ce\"]},\"node_modules/@openzeppelin/contracts/proxy/utils/UUPSUpgradeable.sol\":{\"keccak256\":\"0xc6619957bcc6641fe8984bfaf9ff11a9e4b97d8149c0495f608f9a2416d7c5cf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://543be67f7fa43b1b932637c1c7f12035f0f4b0f7ee2bd3c33841186f79c165c1\",\"dweb:/ipfs/QmSBPM2UVKbmJqWfD9i6hSiqbaE8TV4TSqfuiivziRRLKM\"]},\"node_modules/@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0x006dd67219697fe68d7fbfdea512e7c4cb64a43565ed86171d67e844982da6fa\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2455248c8ddd9cc6a7af76a13973cddf222072427e7b0e2a7d1aff345145e931\",\"dweb:/ipfs/QmfYjnjRbWqYpuxurqveE6HtzsY1Xx323J428AKQgtBJZm\"]},\"node_modules/@openzeppelin/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0xf09e68aa0dc6722a25bc46490e8d48ed864466d17313b8a0b254c36b54e49899\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e26daf81e2252dc1fe1ce0e4b55c2eb7c6d1ee84ae6558d1a9554432ea1d32da\",\"dweb:/ipfs/Qmb1UANWiWq5pCKbmHSu772hd4nt374dVaghGmwSVNuk8Q\"]},\"node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f\",\"dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy\"]}},\"version\":1}", + "metadata": { + "compiler": { + "version": "0.8.30+commit.73712a01" + }, + "language": "Solidity", + "output": { + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "_resolver", + "type": "address" + }, + { + "internalType": "address", + "name": "_signalService", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "inputs": [], + "type": "error", + "name": "ACCESS_DENIED" + }, + { + "inputs": [], + "type": "error", + "name": "B_INSUFFICIENT_GAS" + }, + { + "inputs": [], + "type": "error", + "name": "B_INVALID_CHAINID" + }, + { + "inputs": [], + "type": "error", + "name": "B_INVALID_CONTEXT" + }, + { + "inputs": [], + "type": "error", + "name": "B_INVALID_FEE" + }, + { + "inputs": [], + "type": "error", + "name": "B_INVALID_GAS_LIMIT" + }, + { + "inputs": [], + "type": "error", + "name": "B_INVALID_STATUS" + }, + { + "inputs": [], + "type": "error", + "name": "B_INVALID_VALUE" + }, + { + "inputs": [], + "type": "error", + "name": "B_MESSAGE_NOT_SENT" + }, + { + "inputs": [], + "type": "error", + "name": "B_PERMISSION_DENIED" + }, + { + "inputs": [], + "type": "error", + "name": "B_PROOF_TOO_LARGE" + }, + { + "inputs": [], + "type": "error", + "name": "B_RETRY_FAILED" + }, + { + "inputs": [], + "type": "error", + "name": "B_SIGNAL_NOT_RECEIVED" + }, + { + "inputs": [], + "type": "error", + "name": "ETH_TRANSFER_FAILED" + }, + { + "inputs": [], + "type": "error", + "name": "FUNC_NOT_IMPLEMENTED" + }, + { + "inputs": [], + "type": "error", + "name": "INVALID_PAUSE_STATUS" + }, + { + "inputs": [], + "type": "error", + "name": "REENTRANT_CALL" + }, + { + "inputs": [], + "type": "error", + "name": "RESOLVER_NOT_FOUND" + }, + { + "inputs": [], + "type": "error", + "name": "ZERO_ADDRESS" + }, + { + "inputs": [], + "type": "error", + "name": "ZERO_VALUE" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "previousAdmin", + "type": "address", + "indexed": false + }, + { + "internalType": "address", + "name": "newAdmin", + "type": "address", + "indexed": false + } + ], + "type": "event", + "name": "AdminChanged", + "anonymous": false + }, + { + "inputs": [ + { + "internalType": "address", + "name": "beacon", + "type": "address", + "indexed": true + } + ], + "type": "event", + "name": "BeaconUpgraded", + "anonymous": false + }, + { + "inputs": [ + { + "internalType": "uint8", + "name": "version", + "type": "uint8", + "indexed": false + } + ], + "type": "event", + "name": "Initialized", + "anonymous": false + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "msgHash", + "type": "bytes32", + "indexed": true + }, + { + "internalType": "struct IBridge.Message", + "name": "message", + "type": "tuple", + "components": [ + { + "internalType": "uint64", + "name": "id", + "type": "uint64" + }, + { + "internalType": "uint64", + "name": "fee", + "type": "uint64" + }, + { + "internalType": "uint32", + "name": "gasLimit", + "type": "uint32" + }, + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "uint64", + "name": "srcChainId", + "type": "uint64" + }, + { + "internalType": "address", + "name": "srcOwner", + "type": "address" + }, + { + "internalType": "uint64", + "name": "destChainId", + "type": "uint64" + }, + { + "internalType": "address", + "name": "destOwner", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "indexed": false + }, + { + "internalType": "struct Bridge.ProcessingStats", + "name": "stats", + "type": "tuple", + "components": [ + { + "internalType": "uint32", + "name": "gasUsedInFeeCalc", + "type": "uint32" + }, + { + "internalType": "uint32", + "name": "proofSize", + "type": "uint32" + }, + { + "internalType": "uint32", + "name": "numCacheOps", + "type": "uint32" + }, + { + "internalType": "bool", + "name": "processedByRelayer", + "type": "bool" + } + ], + "indexed": false + } + ], + "type": "event", + "name": "MessageProcessed", + "anonymous": false + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "msgHash", + "type": "bytes32", + "indexed": true + }, + { + "internalType": "struct IBridge.Message", + "name": "message", + "type": "tuple", + "components": [ + { + "internalType": "uint64", + "name": "id", + "type": "uint64" + }, + { + "internalType": "uint64", + "name": "fee", + "type": "uint64" + }, + { + "internalType": "uint32", + "name": "gasLimit", + "type": "uint32" + }, + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "uint64", + "name": "srcChainId", + "type": "uint64" + }, + { + "internalType": "address", + "name": "srcOwner", + "type": "address" + }, + { + "internalType": "uint64", + "name": "destChainId", + "type": "uint64" + }, + { + "internalType": "address", + "name": "destOwner", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "indexed": false + } + ], + "type": "event", + "name": "MessageSent", + "anonymous": false + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "msgHash", + "type": "bytes32", + "indexed": true + }, + { + "internalType": "enum IBridge.Status", + "name": "status", + "type": "uint8", + "indexed": false + } + ], + "type": "event", + "name": "MessageStatusChanged", + "anonymous": false + }, + { + "inputs": [ + { + "internalType": "address", + "name": "previousOwner", + "type": "address", + "indexed": true + }, + { + "internalType": "address", + "name": "newOwner", + "type": "address", + "indexed": true + } + ], + "type": "event", + "name": "OwnershipTransferStarted", + "anonymous": false + }, + { + "inputs": [ + { + "internalType": "address", + "name": "previousOwner", + "type": "address", + "indexed": true + }, + { + "internalType": "address", + "name": "newOwner", + "type": "address", + "indexed": true + } + ], + "type": "event", + "name": "OwnershipTransferred", + "anonymous": false + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address", + "indexed": false + } + ], + "type": "event", + "name": "Paused", + "anonymous": false + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address", + "indexed": false + } + ], + "type": "event", + "name": "Unpaused", + "anonymous": false + }, + { + "inputs": [ + { + "internalType": "address", + "name": "implementation", + "type": "address", + "indexed": true + } + ], + "type": "event", + "name": "Upgraded", + "anonymous": false + }, + { + "inputs": [], + "stateMutability": "view", + "type": "function", + "name": "GAS_OVERHEAD", + "outputs": [ + { + "internalType": "uint32", + "name": "", + "type": "uint32" + } + ] + }, + { + "inputs": [], + "stateMutability": "view", + "type": "function", + "name": "GAS_RESERVE", + "outputs": [ + { + "internalType": "uint32", + "name": "", + "type": "uint32" + } + ] + }, + { + "inputs": [], + "stateMutability": "view", + "type": "function", + "name": "RELAYER_MAX_PROOF_BYTES", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ] + }, + { + "inputs": [], + "stateMutability": "nonpayable", + "type": "function", + "name": "acceptOwnership" + }, + { + "inputs": [], + "stateMutability": "view", + "type": "function", + "name": "context", + "outputs": [ + { + "internalType": "struct IBridge.Context", + "name": "ctx_", + "type": "tuple", + "components": [ + { + "internalType": "bytes32", + "name": "msgHash", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "uint64", + "name": "srcChainId", + "type": "uint64" + } + ] + } + ] + }, + { + "inputs": [ + { + "internalType": "struct IBridge.Message", + "name": "_message", + "type": "tuple", + "components": [ + { + "internalType": "uint64", + "name": "id", + "type": "uint64" + }, + { + "internalType": "uint64", + "name": "fee", + "type": "uint64" + }, + { + "internalType": "uint32", + "name": "gasLimit", + "type": "uint32" + }, + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "uint64", + "name": "srcChainId", + "type": "uint64" + }, + { + "internalType": "address", + "name": "srcOwner", + "type": "address" + }, + { + "internalType": "uint64", + "name": "destChainId", + "type": "uint64" + }, + { + "internalType": "address", + "name": "destOwner", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ] + } + ], + "stateMutability": "nonpayable", + "type": "function", + "name": "failMessage" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "dataLength", + "type": "uint256" + } + ], + "stateMutability": "pure", + "type": "function", + "name": "getMessageMinGasLimit", + "outputs": [ + { + "internalType": "uint32", + "name": "", + "type": "uint32" + } + ] + }, + { + "inputs": [ + { + "internalType": "struct IBridge.Message", + "name": "_message", + "type": "tuple", + "components": [ + { + "internalType": "uint64", + "name": "id", + "type": "uint64" + }, + { + "internalType": "uint64", + "name": "fee", + "type": "uint64" + }, + { + "internalType": "uint32", + "name": "gasLimit", + "type": "uint32" + }, + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "uint64", + "name": "srcChainId", + "type": "uint64" + }, + { + "internalType": "address", + "name": "srcOwner", + "type": "address" + }, + { + "internalType": "uint64", + "name": "destChainId", + "type": "uint64" + }, + { + "internalType": "address", + "name": "destOwner", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ] + } + ], + "stateMutability": "pure", + "type": "function", + "name": "hashMessage", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ] + }, + { + "inputs": [], + "stateMutability": "view", + "type": "function", + "name": "impl", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ] + }, + { + "inputs": [], + "stateMutability": "view", + "type": "function", + "name": "inNonReentrant", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ] + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_owner", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "function", + "name": "init" + }, + { + "inputs": [], + "stateMutability": "nonpayable", + "type": "function", + "name": "init2" + }, + { + "inputs": [ + { + "internalType": "uint64", + "name": "_chainId", + "type": "uint64" + } + ], + "stateMutability": "view", + "type": "function", + "name": "isDestChainEnabled", + "outputs": [ + { + "internalType": "bool", + "name": "enabled_", + "type": "bool" + }, + { + "internalType": "address", + "name": "destBridge_", + "type": "address" + } + ] + }, + { + "inputs": [ + { + "internalType": "struct IBridge.Message", + "name": "_message", + "type": "tuple", + "components": [ + { + "internalType": "uint64", + "name": "id", + "type": "uint64" + }, + { + "internalType": "uint64", + "name": "fee", + "type": "uint64" + }, + { + "internalType": "uint32", + "name": "gasLimit", + "type": "uint32" + }, + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "uint64", + "name": "srcChainId", + "type": "uint64" + }, + { + "internalType": "address", + "name": "srcOwner", + "type": "address" + }, + { + "internalType": "uint64", + "name": "destChainId", + "type": "uint64" + }, + { + "internalType": "address", + "name": "destOwner", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ] + }, + { + "internalType": "bytes", + "name": "_proof", + "type": "bytes" + } + ], + "stateMutability": "view", + "type": "function", + "name": "isMessageFailed", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ] + }, + { + "inputs": [ + { + "internalType": "struct IBridge.Message", + "name": "_message", + "type": "tuple", + "components": [ + { + "internalType": "uint64", + "name": "id", + "type": "uint64" + }, + { + "internalType": "uint64", + "name": "fee", + "type": "uint64" + }, + { + "internalType": "uint32", + "name": "gasLimit", + "type": "uint32" + }, + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "uint64", + "name": "srcChainId", + "type": "uint64" + }, + { + "internalType": "address", + "name": "srcOwner", + "type": "address" + }, + { + "internalType": "uint64", + "name": "destChainId", + "type": "uint64" + }, + { + "internalType": "address", + "name": "destOwner", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ] + }, + { + "internalType": "bytes", + "name": "_proof", + "type": "bytes" + } + ], + "stateMutability": "view", + "type": "function", + "name": "isMessageReceived", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ] + }, + { + "inputs": [ + { + "internalType": "struct IBridge.Message", + "name": "_message", + "type": "tuple", + "components": [ + { + "internalType": "uint64", + "name": "id", + "type": "uint64" + }, + { + "internalType": "uint64", + "name": "fee", + "type": "uint64" + }, + { + "internalType": "uint32", + "name": "gasLimit", + "type": "uint32" + }, + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "uint64", + "name": "srcChainId", + "type": "uint64" + }, + { + "internalType": "address", + "name": "srcOwner", + "type": "address" + }, + { + "internalType": "uint64", + "name": "destChainId", + "type": "uint64" + }, + { + "internalType": "address", + "name": "destOwner", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ] + } + ], + "stateMutability": "view", + "type": "function", + "name": "isMessageSent", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ] + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "msgHash", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function", + "name": "messageStatus", + "outputs": [ + { + "internalType": "enum IBridge.Status", + "name": "status", + "type": "uint8" + } + ] + }, + { + "inputs": [], + "stateMutability": "view", + "type": "function", + "name": "nextMessageId", + "outputs": [ + { + "internalType": "uint64", + "name": "", + "type": "uint64" + } + ] + }, + { + "inputs": [], + "stateMutability": "view", + "type": "function", + "name": "owner", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ] + }, + { + "inputs": [], + "stateMutability": "nonpayable", + "type": "function", + "name": "pause" + }, + { + "inputs": [], + "stateMutability": "view", + "type": "function", + "name": "paused", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ] + }, + { + "inputs": [], + "stateMutability": "view", + "type": "function", + "name": "pendingOwner", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ] + }, + { + "inputs": [ + { + "internalType": "struct IBridge.Message", + "name": "_message", + "type": "tuple", + "components": [ + { + "internalType": "uint64", + "name": "id", + "type": "uint64" + }, + { + "internalType": "uint64", + "name": "fee", + "type": "uint64" + }, + { + "internalType": "uint32", + "name": "gasLimit", + "type": "uint32" + }, + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "uint64", + "name": "srcChainId", + "type": "uint64" + }, + { + "internalType": "address", + "name": "srcOwner", + "type": "address" + }, + { + "internalType": "uint64", + "name": "destChainId", + "type": "uint64" + }, + { + "internalType": "address", + "name": "destOwner", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ] + }, + { + "internalType": "bytes", + "name": "_proof", + "type": "bytes" + } + ], + "stateMutability": "nonpayable", + "type": "function", + "name": "processMessage", + "outputs": [ + { + "internalType": "enum IBridge.Status", + "name": "status_", + "type": "uint8" + }, + { + "internalType": "enum IBridge.StatusReason", + "name": "reason_", + "type": "uint8" + } + ] + }, + { + "inputs": [], + "stateMutability": "view", + "type": "function", + "name": "proxiableUUID", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ] + }, + { + "inputs": [ + { + "internalType": "struct IBridge.Message", + "name": "_message", + "type": "tuple", + "components": [ + { + "internalType": "uint64", + "name": "id", + "type": "uint64" + }, + { + "internalType": "uint64", + "name": "fee", + "type": "uint64" + }, + { + "internalType": "uint32", + "name": "gasLimit", + "type": "uint32" + }, + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "uint64", + "name": "srcChainId", + "type": "uint64" + }, + { + "internalType": "address", + "name": "srcOwner", + "type": "address" + }, + { + "internalType": "uint64", + "name": "destChainId", + "type": "uint64" + }, + { + "internalType": "address", + "name": "destOwner", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ] + }, + { + "internalType": "bytes", + "name": "_proof", + "type": "bytes" + } + ], + "stateMutability": "nonpayable", + "type": "function", + "name": "recallMessage" + }, + { + "inputs": [], + "stateMutability": "nonpayable", + "type": "function", + "name": "renounceOwnership" + }, + { + "inputs": [], + "stateMutability": "view", + "type": "function", + "name": "resolver", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ] + }, + { + "inputs": [ + { + "internalType": "struct IBridge.Message", + "name": "_message", + "type": "tuple", + "components": [ + { + "internalType": "uint64", + "name": "id", + "type": "uint64" + }, + { + "internalType": "uint64", + "name": "fee", + "type": "uint64" + }, + { + "internalType": "uint32", + "name": "gasLimit", + "type": "uint32" + }, + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "uint64", + "name": "srcChainId", + "type": "uint64" + }, + { + "internalType": "address", + "name": "srcOwner", + "type": "address" + }, + { + "internalType": "uint64", + "name": "destChainId", + "type": "uint64" + }, + { + "internalType": "address", + "name": "destOwner", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ] + }, + { + "internalType": "bool", + "name": "_isLastAttempt", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function", + "name": "retryMessage" + }, + { + "inputs": [ + { + "internalType": "struct IBridge.Message", + "name": "_message", + "type": "tuple", + "components": [ + { + "internalType": "uint64", + "name": "id", + "type": "uint64" + }, + { + "internalType": "uint64", + "name": "fee", + "type": "uint64" + }, + { + "internalType": "uint32", + "name": "gasLimit", + "type": "uint32" + }, + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "uint64", + "name": "srcChainId", + "type": "uint64" + }, + { + "internalType": "address", + "name": "srcOwner", + "type": "address" + }, + { + "internalType": "uint64", + "name": "destChainId", + "type": "uint64" + }, + { + "internalType": "address", + "name": "destOwner", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ] + } + ], + "stateMutability": "payable", + "type": "function", + "name": "sendMessage", + "outputs": [ + { + "internalType": "bytes32", + "name": "msgHash_", + "type": "bytes32" + }, + { + "internalType": "struct IBridge.Message", + "name": "message_", + "type": "tuple", + "components": [ + { + "internalType": "uint64", + "name": "id", + "type": "uint64" + }, + { + "internalType": "uint64", + "name": "fee", + "type": "uint64" + }, + { + "internalType": "uint32", + "name": "gasLimit", + "type": "uint32" + }, + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "uint64", + "name": "srcChainId", + "type": "uint64" + }, + { + "internalType": "address", + "name": "srcOwner", + "type": "address" + }, + { + "internalType": "uint64", + "name": "destChainId", + "type": "uint64" + }, + { + "internalType": "address", + "name": "destOwner", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ] + } + ] + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "_msgHash", + "type": "bytes32" + } + ], + "stateMutability": "pure", + "type": "function", + "name": "signalForFailedMessage", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ] + }, + { + "inputs": [], + "stateMutability": "view", + "type": "function", + "name": "signalService", + "outputs": [ + { + "internalType": "contract ISignalService", + "name": "", + "type": "address" + } + ] + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "function", + "name": "transferOwnership" + }, + { + "inputs": [], + "stateMutability": "nonpayable", + "type": "function", + "name": "unpause" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newImplementation", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "function", + "name": "upgradeTo" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newImplementation", + "type": "address" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "stateMutability": "payable", + "type": "function", + "name": "upgradeToAndCall" + } + ], + "devdoc": { + "kind": "dev", + "methods": { + "acceptOwnership()": { + "details": "The new owner accepts the ownership transfer." + }, + "context()": { + "returns": { + "ctx_": "The context of the current bridge operation." + } + }, + "failMessage((uint64,uint64,uint32,address,uint64,address,uint64,address,address,uint256,bytes))": { + "details": "This function can only be called by `message.destOwner`.", + "params": { + "_message": "The message to fail. message." + } + }, + "getMessageMinGasLimit(uint256)": { + "params": { + "dataLength": "The length of message.data." + }, + "returns": { + "_0": "The minimal gas limit required for sending this message." + } + }, + "hashMessage((uint64,uint64,uint32,address,uint64,address,uint64,address,address,uint256,bytes))": { + "params": { + "_message": "The message struct variable to be hashed." + }, + "returns": { + "_0": "The message's hash." + } + }, + "init(address)": { + "params": { + "_owner": "The owner of this contract. msg.sender will be used if this value is zero." + } + }, + "isDestChainEnabled(uint64)": { + "params": { + "_chainId": "The destination chain ID." + }, + "returns": { + "destBridge_": "The bridge of the destination chain.", + "enabled_": "True if the destination chain is enabled." + } + }, + "isMessageFailed((uint64,uint64,uint32,address,uint64,address,uint64,address,address,uint256,bytes),bytes)": { + "params": { + "_message": "The message.", + "_proof": "The merkle inclusion proof." + }, + "returns": { + "_0": "true if the message has failed, false otherwise." + } + }, + "isMessageReceived((uint64,uint64,uint32,address,uint64,address,uint64,address,address,uint256,bytes),bytes)": { + "params": { + "_message": "The message.", + "_proof": "The merkle inclusion proof." + }, + "returns": { + "_0": "true if the message has been received, false otherwise." + } + }, + "isMessageSent((uint64,uint64,uint32,address,uint64,address,uint64,address,address,uint256,bytes))": { + "params": { + "_message": "The message." + }, + "returns": { + "_0": "true if the message was sent." + } + }, + "owner()": { + "details": "Returns the address of the current owner." + }, + "paused()": { + "returns": { + "_0": "true if paused, false otherwise." + } + }, + "pendingOwner()": { + "details": "Returns the address of the pending owner." + }, + "processMessage((uint64,uint64,uint32,address,uint64,address,uint64,address,address,uint256,bytes),bytes)": { + "details": "To ensure successful execution, we recommend this transaction's gas limit not to be smaller than: `(message.gasLimit - GAS_RESERVE) * 64 / 63 + GAS_RESERVE`, Or we can use a simplified rule: `tx.gaslimit = message.gaslimit * 102%`.", + "params": { + "_message": "The message to be processed.", + "_proof": "The merkle inclusion proof." + }, + "returns": { + "status_": "The message's status after processing and the reason for the change." + } + }, + "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." + }, + "recallMessage((uint64,uint64,uint32,address,uint64,address,uint64,address,address,uint256,bytes),bytes)": { + "details": "Verifies via proof that the message was marked FAILED on the destination chain's Bridge, then releases the associated Ether or tokens on the source chain.", + "params": { + "_message": "The message whose associated Ether should be released.", + "_proof": "The merkle inclusion proof." + } + }, + "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." + }, + "resolver()": { + "returns": { + "_0": "The address of this contract." + } + }, + "retryMessage((uint64,uint64,uint32,address,uint64,address,uint64,address,address,uint256,bytes),bool)": { + "details": "This function can be called by any address, including the `message.destOwner`. It attempts to invoke the messageCall and updates the message status accordingly.", + "params": { + "_isLastAttempt": "Specifies if this is the last attempt to retry the message.", + "_message": "The message to retry." + } + }, + "sendMessage((uint64,uint64,uint32,address,uint64,address,uint64,address,address,uint256,bytes))": { + "params": { + "_message": "The message to be sent." + }, + "returns": { + "message_": "The updated message sent.", + "msgHash_": "The hash of the sent message." + } + }, + "signalForFailedMessage(bytes32)": { + "params": { + "_msgHash": "The message hash." + }, + "returns": { + "_0": "The failed representation of it as bytes32." + } + }, + "transferOwnership(address)": { + "details": "Starts the ownership transfer of the contract to a new account. Replaces the pending transfer if there is one. Can only be called by the current owner." + }, + "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": { + "kind": "user", + "methods": { + "context()": { + "notice": "Gets the current context." + }, + "failMessage((uint64,uint64,uint32,address,uint64,address,uint64,address,address,uint256,bytes))": { + "notice": "Mark a message as failed if the message is currently retriable." + }, + "getMessageMinGasLimit(uint256)": { + "notice": "Returns the minimal gas limit required for sending a given message." + }, + "hashMessage((uint64,uint64,uint32,address,uint64,address,uint64,address,address,uint256,bytes))": { + "notice": "Hash the message" + }, + "init(address)": { + "notice": "Initializes the contract." + }, + "init2()": { + "notice": "This function shall be called by previously deployed contracts." + }, + "isDestChainEnabled(uint64)": { + "notice": "Checks if the destination chain is enabled." + }, + "isMessageFailed((uint64,uint64,uint32,address,uint64,address,uint64,address,address,uint256,bytes),bytes)": { + "notice": "Checks if a msgHash has failed on its destination chain. This is the 'readonly' version of proveMessageFailed." + }, + "isMessageReceived((uint64,uint64,uint32,address,uint64,address,uint64,address,address,uint256,bytes),bytes)": { + "notice": "Checks if a msgHash has been received on its source chain. This is the 'readonly' version of proveMessageReceived." + }, + "isMessageSent((uint64,uint64,uint32,address,uint64,address,uint64,address,address,uint256,bytes))": { + "notice": "Checks if the message was sent." + }, + "messageStatus(bytes32)": { + "notice": "Mapping to store the status of a message from its hash." + }, + "nextMessageId()": { + "notice": "Returns the unique id of the next bridge message" + }, + "pause()": { + "notice": "Pauses the contract." + }, + "paused()": { + "notice": "Returns true if the contract is paused, and false otherwise." + }, + "processMessage((uint64,uint64,uint32,address,uint64,address,uint64,address,address,uint256,bytes),bytes)": { + "notice": "Processes a bridge message on the destination chain. This function is callable by any address, including the `message.destOwner`." + }, + "recallMessage((uint64,uint64,uint32,address,uint64,address,uint64,address,address,uint256,bytes),bytes)": { + "notice": "Recalls a message on its source chain after it has failed on the destination chain, releasing associated assets on the source chain." + }, + "resolver()": { + "notice": "Returns the address of this contract." + }, + "retryMessage((uint64,uint64,uint32,address,uint64,address,uint64,address,address,uint256,bytes),bool)": { + "notice": "Retries to invoke the messageCall after releasing associated Ether and tokens." + }, + "sendMessage((uint64,uint64,uint32,address,uint64,address,uint64,address,address,uint256,bytes))": { + "notice": "Sends a message to the destination chain and takes custody of Ether required in this contract." + }, + "signalForFailedMessage(bytes32)": { + "notice": "Returns a signal representing a failed/recalled message." + }, + "unpause()": { + "notice": "Unpauses the contract." + } + }, + "version": 1 + } + }, + "settings": { + "remappings": [ + "@eth-fabric/urc/=node_modules/urc/src/", + "@openzeppelin-upgrades/contracts/=node_modules/@openzeppelin/contracts-upgradeable/", + "@openzeppelin/=node_modules/@openzeppelin/", + "@optimism/=node_modules/optimism/", + "@p256-verifier/contracts/=node_modules/p256-verifier/src/", + "@risc0/contracts/=node_modules/risc0-ethereum/contracts/src/", + "@solady/=node_modules/solady/", + "@sp1-contracts/=node_modules/sp1-contracts/contracts/", + "ds-test/=node_modules/ds-test/", + "forge-std/=node_modules/forge-std/", + "openzeppelin/=node_modules/@openzeppelin/", + "optimism/=node_modules/optimism/", + "p256-verifier/=node_modules/p256-verifier/", + "risc0-ethereum/=node_modules/risc0-ethereum/", + "script/=script/", + "solady/src/=node_modules/solady/src/", + "solady/utils/=node_modules/solady/src/utils/", + "sp1-contracts/=node_modules/sp1-contracts/", + "src/=contracts/", + "test/=test/", + "urc/=node_modules/urc/" + ], + "optimizer": { + "enabled": true, + "runs": 200 + }, + "metadata": { + "bytecodeHash": "ipfs" + }, + "compilationTarget": { + "contracts/shared/bridge/Bridge.sol": "Bridge" + }, + "evmVersion": "shanghai", + "libraries": {} + }, + "sources": { + "contracts/shared/bridge/Bridge.sol": { + "keccak256": "0x58d4c542b77fe23d3078c3b9de781db54f1f318ed817d18af39cf915c3100c1e", + "urls": [ + "bzz-raw://7482d1d403d37f1a925b5ae979cdb7fba1463b87cfa882cafa54454f9868283d", + "dweb:/ipfs/QmdhKFvapFkQD11AanqR1v28CRC8ZrMRu4dnVw8QoqGqNR" + ], + "license": "MIT" + }, + "contracts/shared/bridge/IBridge.sol": { + "keccak256": "0x6b200a3471c7d1e2150c7a2f07f9fc4e619b93c72e61a937ecaf2f659f17a6e1", + "urls": [ + "bzz-raw://51633f9d1c2799a6943d94324c7a4630adfbf46aad0639670870835a08ea563e", + "dweb:/ipfs/Qmbt7P6LSkvgKomUkD5E85128t35kc6QUPXCWSEGrG5n9W" + ], + "license": "MIT" + }, + "contracts/shared/common/EssentialContract.sol": { + "keccak256": "0x23f5e92e919911e82b308b25cf5c06050fd7c7799d44156d8492c2879a12c0a6", + "urls": [ + "bzz-raw://800f8bc7c8a362c8c684906e20c060d893cd4e8badf74cf12026e0cc159c846f", + "dweb:/ipfs/QmPbre9Skvfz5K7TWVHYTGGnec99VMnY9EUFbB6VqMsd9C" + ], + "license": "MIT" + }, + "contracts/shared/common/EssentialResolverContract.sol": { + "keccak256": "0x5736a30fa45c48e3ff6d53170d980942ad42b788de81f5542a66397fb572b457", + "urls": [ + "bzz-raw://06d2dcf4d83335d05a12272507991ca23d23ed5a893fd2f97e75324135858ed2", + "dweb:/ipfs/QmfWRCDnq6TXg8uwv2odpeLFguRSeLKuhL3VPMmGyyh9Eh" + ], + "license": "MIT" + }, + "contracts/shared/common/IResolver.sol": { + "keccak256": "0x01273635aa0be2ad8d6218ad520f824f2003eab82be1d14c46da58f2516a48dd", + "urls": [ + "bzz-raw://122dd3456077cf0be42bb974954c9918dca296415b076faeba0336ecee33de8e", + "dweb:/ipfs/QmSr4WQEFDJwqyqpextmY8Fp3b7Z96SBHgAEKsvXe6dEZV" + ], + "license": "MIT" + }, + "contracts/shared/libs/LibAddress.sol": { + "keccak256": "0x06e39ae119af22feb19ebf8cbd9ee8514118b84388ef93c4650779fd10da8538", + "urls": [ + "bzz-raw://e0284aa60ade3d0f87134e6f39c181cca41c345af766b2f8f72c6de50ccf9841", + "dweb:/ipfs/QmYNcjXmgVVPForNL34yrcZ97H2hKef4jL1DaQy6oNFhmY" + ], + "license": "MIT" + }, + "contracts/shared/libs/LibMath.sol": { + "keccak256": "0x3e2ce1ccb5a4d94c6f97e09ebdb1e731c0bae466981be52147f15063b3742d69", + "urls": [ + "bzz-raw://3530b4db00c1f357562d2dbab8978613c09b30ce1a6312de864399c7af82f9c7", + "dweb:/ipfs/Qmbp9HeWwPAx5Krcjuu8UCJB3so6rZu4TUTPD6vRKDDBjg" + ], + "license": "MIT" + }, + "contracts/shared/libs/LibNames.sol": { + "keccak256": "0x1227d014ad714497f4779b334da558a7da409860a6139b8ba88e53044bf8fb17", + "urls": [ + "bzz-raw://f743c99518df4f1b1a8cdcbcdcc9a60357b81684e40f68573d4b9eef230d67ee", + "dweb:/ipfs/QmapJMW5WhFjg8FK598gRitW3EwzkRn6TQ9fLuGjoMcaMP" + ], + "license": "MIT" + }, + "contracts/shared/libs/LibNetwork.sol": { + "keccak256": "0xb5c6769cffcf864f725f8a76f98806f668f94a516125b854faa983b29d8f91ee", + "urls": [ + "bzz-raw://de4a9c2ae643272308f42ec150bae3b2a88145357e78eac074e8f68ff3d04595", + "dweb:/ipfs/QmWNdKbTUvpR33nDunSjzKtR3ZQPPkFDD538fqhr9m6VY1" + ], + "license": "MIT" + }, + "contracts/shared/signal/ICheckpointStore.sol": { + "keccak256": "0x82d7e6a1a6297ee7126ab7a83039900e453f76c9a0dff367be5699c742312067", + "urls": [ + "bzz-raw://1db8501e9b6cadfdefd1ca1bb0cc9d241c9643abab73ec68d12e17aa8e543679", + "dweb:/ipfs/QmVMFkLduiSeYoZ3NynDNoAcxZi53Lt6Gct7TtXXTyY4LE" + ], + "license": "MIT" + }, + "contracts/shared/signal/ISignalService.sol": { + "keccak256": "0xda39e5766d2a3cc48e19aa0bd8c1235dd7e44bf6df18f0025999e08e25ad0639", + "urls": [ + "bzz-raw://71d6bb884be8db07e4b89f792aa8e3ad69c1045912be23cfb114935572fe6274", + "dweb:/ipfs/QmZBuTtCSs4HtKVWo1zsKdU2WndsVDKX8H9VBwyCYbCGeN" + ], + "license": "MIT" + }, + "node_modules/@openzeppelin/contracts-upgradeable/access/Ownable2StepUpgradeable.sol": { + "keccak256": "0x9140dabc466abab21b48b72dbda26736b1183a310d0e677d3719d201df026510", + "urls": [ + "bzz-raw://75267b14b60dc216d01d596a4008189a6c44d3314e53eded0edb1e757d95be16", + "dweb:/ipfs/QmQoMaxTRT6V7uQj9USfdQH9jh1crywB9auVjThzUSAbG2" + ], + "license": "MIT" + }, + "node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol": { + "keccak256": "0x359a1ab89b46b9aba7bcad3fb651924baf4893d15153049b9976b0fc9be1358e", + "urls": [ + "bzz-raw://e89863421b4014b96a4b62be76eb3b9f0a8afe9684664a6f389124c0964bfe5c", + "dweb:/ipfs/Qmbk7xr1irpDuU1WdxXgxELBXxs61rHhCgod7heVcvFx16" + ], + "license": "MIT" + }, + "node_modules/@openzeppelin/contracts-upgradeable/governance/utils/IVotesUpgradeable.sol": { + "keccak256": "0x2d600bbef9320309cd2a86c1d087eb9d6dbcc00430713ee54bbc5c5a2a11ba31", + "urls": [ + "bzz-raw://52a5380b861d676adef15f33f8f643e236a1acb2d9456beb4065307eaa22bc2a", + "dweb:/ipfs/QmdwSfxrafQubVvCoQCU5T7bbPR8JDWU1WotSDXSiUdm33" + ], + "license": "MIT" + }, + "node_modules/@openzeppelin/contracts-upgradeable/interfaces/IERC5267Upgradeable.sol": { + "keccak256": "0xe562dab443278837fa50faddb76743399e942181881db8dccaea3bd1712994db", + "urls": [ + "bzz-raw://79ebe0e661396045cefe94f4256398cf632756d779a6871319db374c9eb128c9", + "dweb:/ipfs/QmfCTCivb9fFhyCX8hzushzcKunvKL2N9RDsnRNdvbd11M" + ], + "license": "MIT" + }, + "node_modules/@openzeppelin/contracts-upgradeable/interfaces/IERC5805Upgradeable.sol": { + "keccak256": "0x19848eec9045c8b91f1ab6b1853966443e3e36bcbc307593ed37a9f0df179d69", + "urls": [ + "bzz-raw://a07972c1330ee99a5d051b393260e01412ac4c14c7bc4d75d80b7cce291a6412", + "dweb:/ipfs/QmQx1ZiAo4AbSobN41c1xUEtyX1QejydWCmY7Sj3H5aDNv" + ], + "license": "MIT" + }, + "node_modules/@openzeppelin/contracts-upgradeable/interfaces/IERC6372Upgradeable.sol": { + "keccak256": "0x3026befd6d69d1b46960bdc35a2ad37c0e1352f26983ee3728dd61fd32aa308a", + "urls": [ + "bzz-raw://c2001b7209fd4920ec7674f194db7fe163dfea7a7af2dd25fe6c0e5a94dc595c", + "dweb:/ipfs/QmXX2zTFyiNWoDxivV3trKcKWifAENMqNAB34NgjWq5feX" + ], + "license": "MIT" + }, + "node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol": { + "keccak256": "0x89be10e757d242e9b18d5a32c9fbe2019f6d63052bbe46397a430a1d60d7f794", + "urls": [ + "bzz-raw://f103ee2e4aecd37aac6ceefe670709cdd7613dee25fa2d4d9feaf7fc0aaa155e", + "dweb:/ipfs/QmRiNZLoJk5k3HPMYGPGjZFd2ke1ZxjhJZkM45Ec9GH9hv" + ], + "license": "MIT" + }, + "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol": { + "keccak256": "0xa9311aeb22f459e57d4dac77ee76cf43fb28ad3215278456211b5852b0e9e970", + "urls": [ + "bzz-raw://ebdf0d3e42bd25223e45a213311d6d7e177d56a2c541a78b58c0c9d10bbdfbf9", + "dweb:/ipfs/QmfMyehJ6pxHrh7yL4793J6i7dofXnS2zH3cTtC8JdQMV9" + ], + "license": "MIT" + }, + "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol": { + "keccak256": "0x0e1f0f5f62f67a881cd1a9597acbc0a5e4071f3c2c10449a183b922ae7272e3f", + "urls": [ + "bzz-raw://c25f742ff154998d19a669e2508c3597b363e123ce9144cd0fcf6521229f401f", + "dweb:/ipfs/QmQXRuFzStEWqeEPbhQU6cAg9PaSowxJVo4PDKyRod7dco" + ], + "license": "MIT" + }, + "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/extensions/ERC20PermitUpgradeable.sol": { + "keccak256": "0x3d159b9049d4ef465c1fb41f7ff7620f18f52bf6f8f3018bae4ed95c2df537d3", + "urls": [ + "bzz-raw://38f7cfa624d878eec3c97e30dac64c6c00a79c65aa2799cebbf683e74488cd27", + "dweb:/ipfs/QmdtMH3xSGXNqvBcndsxWCUfmjta6kebnUYwKasJZucTfP" + ], + "license": "MIT" + }, + "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/extensions/ERC20VotesUpgradeable.sol": { + "keccak256": "0x82d5c2e8d5c7209f5cd2e7a40807ba264cb8bc577db1b121eda5f14f62d609c2", + "urls": [ + "bzz-raw://024b99222ec16e75ff1b719c8f0dacf2d8e26250b3c076bd184ac1dadae47492", + "dweb:/ipfs/QmP11f3Dumw3CYg4ZtBLJrh8juULgodSuQfCqqgX5DqpJE" + ], + "license": "MIT" + }, + "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/extensions/IERC20MetadataUpgradeable.sol": { + "keccak256": "0x605434219ebbe4653f703640f06969faa5a1d78f0bfef878e5ddbb1ca369ceeb", + "urls": [ + "bzz-raw://4c9c634f99dd02d73ce7498b03a6305e251c05eeebb71457306561c1fab0fa7d", + "dweb:/ipfs/QmbYRBbZHy8YoaQKXdPryiL3CSS7uUaRfRYi1TUj9cTqJQ" + ], + "license": "MIT" + }, + "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/extensions/IERC20PermitUpgradeable.sol": { + "keccak256": "0x07e881de3b9f6d2c07909f193f24b96c7fe4ea60013260f3f25aecd8bab3c2f8", + "urls": [ + "bzz-raw://1fed09b97ccb0ff9ba9b6a94224f1d489026bf6b4b7279bfe64fb6e8749dee4d", + "dweb:/ipfs/QmcRAzaSP1UnGr4vrGkfJmB2L9aiTYoXfV1Lg9gqrVRWn8" + ], + "license": "MIT" + }, + "node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol": { + "keccak256": "0x9c80f545915582e63fe206c6ce27cbe85a86fc10b9cd2a0e8c9488fb7c2ee422", + "urls": [ + "bzz-raw://310136ad60820af4177a11a61d77a3686faf5fca4942b600e08fc940db38396b", + "dweb:/ipfs/QmbCzMNSTL7Zi7M4UCSqBrkHtp4jjxUnGbkneCZKdR1qeq" + ], + "license": "MIT" + }, + "node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol": { + "keccak256": "0x75097e35253e7fb282ee4d7f27a80eaacfa759923185bf17302a89cbc059c5ef", + "urls": [ + "bzz-raw://8b06267c5f80bad727af3e48b1382333d591dad51376399ef2f6b0ee6d58bf95", + "dweb:/ipfs/QmdU5La1agcQvghnfMpWZGDPz2TUDTCxUwTLKmuMRXBpAx" + ], + "license": "MIT" + }, + "node_modules/@openzeppelin/contracts-upgradeable/utils/CountersUpgradeable.sol": { + "keccak256": "0x798741e231b22b81e2dd2eddaaf8832dee4baf5cd8e2dbaa5c1dd12a1c053c4d", + "urls": [ + "bzz-raw://c41e8a7a906b8f362c8b760a44edadc61782008ea2ecf377ac5b5325bf6c3912", + "dweb:/ipfs/QmcXr19zuH3YLzD6RZNE6UTzvsKSckdxZQnagPoDGkCHu2" + ], + "license": "MIT" + }, + "node_modules/@openzeppelin/contracts-upgradeable/utils/StringsUpgradeable.sol": { + "keccak256": "0xb96dc79b65b7c37937919dcdb356a969ce0aa2e8338322bf4dc027a3c9c9a7eb", + "urls": [ + "bzz-raw://f8613145881436fc0480fff22da4868d611e2b0c0c3da083334eb4362ce1945a", + "dweb:/ipfs/QmPqpP3YeRbBdTJRe6Gv2eGsUaANf4J6RwTNRW36iYahfV" + ], + "license": "MIT" + }, + "node_modules/@openzeppelin/contracts-upgradeable/utils/cryptography/ECDSAUpgradeable.sol": { + "keccak256": "0xa014f65d84b02827055d99993ccdbfb4b56b2c9e91eb278d82a93330659d06e4", + "urls": [ + "bzz-raw://50a7e716a74f3d48a7f549086faa94afcd58b9f18ac8e9f74af4571f3a1d8d5c", + "dweb:/ipfs/QmTkDNWkq5o9Cv2jS7s6JvSmsPBkeunZhPe7Z2njGL31wo" + ], + "license": "MIT" + }, + "node_modules/@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol": { + "keccak256": "0x7077d7f3369b21f286840c0d69b09a8a6d3d6e522fff67bfc240fd0a6cdf178c", + "urls": [ + "bzz-raw://0f59e7a19530bd6ee236285f9a87c930d27b73464f6b7398e29a6f4cfc2670ac", + "dweb:/ipfs/QmVfN4gHvJNac7KiuhLhtgtbdDo5a6Mw5hMcwJkzYugq5R" + ], + "license": "MIT" + }, + "node_modules/@openzeppelin/contracts-upgradeable/utils/math/MathUpgradeable.sol": { + "keccak256": "0x2bc0007987c229ae7624eb29be6a9b84f6a6a5872f76248b15208b131ea41c4e", + "urls": [ + "bzz-raw://2b2835c737d073ef8b82a4cc246495a9740f43e7ff2cf130906b2449ff9bfb91", + "dweb:/ipfs/QmSCWfNoSvvTN57ic7o1RW6NqSxxGAqbBTnLKc7QHe27qB" + ], + "license": "MIT" + }, + "node_modules/@openzeppelin/contracts-upgradeable/utils/math/SafeCastUpgradeable.sol": { + "keccak256": "0xcef50f95b43b038aa40aed25b62fc45906c681a5c1d504a4fdcf3bc6330a8d4b", + "urls": [ + "bzz-raw://ef883699a00970d5469e502514e2854704cd53d7a49825078aa807a2f056315c", + "dweb:/ipfs/QmRjpN9oxgw6zHCVjfWNB9MzaYpNPPgqu7Rrwqwabmhpis" + ], + "license": "MIT" + }, + "node_modules/@openzeppelin/contracts-upgradeable/utils/math/SignedMathUpgradeable.sol": { + "keccak256": "0x88f6b7bba3ee33eeb741f9a0f5bc98b6e6e352d0fe4905377bb328590f84095a", + "urls": [ + "bzz-raw://88ace2d60f265752f18903d839910be4e4e104340b2957678585b812447825d4", + "dweb:/ipfs/QmXFkNxMc3AAGzhs2wUEZyErWQjsvoTGyYjuU5oZkFki5Z" + ], + "license": "MIT" + }, + "node_modules/@openzeppelin/contracts/interfaces/IERC1967.sol": { + "keccak256": "0x3cbef5ebc24b415252e2f8c0c9254555d30d9f085603b4b80d9b5ed20ab87e90", + "urls": [ + "bzz-raw://e8fa670c3bdce78e642cc6ae11c4cb38b133499cdce5e1990a9979d424703263", + "dweb:/ipfs/QmVxeCUk4jL2pXQyhsoNJwyU874wRufS2WvGe8TgPKPqhE" + ], + "license": "MIT" + }, + "node_modules/@openzeppelin/contracts/interfaces/draft-IERC1822.sol": { + "keccak256": "0x1d4afe6cb24200cc4545eed814ecf5847277dfe5d613a1707aad5fceecebcfff", + "urls": [ + "bzz-raw://383fb7b8181016ac5ccf07bc9cdb7c1b5045ea36e2cc4df52bcbf20396fc7688", + "dweb:/ipfs/QmYJ7Cg4WmE3rR8KGQxjUCXFfTH6TcwZ2Z1f6tPrq7jHFr" + ], + "license": "MIT" + }, + "node_modules/@openzeppelin/contracts/proxy/ERC1967/ERC1967Upgrade.sol": { + "keccak256": "0x3b21ae06bf5957f73fa16754b0669c77b7abd8ba6c072d35c3281d446fdb86c2", + "urls": [ + "bzz-raw://2db8e18505e86e02526847005d7287a33e397ed7fb9eaba3fd4a4a197add16e2", + "dweb:/ipfs/QmW9BSuKTzHWHBNSHF4L8XfVuU1uJrP2vLg84YtBd8mL82" + ], + "license": "MIT" + }, + "node_modules/@openzeppelin/contracts/proxy/beacon/IBeacon.sol": { + "keccak256": "0xd50a3421ac379ccb1be435fa646d66a65c986b4924f0849839f08692f39dde61", + "urls": [ + "bzz-raw://ada1e030c0231db8d143b44ce92b4d1158eedb087880cad6d8cc7bd7ebe7b354", + "dweb:/ipfs/QmWZ2NHZweRpz1U9GF6R1h65ri76dnX7fNxLBeM2t5N5Ce" + ], + "license": "MIT" + }, + "node_modules/@openzeppelin/contracts/proxy/utils/UUPSUpgradeable.sol": { + "keccak256": "0xc6619957bcc6641fe8984bfaf9ff11a9e4b97d8149c0495f608f9a2416d7c5cf", + "urls": [ + "bzz-raw://543be67f7fa43b1b932637c1c7f12035f0f4b0f7ee2bd3c33841186f79c165c1", + "dweb:/ipfs/QmSBPM2UVKbmJqWfD9i6hSiqbaE8TV4TSqfuiivziRRLKM" + ], + "license": "MIT" + }, + "node_modules/@openzeppelin/contracts/utils/Address.sol": { + "keccak256": "0x006dd67219697fe68d7fbfdea512e7c4cb64a43565ed86171d67e844982da6fa", + "urls": [ + "bzz-raw://2455248c8ddd9cc6a7af76a13973cddf222072427e7b0e2a7d1aff345145e931", + "dweb:/ipfs/QmfYjnjRbWqYpuxurqveE6HtzsY1Xx323J428AKQgtBJZm" + ], + "license": "MIT" + }, + "node_modules/@openzeppelin/contracts/utils/StorageSlot.sol": { + "keccak256": "0xf09e68aa0dc6722a25bc46490e8d48ed864466d17313b8a0b254c36b54e49899", + "urls": [ + "bzz-raw://e26daf81e2252dc1fe1ce0e4b55c2eb7c6d1ee84ae6558d1a9554432ea1d32da", + "dweb:/ipfs/Qmb1UANWiWq5pCKbmHSu772hd4nt374dVaghGmwSVNuk8Q" + ], + "license": "MIT" + }, + "node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol": { + "keccak256": "0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1", + "urls": [ + "bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f", + "dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy" + ], + "license": "MIT" + } + }, + "version": 1 + }, + "storageLayout": { + "storage": [ + { + "astId": 11586, + "contract": "contracts/shared/bridge/Bridge.sol:Bridge", + "label": "_initialized", + "offset": 0, + "slot": "0", + "type": "t_uint8" + }, + { + "astId": 11589, + "contract": "contracts/shared/bridge/Bridge.sol:Bridge", + "label": "_initializing", + "offset": 1, + "slot": "0", + "type": "t_bool" + }, + { + "astId": 16420, + "contract": "contracts/shared/bridge/Bridge.sol:Bridge", + "label": "__gap", + "offset": 0, + "slot": "1", + "type": "t_array(t_uint256)50_storage" + }, + { + "astId": 11331, + "contract": "contracts/shared/bridge/Bridge.sol:Bridge", + "label": "_owner", + "offset": 0, + "slot": "51", + "type": "t_address" + }, + { + "astId": 11451, + "contract": "contracts/shared/bridge/Bridge.sol:Bridge", + "label": "__gap", + "offset": 0, + "slot": "52", + "type": "t_array(t_uint256)49_storage" + }, + { + "astId": 11224, + "contract": "contracts/shared/bridge/Bridge.sol:Bridge", + "label": "_pendingOwner", + "offset": 0, + "slot": "101", + "type": "t_address" + }, + { + "astId": 11318, + "contract": "contracts/shared/bridge/Bridge.sol:Bridge", + "label": "__gap", + "offset": 0, + "slot": "102", + "type": "t_array(t_uint256)49_storage" + }, + { + "astId": 4316, + "contract": "contracts/shared/bridge/Bridge.sol:Bridge", + "label": "__gapFromOldAddressResolver", + "offset": 0, + "slot": "151", + "type": "t_array(t_uint256)50_storage" + }, + { + "astId": 4319, + "contract": "contracts/shared/bridge/Bridge.sol:Bridge", + "label": "__reentry", + "offset": 0, + "slot": "201", + "type": "t_uint8" + }, + { + "astId": 4321, + "contract": "contracts/shared/bridge/Bridge.sol:Bridge", + "label": "__paused", + "offset": 1, + "slot": "201", + "type": "t_uint8" + }, + { + "astId": 4325, + "contract": "contracts/shared/bridge/Bridge.sol:Bridge", + "label": "__gap", + "offset": 0, + "slot": "202", + "type": "t_array(t_uint256)49_storage" + }, + { + "astId": 2533, + "contract": "contracts/shared/bridge/Bridge.sol:Bridge", + "label": "__reserved1", + "offset": 0, + "slot": "251", + "type": "t_uint64" + }, + { + "astId": 2535, + "contract": "contracts/shared/bridge/Bridge.sol:Bridge", + "label": "nextMessageId", + "offset": 8, + "slot": "251", + "type": "t_uint64" + }, + { + "astId": 2541, + "contract": "contracts/shared/bridge/Bridge.sol:Bridge", + "label": "messageStatus", + "offset": 0, + "slot": "252", + "type": "t_mapping(t_bytes32,t_enum(Status)4018)" + }, + { + "astId": 2545, + "contract": "contracts/shared/bridge/Bridge.sol:Bridge", + "label": "__ctx", + "offset": 0, + "slot": "253", + "type": "t_struct(Context)4053_storage" + }, + { + "astId": 2548, + "contract": "contracts/shared/bridge/Bridge.sol:Bridge", + "label": "__reserved2", + "offset": 0, + "slot": "255", + "type": "t_uint256" + }, + { + "astId": 2551, + "contract": "contracts/shared/bridge/Bridge.sol:Bridge", + "label": "__reserved3", + "offset": 0, + "slot": "256", + "type": "t_uint256" + }, + { + "astId": 2555, + "contract": "contracts/shared/bridge/Bridge.sol:Bridge", + "label": "__gap", + "offset": 0, + "slot": "257", + "type": "t_array(t_uint256)44_storage" + } + ], + "types": { + "t_address": { + "encoding": "inplace", + "label": "address", + "numberOfBytes": "20" + }, + "t_array(t_uint256)44_storage": { + "encoding": "inplace", + "label": "uint256[44]", + "numberOfBytes": "1408", + "base": "t_uint256" + }, + "t_array(t_uint256)49_storage": { + "encoding": "inplace", + "label": "uint256[49]", + "numberOfBytes": "1568", + "base": "t_uint256" + }, + "t_array(t_uint256)50_storage": { + "encoding": "inplace", + "label": "uint256[50]", + "numberOfBytes": "1600", + "base": "t_uint256" + }, + "t_bool": { + "encoding": "inplace", + "label": "bool", + "numberOfBytes": "1" + }, + "t_bytes32": { + "encoding": "inplace", + "label": "bytes32", + "numberOfBytes": "32" + }, + "t_enum(Status)4018": { + "encoding": "inplace", + "label": "enum IBridge.Status", + "numberOfBytes": "1" + }, + "t_mapping(t_bytes32,t_enum(Status)4018)": { + "encoding": "mapping", + "key": "t_bytes32", + "label": "mapping(bytes32 => enum IBridge.Status)", + "numberOfBytes": "32", + "value": "t_enum(Status)4018" + }, + "t_struct(Context)4053_storage": { + "encoding": "inplace", + "label": "struct IBridge.Context", + "numberOfBytes": "64", + "members": [ + { + "astId": 4048, + "contract": "contracts/shared/bridge/Bridge.sol:Bridge", + "label": "msgHash", + "offset": 0, + "slot": "0", + "type": "t_bytes32" + }, + { + "astId": 4050, + "contract": "contracts/shared/bridge/Bridge.sol:Bridge", + "label": "from", + "offset": 0, + "slot": "1", + "type": "t_address" + }, + { + "astId": 4052, + "contract": "contracts/shared/bridge/Bridge.sol:Bridge", + "label": "srcChainId", + "offset": 20, + "slot": "1", + "type": "t_uint64" + } + ] + }, + "t_uint256": { + "encoding": "inplace", + "label": "uint256", + "numberOfBytes": "32" + }, + "t_uint64": { + "encoding": "inplace", + "label": "uint64", + "numberOfBytes": "8" + }, + "t_uint8": { + "encoding": "inplace", + "label": "uint8", + "numberOfBytes": "1" + } + } + }, + "ast": { + "absolutePath": "contracts/shared/bridge/Bridge.sol", + "id": 4010, + "exportedSymbols": { + "Address": [ + 22766 + ], + "Bridge": [ + 4009 + ], + "ContextUpgradeable": [ + 16421 + ], + "CountersUpgradeable": [ + 16495 + ], + "ECDSAUpgradeable": [ + 17090 + ], + "EIP712Upgradeable": [ + 17375 + ], + "ERC1967Upgrade": [ + 20512 + ], + "ERC20PermitUpgradeable": [ + 14110 + ], + "ERC20Upgradeable": [ + 13840 + ], + "ERC20VotesUpgradeable": [ + 14865 + ], + "EssentialContract": [ + 4802 + ], + "EssentialResolverContract": [ + 5017 + ], + "IBeacon": [ + 20574 + ], + "IBridge": [ + 4153 + ], + "ICheckpointStore": [ + 6185 + ], + "IERC165": [ + 23513 + ], + "IERC1822Proxiable": [ + 20171 + ], + "IERC1967": [ + 20161 + ], + "IERC20MetadataUpgradeable": [ + 14890 + ], + "IERC20PermitUpgradeable": [ + 14926 + ], + "IERC20Upgradeable": [ + 13918 + ], + "IERC5267Upgradeable": [ + 11555 + ], + "IERC5805Upgradeable": [ + 11564 + ], + "IERC6372Upgradeable": [ + 11579 + ], + "IMessageInvocable": [ + 4172 + ], + "IRecallableSender": [ + 4164 + ], + "IResolver": [ + 5035 + ], + "ISignalService": [ + 6277 + ], + "IVotesUpgradeable": [ + 11530 + ], + "Initializable": [ + 11748 + ], + "LibAddress": [ + 5555 + ], + "LibMath": [ + 5787 + ], + "LibNames": [ + 5845 + ], + "LibNetwork": [ + 6029 + ], + "MathUpgradeable": [ + 18298 + ], + "Ownable2StepUpgradeable": [ + 11319 + ], + "OwnableUpgradeable": [ + 11452 + ], + "SafeCastUpgradeable": [ + 19839 + ], + "SignedMathUpgradeable": [ + 19944 + ], + "StorageSlot": [ + 22906 + ], + "StringsUpgradeable": [ + 16724 + ], + "UUPSUpgradeable": [ + 21013 + ] + }, + "nodeType": "SourceUnit", + "src": "32:26236:9", + "nodes": [ + { + "id": 2454, + "nodeType": "PragmaDirective", + "src": "32:24:9", + "nodes": [], + "literals": [ + "solidity", + "^", + "0.8", + ".24" + ] + }, + { + "id": 2455, + "nodeType": "ImportDirective", + "src": "58:49:9", + "nodes": [], + "absolutePath": "contracts/shared/common/EssentialResolverContract.sol", + "file": "../common/EssentialResolverContract.sol", + "nameLocation": "-1:-1:-1", + "scope": 4010, + "sourceUnit": 5018, + "symbolAliases": [], + "unitAlias": "" + }, + { + "id": 2456, + "nodeType": "ImportDirective", + "src": "108:32:9", + "nodes": [], + "absolutePath": "contracts/shared/libs/LibAddress.sol", + "file": "../libs/LibAddress.sol", + "nameLocation": "-1:-1:-1", + "scope": 4010, + "sourceUnit": 5556, + "symbolAliases": [], + "unitAlias": "" + }, + { + "id": 2457, + "nodeType": "ImportDirective", + "src": "141:29:9", + "nodes": [], + "absolutePath": "contracts/shared/libs/LibMath.sol", + "file": "../libs/LibMath.sol", + "nameLocation": "-1:-1:-1", + "scope": 4010, + "sourceUnit": 5788, + "symbolAliases": [], + "unitAlias": "" + }, + { + "id": 2458, + "nodeType": "ImportDirective", + "src": "171:30:9", + "nodes": [], + "absolutePath": "contracts/shared/libs/LibNames.sol", + "file": "../libs/LibNames.sol", + "nameLocation": "-1:-1:-1", + "scope": 4010, + "sourceUnit": 5846, + "symbolAliases": [], + "unitAlias": "" + }, + { + "id": 2459, + "nodeType": "ImportDirective", + "src": "202:32:9", + "nodes": [], + "absolutePath": "contracts/shared/libs/LibNetwork.sol", + "file": "../libs/LibNetwork.sol", + "nameLocation": "-1:-1:-1", + "scope": 4010, + "sourceUnit": 6030, + "symbolAliases": [], + "unitAlias": "" + }, + { + "id": 2460, + "nodeType": "ImportDirective", + "src": "235:38:9", + "nodes": [], + "absolutePath": "contracts/shared/signal/ISignalService.sol", + "file": "../signal/ISignalService.sol", + "nameLocation": "-1:-1:-1", + "scope": 4010, + "sourceUnit": 6278, + "symbolAliases": [], + "unitAlias": "" + }, + { + "id": 2461, + "nodeType": "ImportDirective", + "src": "274:23:9", + "nodes": [], + "absolutePath": "contracts/shared/bridge/IBridge.sol", + "file": "./IBridge.sol", + "nameLocation": "-1:-1:-1", + "scope": 4010, + "sourceUnit": 4173, + "symbolAliases": [], + "unitAlias": "" + }, + { + "id": 2462, + "nodeType": "ImportDirective", + "src": "298:94:9", + "nodes": [], + "absolutePath": "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/extensions/ERC20VotesUpgradeable.sol", + "file": "@openzeppelin/contracts-upgradeable/token/ERC20/extensions/ERC20VotesUpgradeable.sol", + "nameLocation": "-1:-1:-1", + "scope": 4010, + "sourceUnit": 14866, + "symbolAliases": [], + "unitAlias": "" + }, + { + "id": 4009, + "nodeType": "ContractDefinition", + "src": "643:25624:9", + "nodes": [ + { + "id": 2470, + "nodeType": "UsingForDirective", + "src": "703:26:9", + "nodes": [], + "global": false, + "libraryName": { + "id": 2468, + "name": "Address", + "nameLocations": [ + "709:7:9" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 22766, + "src": "709:7:9" + }, + "typeName": { + "id": 2469, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "721:7:9", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + { + "id": 2473, + "nodeType": "UsingForDirective", + "src": "734:26:9", + "nodes": [], + "global": false, + "libraryName": { + "id": 2471, + "name": "LibMath", + "nameLocations": [ + "740:7:9" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 5787, + "src": "740:7:9" + }, + "typeName": { + "id": 2472, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "752:7:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + { + "id": 2476, + "nodeType": "UsingForDirective", + "src": "765:29:9", + "nodes": [], + "global": false, + "libraryName": { + "id": 2474, + "name": "LibAddress", + "nameLocations": [ + "771:10:9" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 5555, + "src": "771:10:9" + }, + "typeName": { + "id": 2475, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "786:7:9", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + { + "id": 2479, + "nodeType": "UsingForDirective", + "src": "799:37:9", + "nodes": [], + "global": false, + "libraryName": { + "id": 2477, + "name": "LibAddress", + "nameLocations": [ + "805:10:9" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 5555, + "src": "805:10:9" + }, + "typeName": { + "id": 2478, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "820:15:9", + "stateMutability": "payable", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + } + }, + { + "id": 2488, + "nodeType": "StructDefinition", + "src": "842:150:9", + "nodes": [], + "canonicalName": "Bridge.ProcessingStats", + "members": [ + { + "constant": false, + "id": 2481, + "mutability": "mutable", + "name": "gasUsedInFeeCalc", + "nameLocation": "882:16:9", + "nodeType": "VariableDeclaration", + "scope": 2488, + "src": "875:23:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + }, + "typeName": { + "id": 2480, + "name": "uint32", + "nodeType": "ElementaryTypeName", + "src": "875:6:9", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2483, + "mutability": "mutable", + "name": "proofSize", + "nameLocation": "915:9:9", + "nodeType": "VariableDeclaration", + "scope": 2488, + "src": "908:16:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + }, + "typeName": { + "id": 2482, + "name": "uint32", + "nodeType": "ElementaryTypeName", + "src": "908:6:9", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2485, + "mutability": "mutable", + "name": "numCacheOps", + "nameLocation": "941:11:9", + "nodeType": "VariableDeclaration", + "scope": 2488, + "src": "934:18:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + }, + "typeName": { + "id": 2484, + "name": "uint32", + "nodeType": "ElementaryTypeName", + "src": "934:6:9", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2487, + "mutability": "mutable", + "name": "processedByRelayer", + "nameLocation": "967:18:9", + "nodeType": "VariableDeclaration", + "scope": 2488, + "src": "962:23:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 2486, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "962:4:9", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "name": "ProcessingStats", + "nameLocation": "849:15:9", + "scope": 4009, + "visibility": "public" + }, + { + "id": 2499, + "nodeType": "EventDefinition", + "src": "1078:88:9", + "nodes": [], + "anonymous": false, + "documentation": { + "id": 2489, + "nodeType": "StructuredDocumentation", + "src": "998:75:9", + "text": "@dev A debug event for fine-tuning gas related constants in the future." + }, + "eventSelector": "8580f507761043ecdd2bdca084d6fb0109150b3d9842d854d34e3dea6d69387d", + "name": "MessageProcessed", + "nameLocation": "1084:16:9", + "parameters": { + "id": 2498, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2491, + "indexed": true, + "mutability": "mutable", + "name": "msgHash", + "nameLocation": "1117:7:9", + "nodeType": "VariableDeclaration", + "scope": 2499, + "src": "1101:23:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 2490, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1101:7:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2494, + "indexed": false, + "mutability": "mutable", + "name": "message", + "nameLocation": "1134:7:9", + "nodeType": "VariableDeclaration", + "scope": 2499, + "src": "1126:15:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Message_$4046_memory_ptr", + "typeString": "struct IBridge.Message" + }, + "typeName": { + "id": 2493, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 2492, + "name": "Message", + "nameLocations": [ + "1126:7:9" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 4046, + "src": "1126:7:9" + }, + "referencedDeclaration": 4046, + "src": "1126:7:9", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Message_$4046_storage_ptr", + "typeString": "struct IBridge.Message" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2497, + "indexed": false, + "mutability": "mutable", + "name": "stats", + "nameLocation": "1159:5:9", + "nodeType": "VariableDeclaration", + "scope": 2499, + "src": "1143:21:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ProcessingStats_$2488_memory_ptr", + "typeString": "struct Bridge.ProcessingStats" + }, + "typeName": { + "id": 2496, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 2495, + "name": "ProcessingStats", + "nameLocations": [ + "1143:15:9" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 2488, + "src": "1143:15:9" + }, + "referencedDeclaration": 2488, + "src": "1143:15:9", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ProcessingStats_$2488_storage_ptr", + "typeString": "struct Bridge.ProcessingStats" + } + }, + "visibility": "internal" + } + ], + "src": "1100:65:9" + } + }, + { + "id": 2503, + "nodeType": "VariableDeclaration", + "src": "1354:44:9", + "nodes": [], + "constant": true, + "documentation": { + "id": 2500, + "nodeType": "StructuredDocumentation", + "src": "1172:177:9", + "text": "@dev The amount of gas that will be deducted from message.gasLimit before calculating the\n invocation gas limit. This value should be fine-tuned with production data." + }, + "functionSelector": "be880c81", + "mutability": "constant", + "name": "GAS_RESERVE", + "nameLocation": "1377:11:9", + "scope": 4009, + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + }, + "typeName": { + "id": 2501, + "name": "uint32", + "nodeType": "ElementaryTypeName", + "src": "1354:6:9", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + }, + "value": { + "hexValue": "3830305f303030", + "id": 2502, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1391:7:9", + "typeDescriptions": { + "typeIdentifier": "t_rational_800000_by_1", + "typeString": "int_const 800000" + }, + "value": "800_000" + }, + "visibility": "public" + }, + { + "id": 2507, + "nodeType": "VariableDeclaration", + "src": "1584:45:9", + "nodes": [], + "constant": true, + "documentation": { + "id": 2504, + "nodeType": "StructuredDocumentation", + "src": "1405:174:9", + "text": "@dev The gas overhead for both receiving and invoking a message, as well as the proof\n calldata cost.\n This value should be fine-tuned with production data." + }, + "functionSelector": "a730cdfb", + "mutability": "constant", + "name": "GAS_OVERHEAD", + "nameLocation": "1607:12:9", + "scope": 4009, + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + }, + "typeName": { + "id": 2505, + "name": "uint32", + "nodeType": "ElementaryTypeName", + "src": "1584:6:9", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + }, + "value": { + "hexValue": "3132305f303030", + "id": 2506, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1622:7:9", + "typeDescriptions": { + "typeIdentifier": "t_rational_120000_by_1", + "typeString": "int_const 120000" + }, + "value": "120_000" + }, + "visibility": "public" + }, + { + "id": 2511, + "nodeType": "VariableDeclaration", + "src": "1713:57:9", + "nodes": [], + "constant": true, + "documentation": { + "id": 2508, + "nodeType": "StructuredDocumentation", + "src": "1636:72:9", + "text": "@dev The max proof size for a message to be processable by a relayer." + }, + "functionSelector": "422770fa", + "mutability": "constant", + "name": "RELAYER_MAX_PROOF_BYTES", + "nameLocation": "1737:23:9", + "scope": 4009, + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2509, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1713:7:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "hexValue": "3230305f303030", + "id": 2510, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1763:7:9", + "typeDescriptions": { + "typeIdentifier": "t_rational_200000_by_1", + "typeString": "int_const 200000" + }, + "value": "200_000" + }, + "visibility": "public" + }, + { + "id": 2515, + "nodeType": "VariableDeclaration", + "src": "1847:65:9", + "nodes": [], + "constant": true, + "documentation": { + "id": 2512, + "nodeType": "StructuredDocumentation", + "src": "1777:65:9", + "text": "@dev The amount of gas not to charge fee per cache operation." + }, + "mutability": "constant", + "name": "_GAS_REFUND_PER_CACHE_OPERATION", + "nameLocation": "1872:31:9", + "scope": 4009, + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2513, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1847:7:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "hexValue": "32305f303030", + "id": 2514, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1906:6:9", + "typeDescriptions": { + "typeIdentifier": "t_rational_20000_by_1", + "typeString": "int_const 20000" + }, + "value": "20_000" + }, + "visibility": "private" + }, + { + "id": 2519, + "nodeType": "VariableDeclaration", + "src": "2181:55:9", + "nodes": [], + "constant": true, + "documentation": { + "id": 2516, + "nodeType": "StructuredDocumentation", + "src": "1919:37:9", + "text": "@dev Gas limit for sending Ether." + }, + "mutability": "constant", + "name": "_SEND_ETHER_GAS_LIMIT", + "nameLocation": "2206:21:9", + "scope": 4009, + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2517, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2181:7:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "hexValue": "33355f303030", + "id": 2518, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2230:6:9", + "typeDescriptions": { + "typeIdentifier": "t_rational_35000_by_1", + "typeString": "int_const 35000" + }, + "value": "35_000" + }, + "visibility": "private" + }, + { + "id": 2527, + "nodeType": "VariableDeclaration", + "src": "2308:57:9", + "nodes": [], + "constant": true, + "documentation": { + "id": 2520, + "nodeType": "StructuredDocumentation", + "src": "2243:60:9", + "text": "@dev Place holder value when not using transient storage" + }, + "mutability": "constant", + "name": "_PLACEHOLDER", + "nameLocation": "2333:12:9", + "scope": 4009, + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2521, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2308:7:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "expression": { + "arguments": [ + { + "id": 2524, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "2353:7:9", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 2523, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2353:7:9", + "typeDescriptions": {} + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + } + ], + "id": 2522, + "name": "type", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -27, + "src": "2348:4:9", + "typeDescriptions": { + "typeIdentifier": "t_function_metatype_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 2525, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2348:13:9", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_magic_meta_type_t_uint256", + "typeString": "type(uint256)" + } + }, + "id": 2526, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "2362:3:9", + "memberName": "max", + "nodeType": "MemberAccess", + "src": "2348:17:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "private" + }, + { + "id": 2530, + "nodeType": "VariableDeclaration", + "src": "2372:45:9", + "nodes": [], + "constant": false, + "functionSelector": "62d09453", + "mutability": "immutable", + "name": "signalService", + "nameLocation": "2404:13:9", + "scope": 4009, + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ISignalService_$6277", + "typeString": "contract ISignalService" + }, + "typeName": { + "id": 2529, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 2528, + "name": "ISignalService", + "nameLocations": [ + "2372:14:9" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 6277, + "src": "2372:14:9" + }, + "referencedDeclaration": 6277, + "src": "2372:14:9", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ISignalService_$6277", + "typeString": "contract ISignalService" + } + }, + "visibility": "public" + }, + { + "id": 2533, + "nodeType": "VariableDeclaration", + "src": "2482:26:9", + "nodes": [], + "constant": false, + "documentation": { + "id": 2531, + "nodeType": "StructuredDocumentation", + "src": "2424:53:9", + "text": "@notice The next message ID.\n @dev Slot 1." + }, + "mutability": "mutable", + "name": "__reserved1", + "nameLocation": "2497:11:9", + "scope": 4009, + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + }, + "typeName": { + "id": 2532, + "name": "uint64", + "nodeType": "ElementaryTypeName", + "src": "2482:6:9", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "visibility": "private" + }, + { + "id": 2535, + "nodeType": "VariableDeclaration", + "src": "2514:27:9", + "nodes": [], + "baseFunctions": [ + 4143 + ], + "constant": false, + "functionSelector": "eefbf17e", + "mutability": "mutable", + "name": "nextMessageId", + "nameLocation": "2528:13:9", + "scope": 4009, + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + }, + "typeName": { + "id": 2534, + "name": "uint64", + "nodeType": "ElementaryTypeName", + "src": "2514:6:9", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "visibility": "public" + }, + { + "id": 2541, + "nodeType": "VariableDeclaration", + "src": "2641:62:9", + "nodes": [], + "constant": false, + "documentation": { + "id": 2536, + "nodeType": "StructuredDocumentation", + "src": "2548:88:9", + "text": "@notice Mapping to store the status of a message from its hash.\n @dev Slot 2." + }, + "functionSelector": "3c6cf473", + "mutability": "mutable", + "name": "messageStatus", + "nameLocation": "2690:13:9", + "scope": 4009, + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_enum$_Status_$4018_$", + "typeString": "mapping(bytes32 => enum IBridge.Status)" + }, + "typeName": { + "id": 2540, + "keyName": "msgHash", + "keyNameLocation": "2657:7:9", + "keyType": { + "id": 2537, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2649:7:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "Mapping", + "src": "2641:41:9", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_enum$_Status_$4018_$", + "typeString": "mapping(bytes32 => enum IBridge.Status)" + }, + "valueName": "status", + "valueNameLocation": "2675:6:9", + "valueType": { + "id": 2539, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 2538, + "name": "Status", + "nameLocations": [ + "2668:6:9" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 4018, + "src": "2668:6:9" + }, + "referencedDeclaration": 4018, + "src": "2668:6:9", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Status_$4018", + "typeString": "enum IBridge.Status" + } + } + }, + "visibility": "public" + }, + { + "id": 2545, + "nodeType": "VariableDeclaration", + "src": "2737:21:9", + "nodes": [], + "constant": false, + "documentation": { + "id": 2542, + "nodeType": "StructuredDocumentation", + "src": "2710:22:9", + "text": "@dev Slots 3 and 4" + }, + "mutability": "mutable", + "name": "__ctx", + "nameLocation": "2753:5:9", + "scope": 4009, + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Context_$4053_storage", + "typeString": "struct IBridge.Context" + }, + "typeName": { + "id": 2544, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 2543, + "name": "Context", + "nameLocations": [ + "2737:7:9" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 4053, + "src": "2737:7:9" + }, + "referencedDeclaration": 4053, + "src": "2737:7:9", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Context_$4053_storage_ptr", + "typeString": "struct IBridge.Context" + } + }, + "visibility": "private" + }, + { + "id": 2548, + "nodeType": "VariableDeclaration", + "src": "2786:27:9", + "nodes": [], + "constant": false, + "documentation": { + "id": 2546, + "nodeType": "StructuredDocumentation", + "src": "2765:16:9", + "text": "@dev Slot 5." + }, + "mutability": "mutable", + "name": "__reserved2", + "nameLocation": "2802:11:9", + "scope": 4009, + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2547, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2786:7:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "private" + }, + { + "id": 2551, + "nodeType": "VariableDeclaration", + "src": "2841:27:9", + "nodes": [], + "constant": false, + "documentation": { + "id": 2549, + "nodeType": "StructuredDocumentation", + "src": "2820:16:9", + "text": "@dev Slot 6." + }, + "mutability": "mutable", + "name": "__reserved3", + "nameLocation": "2857:11:9", + "scope": 4009, + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2550, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2841:7:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "private" + }, + { + "id": 2555, + "nodeType": "VariableDeclaration", + "src": "2875:25:9", + "nodes": [], + "constant": false, + "mutability": "mutable", + "name": "__gap", + "nameLocation": "2895:5:9", + "scope": 4009, + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$44_storage", + "typeString": "uint256[44]" + }, + "typeName": { + "baseType": { + "id": 2552, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2875:7:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2554, + "length": { + "hexValue": "3434", + "id": 2553, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2883:2:9", + "typeDescriptions": { + "typeIdentifier": "t_rational_44_by_1", + "typeString": "int_const 44" + }, + "value": "44" + }, + "nodeType": "ArrayTypeName", + "src": "2875:11:9", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$44_storage_ptr", + "typeString": "uint256[44]" + } + }, + "visibility": "private" + }, + { + "id": 2557, + "nodeType": "ErrorDefinition", + "src": "2907:26:9", + "nodes": [], + "errorSelector": "e363bba8", + "name": "B_INVALID_CHAINID", + "nameLocation": "2913:17:9", + "parameters": { + "id": 2556, + "nodeType": "ParameterList", + "parameters": [], + "src": "2930:2:9" + } + }, + { + "id": 2559, + "nodeType": "ErrorDefinition", + "src": "2938:26:9", + "nodes": [], + "errorSelector": "5ceed173", + "name": "B_INVALID_CONTEXT", + "nameLocation": "2944:17:9", + "parameters": { + "id": 2558, + "nodeType": "ParameterList", + "parameters": [], + "src": "2961:2:9" + } + }, + { + "id": 2561, + "nodeType": "ErrorDefinition", + "src": "2969:22:9", + "nodes": [], + "errorSelector": "c9f51787", + "name": "B_INVALID_FEE", + "nameLocation": "2975:13:9", + "parameters": { + "id": 2560, + "nodeType": "ParameterList", + "parameters": [], + "src": "2988:2:9" + } + }, + { + "id": 2563, + "nodeType": "ErrorDefinition", + "src": "2996:28:9", + "nodes": [], + "errorSelector": "08c2ad53", + "name": "B_INVALID_GAS_LIMIT", + "nameLocation": "3002:19:9", + "parameters": { + "id": 2562, + "nodeType": "ParameterList", + "parameters": [], + "src": "3021:2:9" + } + }, + { + "id": 2565, + "nodeType": "ErrorDefinition", + "src": "3029:25:9", + "nodes": [], + "errorSelector": "67624eb4", + "name": "B_INVALID_STATUS", + "nameLocation": "3035:16:9", + "parameters": { + "id": 2564, + "nodeType": "ParameterList", + "parameters": [], + "src": "3051:2:9" + } + }, + { + "id": 2567, + "nodeType": "ErrorDefinition", + "src": "3059:24:9", + "nodes": [], + "errorSelector": "958557be", + "name": "B_INVALID_VALUE", + "nameLocation": "3065:15:9", + "parameters": { + "id": 2566, + "nodeType": "ParameterList", + "parameters": [], + "src": "3080:2:9" + } + }, + { + "id": 2569, + "nodeType": "ErrorDefinition", + "src": "3088:27:9", + "nodes": [], + "errorSelector": "5fbdff73", + "name": "B_INSUFFICIENT_GAS", + "nameLocation": "3094:18:9", + "parameters": { + "id": 2568, + "nodeType": "ParameterList", + "parameters": [], + "src": "3112:2:9" + } + }, + { + "id": 2571, + "nodeType": "ErrorDefinition", + "src": "3120:27:9", + "nodes": [], + "errorSelector": "ab035ad5", + "name": "B_MESSAGE_NOT_SENT", + "nameLocation": "3126:18:9", + "parameters": { + "id": 2570, + "nodeType": "ParameterList", + "parameters": [], + "src": "3144:2:9" + } + }, + { + "id": 2573, + "nodeType": "ErrorDefinition", + "src": "3152:28:9", + "nodes": [], + "errorSelector": "e56dc386", + "name": "B_PERMISSION_DENIED", + "nameLocation": "3158:19:9", + "parameters": { + "id": 2572, + "nodeType": "ParameterList", + "parameters": [], + "src": "3177:2:9" + } + }, + { + "id": 2575, + "nodeType": "ErrorDefinition", + "src": "3185:26:9", + "nodes": [], + "errorSelector": "1e3b03c9", + "name": "B_PROOF_TOO_LARGE", + "nameLocation": "3191:17:9", + "parameters": { + "id": 2574, + "nodeType": "ParameterList", + "parameters": [], + "src": "3208:2:9" + } + }, + { + "id": 2577, + "nodeType": "ErrorDefinition", + "src": "3216:23:9", + "nodes": [], + "errorSelector": "161e3ead", + "name": "B_RETRY_FAILED", + "nameLocation": "3222:14:9", + "parameters": { + "id": 2576, + "nodeType": "ParameterList", + "parameters": [], + "src": "3236:2:9" + } + }, + { + "id": 2579, + "nodeType": "ErrorDefinition", + "src": "3244:30:9", + "nodes": [], + "errorSelector": "a2826398", + "name": "B_SIGNAL_NOT_RECEIVED", + "nameLocation": "3250:21:9", + "parameters": { + "id": 2578, + "nodeType": "ParameterList", + "parameters": [], + "src": "3271:2:9" + } + }, + { + "id": 2589, + "nodeType": "ModifierDefinition", + "src": "3440:89:9", + "nodes": [], + "body": { + "id": 2588, + "nodeType": "Block", + "src": "3476:53:9", + "nodes": [], + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 2584, + "name": "_chainId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2581, + "src": "3502:8:9", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + ], + "id": 2583, + "name": "_checkSameChain", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3990, + "src": "3486:15:9", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_uint64_$returns$__$", + "typeString": "function (uint64) view" + } + }, + "id": 2585, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3486:25:9", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2586, + "nodeType": "ExpressionStatement", + "src": "3486:25:9" + }, + { + "id": 2587, + "nodeType": "PlaceholderStatement", + "src": "3521:1:9" + } + ] + }, + "name": "sameChain", + "nameLocation": "3449:9:9", + "parameters": { + "id": 2582, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2581, + "mutability": "mutable", + "name": "_chainId", + "nameLocation": "3466:8:9", + "nodeType": "VariableDeclaration", + "scope": 2589, + "src": "3459:15:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + }, + "typeName": { + "id": 2580, + "name": "uint64", + "nodeType": "ElementaryTypeName", + "src": "3459:6:9", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "visibility": "internal" + } + ], + "src": "3458:17:9" + }, + "virtual": false, + "visibility": "internal" + }, + { + "id": 2599, + "nodeType": "ModifierDefinition", + "src": "3535:89:9", + "nodes": [], + "body": { + "id": 2598, + "nodeType": "Block", + "src": "3571:53:9", + "nodes": [], + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 2594, + "name": "_chainId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2591, + "src": "3597:8:9", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + ], + "id": 2593, + "name": "_checkDiffChain", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4008, + "src": "3581:15:9", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_uint64_$returns$__$", + "typeString": "function (uint64) view" + } + }, + "id": 2595, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3581:25:9", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2596, + "nodeType": "ExpressionStatement", + "src": "3581:25:9" + }, + { + "id": 2597, + "nodeType": "PlaceholderStatement", + "src": "3616:1:9" + } + ] + }, + "name": "diffChain", + "nameLocation": "3544:9:9", + "parameters": { + "id": 2592, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2591, + "mutability": "mutable", + "name": "_chainId", + "nameLocation": "3561:8:9", + "nodeType": "VariableDeclaration", + "scope": 2599, + "src": "3554:15:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + }, + "typeName": { + "id": 2590, + "name": "uint64", + "nodeType": "ElementaryTypeName", + "src": "3554:6:9", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "visibility": "internal" + } + ], + "src": "3553:17:9" + }, + "virtual": false, + "visibility": "internal" + }, + { + "id": 2616, + "nodeType": "FunctionDefinition", + "src": "3630:189:9", + "nodes": [], + "body": { + "id": 2615, + "nodeType": "Block", + "src": "3756:63:9", + "nodes": [], + "statements": [ + { + "expression": { + "id": 2613, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 2609, + "name": "signalService", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2530, + "src": "3766:13:9", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ISignalService_$6277", + "typeString": "contract ISignalService" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 2611, + "name": "_signalService", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2603, + "src": "3797:14:9", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 2610, + "name": "ISignalService", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6277, + "src": "3782:14:9", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ISignalService_$6277_$", + "typeString": "type(contract ISignalService)" + } + }, + "id": 2612, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3782:30:9", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_ISignalService_$6277", + "typeString": "contract ISignalService" + } + }, + "src": "3766:46:9", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ISignalService_$6277", + "typeString": "contract ISignalService" + } + }, + "id": 2614, + "nodeType": "ExpressionStatement", + "src": "3766:46:9" + } + ] + }, + "implemented": true, + "kind": "constructor", + "modifiers": [ + { + "arguments": [ + { + "id": 2606, + "name": "_resolver", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2601, + "src": "3741:9:9", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "id": 2607, + "kind": "baseConstructorSpecifier", + "modifierName": { + "id": 2605, + "name": "EssentialResolverContract", + "nameLocations": [ + "3715:25:9" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 5017, + "src": "3715:25:9" + }, + "nodeType": "ModifierInvocation", + "src": "3715:36:9" + } + ], + "name": "", + "nameLocation": "-1:-1:-1", + "parameters": { + "id": 2604, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2601, + "mutability": "mutable", + "name": "_resolver", + "nameLocation": "3659:9:9", + "nodeType": "VariableDeclaration", + "scope": 2616, + "src": "3651:17:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2600, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3651:7:9", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2603, + "mutability": "mutable", + "name": "_signalService", + "nameLocation": "3686:14:9", + "nodeType": "VariableDeclaration", + "scope": 2616, + "src": "3678:22:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2602, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3678:7:9", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "3641:65:9" + }, + "returnParameters": { + "id": 2608, + "nodeType": "ParameterList", + "parameters": [], + "src": "3756:0:9" + }, + "scope": 4009, + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "id": 2629, + "nodeType": "FunctionDefinition", + "src": "4142:92:9", + "nodes": [], + "body": { + "id": 2628, + "nodeType": "Block", + "src": "4193:41:9", + "nodes": [], + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 2625, + "name": "_owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2619, + "src": "4220:6:9", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 2624, + "name": "__Essential_init", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4585, + "src": "4203:16:9", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 2626, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4203:24:9", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2627, + "nodeType": "ExpressionStatement", + "src": "4203:24:9" + } + ] + }, + "documentation": { + "id": 2617, + "nodeType": "StructuredDocumentation", + "src": "4003:134:9", + "text": "@notice Initializes the contract.\n @param _owner The owner of this contract. msg.sender will be used if this value is zero." + }, + "functionSelector": "19ab453c", + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 2622, + "kind": "modifierInvocation", + "modifierName": { + "id": 2621, + "name": "initializer", + "nameLocations": [ + "4181:11:9" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 11650, + "src": "4181:11:9" + }, + "nodeType": "ModifierInvocation", + "src": "4181:11:9" + } + ], + "name": "init", + "nameLocation": "4151:4:9", + "parameters": { + "id": 2620, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2619, + "mutability": "mutable", + "name": "_owner", + "nameLocation": "4164:6:9", + "nodeType": "VariableDeclaration", + "scope": 2629, + "src": "4156:14:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2618, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4156:7:9", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "4155:16:9" + }, + "returnParameters": { + "id": 2623, + "nodeType": "ParameterList", + "parameters": [], + "src": "4193:0:9" + }, + "scope": 4009, + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "id": 2651, + "nodeType": "FunctionDefinition", + "src": "4320:196:9", + "nodes": [], + "body": { + "id": 2650, + "nodeType": "Block", + "src": "4373:143:9", + "nodes": [], + "statements": [ + { + "expression": { + "id": 2640, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 2638, + "name": "__reserved1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2533, + "src": "4444:11:9", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "hexValue": "30", + "id": 2639, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4458:1:9", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "4444:15:9", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "id": 2641, + "nodeType": "ExpressionStatement", + "src": "4444:15:9" + }, + { + "expression": { + "id": 2644, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 2642, + "name": "__reserved2", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2548, + "src": "4469:11:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "hexValue": "30", + "id": 2643, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4483:1:9", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "4469:15:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2645, + "nodeType": "ExpressionStatement", + "src": "4469:15:9" + }, + { + "expression": { + "id": 2648, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 2646, + "name": "__reserved3", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2551, + "src": "4494:11:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "hexValue": "30", + "id": 2647, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4508:1:9", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "4494:15:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2649, + "nodeType": "ExpressionStatement", + "src": "4494:15:9" + } + ] + }, + "documentation": { + "id": 2630, + "nodeType": "StructuredDocumentation", + "src": "4240:75:9", + "text": "@notice This function shall be called by previously deployed contracts." + }, + "functionSelector": "069489a2", + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 2633, + "kind": "modifierInvocation", + "modifierName": { + "id": 2632, + "name": "onlyOwner", + "nameLocations": [ + "4346:9:9" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 11366, + "src": "4346:9:9" + }, + "nodeType": "ModifierInvocation", + "src": "4346:9:9" + }, + { + "arguments": [ + { + "hexValue": "32", + "id": 2635, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4370:1:9", + "typeDescriptions": { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + }, + "value": "2" + } + ], + "id": 2636, + "kind": "modifierInvocation", + "modifierName": { + "id": 2634, + "name": "reinitializer", + "nameLocations": [ + "4356:13:9" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 11683, + "src": "4356:13:9" + }, + "nodeType": "ModifierInvocation", + "src": "4356:16:9" + } + ], + "name": "init2", + "nameLocation": "4329:5:9", + "parameters": { + "id": 2631, + "nodeType": "ParameterList", + "parameters": [], + "src": "4334:2:9" + }, + "returnParameters": { + "id": 2637, + "nodeType": "ParameterList", + "parameters": [], + "src": "4373:0:9" + }, + "scope": 4009, + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "id": 2779, + "nodeType": "FunctionDefinition", + "src": "4550:1319:9", + "nodes": [], + "body": { + "id": 2778, + "nodeType": "Block", + "src": "4907:962:9", + "nodes": [], + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + }, + "id": 2687, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 2684, + "name": "_message", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2655, + "src": "4921:8:9", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Message_$4046_calldata_ptr", + "typeString": "struct IBridge.Message calldata" + } + }, + "id": 2685, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4930:8:9", + "memberName": "gasLimit", + "nodeType": "MemberAccess", + "referencedDeclaration": 4029, + "src": "4921:17:9", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "30", + "id": 2686, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4942:1:9", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "4921:22:9", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2701, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [ + { + "id": 2698, + "name": "_message", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2655, + "src": "5045:8:9", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Message_$4046_calldata_ptr", + "typeString": "struct IBridge.Message calldata" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Message_$4046_calldata_ptr", + "typeString": "struct IBridge.Message calldata" + } + ], + "id": 2697, + "name": "_invocationGasLimit", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3933, + "src": "5025:19:9", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_struct$_Message_$4046_calldata_ptr_$returns$_t_uint256_$", + "typeString": "function (struct IBridge.Message calldata) pure returns (uint256)" + } + }, + "id": 2699, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5025:29:9", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "30", + "id": 2700, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5058:1:9", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "5025:34:9", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 2706, + "nodeType": "IfStatement", + "src": "5021:93:9", + "trueBody": { + "id": 2705, + "nodeType": "Block", + "src": "5061:53:9", + "statements": [ + { + "errorCall": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 2702, + "name": "B_INVALID_GAS_LIMIT", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2563, + "src": "5082:19:9", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$__$returns$_t_error_$", + "typeString": "function () pure returns (error)" + } + }, + "id": 2703, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5082:21:9", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_error", + "typeString": "error" + } + }, + "id": 2704, + "nodeType": "RevertStatement", + "src": "5075:28:9" + } + ] + } + }, + "id": 2707, + "nodeType": "IfStatement", + "src": "4917:197:9", + "trueBody": { + "id": 2696, + "nodeType": "Block", + "src": "4945:70:9", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + }, + "id": 2691, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 2688, + "name": "_message", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2655, + "src": "4963:8:9", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Message_$4046_calldata_ptr", + "typeString": "struct IBridge.Message calldata" + } + }, + "id": 2689, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4972:3:9", + "memberName": "fee", + "nodeType": "MemberAccess", + "referencedDeclaration": 4027, + "src": "4963:12:9", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "hexValue": "30", + "id": 2690, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4979:1:9", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "4963:17:9", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 2695, + "nodeType": "IfStatement", + "src": "4959:45:9", + "trueBody": { + "errorCall": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 2692, + "name": "B_INVALID_FEE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2561, + "src": "4989:13:9", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$__$returns$_t_error_$", + "typeString": "function () pure returns (error)" + } + }, + "id": 2693, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4989:15:9", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_error", + "typeString": "error" + } + }, + "id": 2694, + "nodeType": "RevertStatement", + "src": "4982:22:9" + } + } + ] + } + }, + { + "assignments": [ + 2709, + null + ], + "declarations": [ + { + "constant": false, + "id": 2709, + "mutability": "mutable", + "name": "destChainEnabled", + "nameLocation": "5184:16:9", + "nodeType": "VariableDeclaration", + "scope": 2778, + "src": "5179:21:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 2708, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "5179:4:9", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + }, + null + ], + "id": 2714, + "initialValue": { + "arguments": [ + { + "expression": { + "id": 2711, + "name": "_message", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2655, + "src": "5224:8:9", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Message_$4046_calldata_ptr", + "typeString": "struct IBridge.Message calldata" + } + }, + "id": 2712, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5233:11:9", + "memberName": "destChainId", + "nodeType": "MemberAccess", + "referencedDeclaration": 4037, + "src": "5224:20:9", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + ], + "id": 2710, + "name": "isDestChainEnabled", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3503, + "src": "5205:18:9", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_uint64_$returns$_t_bool_$_t_address_$", + "typeString": "function (uint64) view returns (bool,address)" + } + }, + "id": 2713, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5205:40:9", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_bool_$_t_address_$", + "typeString": "tuple(bool,address)" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "5178:67:9" + }, + { + "condition": { + "id": 2716, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "5297:17:9", + "subExpression": { + "id": 2715, + "name": "destChainEnabled", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2709, + "src": "5298:16:9", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 2720, + "nodeType": "IfStatement", + "src": "5293:49:9", + "trueBody": { + "errorCall": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 2717, + "name": "B_INVALID_CHAINID", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2557, + "src": "5323:17:9", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$__$returns$_t_error_$", + "typeString": "function () pure returns (error)" + } + }, + "id": 2718, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5323:19:9", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_error", + "typeString": "error" + } + }, + "id": 2719, + "nodeType": "RevertStatement", + "src": "5316:26:9" + } + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2728, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2725, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 2721, + "name": "_message", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2655, + "src": "5419:8:9", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Message_$4046_calldata_ptr", + "typeString": "struct IBridge.Message calldata" + } + }, + "id": 2722, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5428:5:9", + "memberName": "value", + "nodeType": "MemberAccess", + "referencedDeclaration": 4043, + "src": "5419:14:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "expression": { + "id": 2723, + "name": "_message", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2655, + "src": "5436:8:9", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Message_$4046_calldata_ptr", + "typeString": "struct IBridge.Message calldata" + } + }, + "id": 2724, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5445:3:9", + "memberName": "fee", + "nodeType": "MemberAccess", + "referencedDeclaration": 4027, + "src": "5436:12:9", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "src": "5419:29:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "expression": { + "id": 2726, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "5452:3:9", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 2727, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5456:5:9", + "memberName": "value", + "nodeType": "MemberAccess", + "src": "5452:9:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "5419:42:9", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 2732, + "nodeType": "IfStatement", + "src": "5415:72:9", + "trueBody": { + "errorCall": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 2729, + "name": "B_INVALID_VALUE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2567, + "src": "5470:15:9", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$__$returns$_t_error_$", + "typeString": "function () pure returns (error)" + } + }, + "id": 2730, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5470:17:9", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_error", + "typeString": "error" + } + }, + "id": 2731, + "nodeType": "RevertStatement", + "src": "5463:24:9" + } + }, + { + "expression": { + "id": 2735, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 2733, + "name": "message_", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2682, + "src": "5498:8:9", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Message_$4046_memory_ptr", + "typeString": "struct IBridge.Message memory" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 2734, + "name": "_message", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2655, + "src": "5509:8:9", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Message_$4046_calldata_ptr", + "typeString": "struct IBridge.Message calldata" + } + }, + "src": "5498:19:9", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Message_$4046_memory_ptr", + "typeString": "struct IBridge.Message memory" + } + }, + "id": 2736, + "nodeType": "ExpressionStatement", + "src": "5498:19:9" + }, + { + "expression": { + "id": 2742, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "id": 2737, + "name": "message_", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2682, + "src": "5610:8:9", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Message_$4046_memory_ptr", + "typeString": "struct IBridge.Message memory" + } + }, + "id": 2739, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberLocation": "5619:2:9", + "memberName": "id", + "nodeType": "MemberAccess", + "referencedDeclaration": 4025, + "src": "5610:11:9", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 2741, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "5624:15:9", + "subExpression": { + "id": 2740, + "name": "nextMessageId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2535, + "src": "5624:13:9", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "src": "5610:29:9", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "id": 2743, + "nodeType": "ExpressionStatement", + "src": "5610:29:9" + }, + { + "expression": { + "id": 2749, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "id": 2744, + "name": "message_", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2682, + "src": "5649:8:9", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Message_$4046_memory_ptr", + "typeString": "struct IBridge.Message memory" + } + }, + "id": 2746, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberLocation": "5658:4:9", + "memberName": "from", + "nodeType": "MemberAccess", + "referencedDeclaration": 4031, + "src": "5649:13:9", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "expression": { + "id": 2747, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "5665:3:9", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 2748, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5669:6:9", + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "5665:10:9", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "5649:26:9", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 2750, + "nodeType": "ExpressionStatement", + "src": "5649:26:9" + }, + { + "expression": { + "id": 2759, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "id": 2751, + "name": "message_", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2682, + "src": "5685:8:9", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Message_$4046_memory_ptr", + "typeString": "struct IBridge.Message memory" + } + }, + "id": 2753, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberLocation": "5694:10:9", + "memberName": "srcChainId", + "nodeType": "MemberAccess", + "referencedDeclaration": 4033, + "src": "5685:19:9", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "expression": { + "id": 2756, + "name": "block", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -4, + "src": "5714:5:9", + "typeDescriptions": { + "typeIdentifier": "t_magic_block", + "typeString": "block" + } + }, + "id": 2757, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5720:7:9", + "memberName": "chainid", + "nodeType": "MemberAccess", + "src": "5714:13:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 2755, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "5707:6:9", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint64_$", + "typeString": "type(uint64)" + }, + "typeName": { + "id": 2754, + "name": "uint64", + "nodeType": "ElementaryTypeName", + "src": "5707:6:9", + "typeDescriptions": {} + } + }, + "id": 2758, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5707:21:9", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "src": "5685:43:9", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "id": 2760, + "nodeType": "ExpressionStatement", + "src": "5685:43:9" + }, + { + "expression": { + "id": 2765, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 2761, + "name": "msgHash_", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2679, + "src": "5739:8:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 2763, + "name": "message_", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2682, + "src": "5762:8:9", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Message_$4046_memory_ptr", + "typeString": "struct IBridge.Message memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Message_$4046_memory_ptr", + "typeString": "struct IBridge.Message memory" + } + ], + "id": 2762, + "name": "hashMessage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3551, + "src": "5750:11:9", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_struct$_Message_$4046_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (struct IBridge.Message memory) pure returns (bytes32)" + } + }, + "id": 2764, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5750:21:9", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "5739:32:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 2766, + "nodeType": "ExpressionStatement", + "src": "5739:32:9" + }, + { + "eventCall": { + "arguments": [ + { + "id": 2768, + "name": "msgHash_", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2679, + "src": "5799:8:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 2769, + "name": "message_", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2682, + "src": "5809:8:9", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Message_$4046_memory_ptr", + "typeString": "struct IBridge.Message memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_struct$_Message_$4046_memory_ptr", + "typeString": "struct IBridge.Message memory" + } + ], + "id": 2767, + "name": "MessageSent", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4061, + "src": "5787:11:9", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_struct$_Message_$4046_memory_ptr_$returns$__$", + "typeString": "function (bytes32,struct IBridge.Message memory)" + } + }, + "id": 2770, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5787:31:9", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2771, + "nodeType": "EmitStatement", + "src": "5782:36:9" + }, + { + "expression": { + "arguments": [ + { + "id": 2775, + "name": "msgHash_", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2679, + "src": "5853:8:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "expression": { + "id": 2772, + "name": "signalService", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2530, + "src": "5828:13:9", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ISignalService_$6277", + "typeString": "contract ISignalService" + } + }, + "id": 2774, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5842:10:9", + "memberName": "sendSignal", + "nodeType": "MemberAccess", + "referencedDeclaration": 6232, + "src": "5828:24:9", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_bytes32_$returns$_t_bytes32_$", + "typeString": "function (bytes32) external returns (bytes32)" + } + }, + "id": 2776, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5828:34:9", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 2777, + "nodeType": "ExpressionStatement", + "src": "5828:34:9" + } + ] + }, + "baseFunctions": [ + 4081 + ], + "documentation": { + "id": 2652, + "nodeType": "StructuredDocumentation", + "src": "4522:23:9", + "text": "@inheritdoc IBridge" + }, + "functionSelector": "1bdb0037", + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": [ + { + "expression": { + "id": 2659, + "name": "_message", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2655, + "src": "4668:8:9", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Message_$4046_calldata_ptr", + "typeString": "struct IBridge.Message calldata" + } + }, + "id": 2660, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4677:8:9", + "memberName": "srcOwner", + "nodeType": "MemberAccess", + "referencedDeclaration": 4035, + "src": "4668:17:9", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "id": 2661, + "kind": "modifierInvocation", + "modifierName": { + "id": 2658, + "name": "nonZeroAddr", + "nameLocations": [ + "4656:11:9" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 4409, + "src": "4656:11:9" + }, + "nodeType": "ModifierInvocation", + "src": "4656:30:9" + }, + { + "arguments": [ + { + "expression": { + "id": 2663, + "name": "_message", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2655, + "src": "4707:8:9", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Message_$4046_calldata_ptr", + "typeString": "struct IBridge.Message calldata" + } + }, + "id": 2664, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4716:9:9", + "memberName": "destOwner", + "nodeType": "MemberAccess", + "referencedDeclaration": 4039, + "src": "4707:18:9", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "id": 2665, + "kind": "modifierInvocation", + "modifierName": { + "id": 2662, + "name": "nonZeroAddr", + "nameLocations": [ + "4695:11:9" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 4409, + "src": "4695:11:9" + }, + "nodeType": "ModifierInvocation", + "src": "4695:31:9" + }, + { + "arguments": [ + { + "expression": { + "id": 2667, + "name": "_message", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2655, + "src": "4747:8:9", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Message_$4046_calldata_ptr", + "typeString": "struct IBridge.Message calldata" + } + }, + "id": 2668, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4756:2:9", + "memberName": "to", + "nodeType": "MemberAccess", + "referencedDeclaration": 4041, + "src": "4747:11:9", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "id": 2669, + "kind": "modifierInvocation", + "modifierName": { + "id": 2666, + "name": "nonZeroAddr", + "nameLocations": [ + "4735:11:9" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 4409, + "src": "4735:11:9" + }, + "nodeType": "ModifierInvocation", + "src": "4735:24:9" + }, + { + "arguments": [ + { + "expression": { + "id": 2671, + "name": "_message", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2655, + "src": "4778:8:9", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Message_$4046_calldata_ptr", + "typeString": "struct IBridge.Message calldata" + } + }, + "id": 2672, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4787:11:9", + "memberName": "destChainId", + "nodeType": "MemberAccess", + "referencedDeclaration": 4037, + "src": "4778:20:9", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + } + ], + "id": 2673, + "kind": "modifierInvocation", + "modifierName": { + "id": 2670, + "name": "diffChain", + "nameLocations": [ + "4768:9:9" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 2599, + "src": "4768:9:9" + }, + "nodeType": "ModifierInvocation", + "src": "4768:31:9" + }, + { + "id": 2675, + "kind": "modifierInvocation", + "modifierName": { + "id": 2674, + "name": "whenNotPaused", + "nameLocations": [ + "4808:13:9" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 4398, + "src": "4808:13:9" + }, + "nodeType": "ModifierInvocation", + "src": "4808:13:9" + }, + { + "id": 2677, + "kind": "modifierInvocation", + "modifierName": { + "id": 2676, + "name": "nonReentrant", + "nameLocations": [ + "4830:12:9" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 4382, + "src": "4830:12:9" + }, + "nodeType": "ModifierInvocation", + "src": "4830:12:9" + } + ], + "name": "sendMessage", + "nameLocation": "4559:11:9", + "overrides": { + "id": 2657, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "4639:8:9" + }, + "parameters": { + "id": 2656, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2655, + "mutability": "mutable", + "name": "_message", + "nameLocation": "4588:8:9", + "nodeType": "VariableDeclaration", + "scope": 2779, + "src": "4571:25:9", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Message_$4046_calldata_ptr", + "typeString": "struct IBridge.Message" + }, + "typeName": { + "id": 2654, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 2653, + "name": "Message", + "nameLocations": [ + "4571:7:9" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 4046, + "src": "4571:7:9" + }, + "referencedDeclaration": 4046, + "src": "4571:7:9", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Message_$4046_storage_ptr", + "typeString": "struct IBridge.Message" + } + }, + "visibility": "internal" + } + ], + "src": "4570:27:9" + }, + "returnParameters": { + "id": 2683, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2679, + "mutability": "mutable", + "name": "msgHash_", + "nameLocation": "4868:8:9", + "nodeType": "VariableDeclaration", + "scope": 2779, + "src": "4860:16:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 2678, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "4860:7:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2682, + "mutability": "mutable", + "name": "message_", + "nameLocation": "4893:8:9", + "nodeType": "VariableDeclaration", + "scope": 2779, + "src": "4878:23:9", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Message_$4046_memory_ptr", + "typeString": "struct IBridge.Message" + }, + "typeName": { + "id": 2681, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 2680, + "name": "Message", + "nameLocations": [ + "4878:7:9" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 4046, + "src": "4878:7:9" + }, + "referencedDeclaration": 4046, + "src": "4878:7:9", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Message_$4046_storage_ptr", + "typeString": "struct IBridge.Message" + } + }, + "visibility": "internal" + } + ], + "src": "4859:43:9" + }, + "scope": 4009, + "stateMutability": "payable", + "virtual": false, + "visibility": "external" + }, + { + "id": 2904, + "nodeType": "FunctionDefinition", + "src": "5903:1380:9", + "nodes": [], + "body": { + "id": 2903, + "nodeType": "Block", + "src": "6141:1142:9", + "nodes": [], + "statements": [ + { + "assignments": [ + 2801 + ], + "declarations": [ + { + "constant": false, + "id": 2801, + "mutability": "mutable", + "name": "msgHash", + "nameLocation": "6159:7:9", + "nodeType": "VariableDeclaration", + "scope": 2903, + "src": "6151:15:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 2800, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "6151:7:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "id": 2805, + "initialValue": { + "arguments": [ + { + "id": 2803, + "name": "_message", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2783, + "src": "6181:8:9", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Message_$4046_calldata_ptr", + "typeString": "struct IBridge.Message calldata" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Message_$4046_calldata_ptr", + "typeString": "struct IBridge.Message calldata" + } + ], + "id": 2802, + "name": "hashMessage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3551, + "src": "6169:11:9", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_struct$_Message_$4046_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (struct IBridge.Message memory) pure returns (bytes32)" + } + }, + "id": 2804, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6169:21:9", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "6151:39:9" + }, + { + "expression": { + "arguments": [ + { + "id": 2807, + "name": "msgHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2801, + "src": "6213:7:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "expression": { + "id": 2808, + "name": "Status", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4018, + "src": "6222:6:9", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_enum$_Status_$4018_$", + "typeString": "type(enum IBridge.Status)" + } + }, + "id": 2809, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "6229:3:9", + "memberName": "NEW", + "nodeType": "MemberAccess", + "referencedDeclaration": 4013, + "src": "6222:10:9", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Status_$4018", + "typeString": "enum IBridge.Status" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_enum$_Status_$4018", + "typeString": "enum IBridge.Status" + } + ], + "id": 2806, + "name": "_checkStatus", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3844, + "src": "6200:12:9", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_enum$_Status_$4018_$returns$__$", + "typeString": "function (bytes32,enum IBridge.Status) view" + } + }, + "id": 2810, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6200:33:9", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2811, + "nodeType": "ExpressionStatement", + "src": "6200:33:9" + }, + { + "condition": { + "id": 2820, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "6248:51:9", + "subExpression": { + "arguments": [ + { + "arguments": [ + { + "id": 2816, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "6284:4:9", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Bridge_$4009", + "typeString": "contract Bridge" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_Bridge_$4009", + "typeString": "contract Bridge" + } + ], + "id": 2815, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "6276:7:9", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 2814, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6276:7:9", + "typeDescriptions": {} + } + }, + "id": 2817, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6276:13:9", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 2818, + "name": "msgHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2801, + "src": "6291:7:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "expression": { + "id": 2812, + "name": "signalService", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2530, + "src": "6249:13:9", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ISignalService_$6277", + "typeString": "contract ISignalService" + } + }, + "id": 2813, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "6263:12:9", + "memberName": "isSignalSent", + "nodeType": "MemberAccess", + "referencedDeclaration": 6268, + "src": "6249:26:9", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_address_$_t_bytes32_$returns$_t_bool_$", + "typeString": "function (address,bytes32) view external returns (bool)" + } + }, + "id": 2819, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6249:50:9", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 2825, + "nodeType": "IfStatement", + "src": "6244:109:9", + "trueBody": { + "id": 2824, + "nodeType": "Block", + "src": "6301:52:9", + "statements": [ + { + "errorCall": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 2821, + "name": "B_MESSAGE_NOT_SENT", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2571, + "src": "6322:18:9", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$__$returns$_t_error_$", + "typeString": "function () pure returns (error)" + } + }, + "id": 2822, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6322:20:9", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_error", + "typeString": "error" + } + }, + "id": 2823, + "nodeType": "RevertStatement", + "src": "6315:27:9" + } + ] + } + }, + { + "expression": { + "arguments": [ + { + "id": 2827, + "name": "signalService", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2530, + "src": "6397:13:9", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ISignalService_$6277", + "typeString": "contract ISignalService" + } + }, + { + "arguments": [ + { + "id": 2829, + "name": "msgHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2801, + "src": "6435:7:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 2828, + "name": "signalForFailedMessage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3571, + "src": "6412:22:9", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_bytes32_$", + "typeString": "function (bytes32) pure returns (bytes32)" + } + }, + "id": 2830, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6412:31:9", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "expression": { + "id": 2831, + "name": "_message", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2783, + "src": "6445:8:9", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Message_$4046_calldata_ptr", + "typeString": "struct IBridge.Message calldata" + } + }, + "id": 2832, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "6454:11:9", + "memberName": "destChainId", + "nodeType": "MemberAccess", + "referencedDeclaration": 4037, + "src": "6445:20:9", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + { + "id": 2833, + "name": "_proof", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2785, + "src": "6467:6:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_ISignalService_$6277", + "typeString": "contract ISignalService" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + }, + { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + ], + "id": 2826, + "name": "_proveSignalReceived", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3779, + "src": "6363:20:9", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_ISignalService_$6277_$_t_bytes32_$_t_uint64_$_t_bytes_calldata_ptr_$returns$_t_uint32_$", + "typeString": "function (contract ISignalService,bytes32,uint64,bytes calldata) returns (uint32)" + } + }, + "id": 2834, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6363:120:9", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + }, + "id": 2835, + "nodeType": "ExpressionStatement", + "src": "6363:120:9" + }, + { + "expression": { + "arguments": [ + { + "id": 2837, + "name": "msgHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2801, + "src": "6515:7:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "expression": { + "id": 2838, + "name": "Status", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4018, + "src": "6524:6:9", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_enum$_Status_$4018_$", + "typeString": "type(enum IBridge.Status)" + } + }, + "id": 2839, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "6531:8:9", + "memberName": "RECALLED", + "nodeType": "MemberAccess", + "referencedDeclaration": 4017, + "src": "6524:15:9", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Status_$4018", + "typeString": "enum IBridge.Status" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_enum$_Status_$4018", + "typeString": "enum IBridge.Status" + } + ], + "id": 2836, + "name": "_updateMessageStatus", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3714, + "src": "6494:20:9", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_enum$_Status_$4018_$returns$__$", + "typeString": "function (bytes32,enum IBridge.Status)" + } + }, + "id": 2840, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6494:46:9", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2841, + "nodeType": "ExpressionStatement", + "src": "6494:46:9" + }, + { + "condition": { + "arguments": [ + { + "expression": { + "arguments": [ + { + "id": 2846, + "name": "IRecallableSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4164, + "src": "6707:17:9", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IRecallableSender_$4164_$", + "typeString": "type(contract IRecallableSender)" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_type$_t_contract$_IRecallableSender_$4164_$", + "typeString": "type(contract IRecallableSender)" + } + ], + "id": 2845, + "name": "type", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -27, + "src": "6702:4:9", + "typeDescriptions": { + "typeIdentifier": "t_function_metatype_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 2847, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6702:23:9", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_magic_meta_type_t_contract$_IRecallableSender_$4164", + "typeString": "type(contract IRecallableSender)" + } + }, + "id": 2848, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "6726:11:9", + "memberName": "interfaceId", + "nodeType": "MemberAccess", + "src": "6702:35:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + ], + "expression": { + "expression": { + "id": 2842, + "name": "_message", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2783, + "src": "6670:8:9", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Message_$4046_calldata_ptr", + "typeString": "struct IBridge.Message calldata" + } + }, + "id": 2843, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "6679:4:9", + "memberName": "from", + "nodeType": "MemberAccess", + "referencedDeclaration": 4031, + "src": "6670:13:9", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 2844, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "6684:17:9", + "memberName": "supportsInterface", + "nodeType": "MemberAccess", + "referencedDeclaration": 5554, + "src": "6670:31:9", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$_t_bytes4_$returns$_t_bool_$attached_to$_t_address_$", + "typeString": "function (address,bytes4) view returns (bool)" + } + }, + "id": 2849, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6670:68:9", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 2901, + "nodeType": "Block", + "src": "7177:100:9", + "statements": [ + { + "expression": { + "arguments": [ + { + "expression": { + "id": 2896, + "name": "_message", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2783, + "src": "7228:8:9", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Message_$4046_calldata_ptr", + "typeString": "struct IBridge.Message calldata" + } + }, + "id": 2897, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "7237:5:9", + "memberName": "value", + "nodeType": "MemberAccess", + "referencedDeclaration": 4043, + "src": "7228:14:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 2898, + "name": "_SEND_ETHER_GAS_LIMIT", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2519, + "src": "7244:21:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "expression": { + "id": 2891, + "name": "_message", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2783, + "src": "7191:8:9", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Message_$4046_calldata_ptr", + "typeString": "struct IBridge.Message calldata" + } + }, + "id": 2894, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "7200:8:9", + "memberName": "srcOwner", + "nodeType": "MemberAccess", + "referencedDeclaration": 4035, + "src": "7191:17:9", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 2895, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "7209:18:9", + "memberName": "sendEtherAndVerify", + "nodeType": "MemberAccess", + "referencedDeclaration": 5495, + "src": "7191:36:9", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_uint256_$returns$__$attached_to$_t_address_$", + "typeString": "function (address,uint256,uint256)" + } + }, + "id": 2899, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7191:75:9", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2900, + "nodeType": "ExpressionStatement", + "src": "7191:75:9" + } + ] + }, + "id": 2902, + "nodeType": "IfStatement", + "src": "6666:611:9", + "trueBody": { + "id": 2890, + "nodeType": "Block", + "src": "6740:431:9", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 2851, + "name": "msgHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2801, + "src": "6768:7:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "arguments": [ + { + "id": 2854, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "6785:4:9", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Bridge_$4009", + "typeString": "contract Bridge" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_Bridge_$4009", + "typeString": "contract Bridge" + } + ], + "id": 2853, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "6777:7:9", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 2852, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6777:7:9", + "typeDescriptions": {} + } + }, + "id": 2855, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6777:13:9", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "expression": { + "id": 2856, + "name": "_message", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2783, + "src": "6792:8:9", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Message_$4046_calldata_ptr", + "typeString": "struct IBridge.Message calldata" + } + }, + "id": 2857, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "6801:10:9", + "memberName": "srcChainId", + "nodeType": "MemberAccess", + "referencedDeclaration": 4033, + "src": "6792:19:9", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + ], + "id": 2850, + "name": "_storeContext", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3733, + "src": "6754:13:9", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$_t_uint64_$returns$__$", + "typeString": "function (bytes32,address,uint64)" + } + }, + "id": 2858, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6754:58:9", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2859, + "nodeType": "ExpressionStatement", + "src": "6754:58:9" + }, + { + "expression": { + "arguments": [ + { + "id": 2868, + "name": "_message", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2783, + "src": "6946:8:9", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Message_$4046_calldata_ptr", + "typeString": "struct IBridge.Message calldata" + } + }, + { + "id": 2869, + "name": "msgHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2801, + "src": "6956:7:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Message_$4046_calldata_ptr", + "typeString": "struct IBridge.Message calldata" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Message_$4046_calldata_ptr", + "typeString": "struct IBridge.Message calldata" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "expression": { + "arguments": [ + { + "expression": { + "id": 2861, + "name": "_message", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2783, + "src": "6875:8:9", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Message_$4046_calldata_ptr", + "typeString": "struct IBridge.Message calldata" + } + }, + "id": 2862, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "6884:4:9", + "memberName": "from", + "nodeType": "MemberAccess", + "referencedDeclaration": 4031, + "src": "6875:13:9", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 2860, + "name": "IRecallableSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4164, + "src": "6857:17:9", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IRecallableSender_$4164_$", + "typeString": "type(contract IRecallableSender)" + } + }, + "id": 2863, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6857:32:9", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IRecallableSender_$4164", + "typeString": "contract IRecallableSender" + } + }, + "id": 2864, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "6903:17:9", + "memberName": "onMessageRecalled", + "nodeType": "MemberAccess", + "referencedDeclaration": 4163, + "src": "6857:63:9", + "typeDescriptions": { + "typeIdentifier": "t_function_external_payable$_t_struct$_Message_$4046_memory_ptr_$_t_bytes32_$returns$__$", + "typeString": "function (struct IBridge.Message memory,bytes32) payable external" + } + }, + "id": 2867, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "names": [ + "value" + ], + "nodeType": "FunctionCallOptions", + "options": [ + { + "expression": { + "id": 2865, + "name": "_message", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2783, + "src": "6929:8:9", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Message_$4046_calldata_ptr", + "typeString": "struct IBridge.Message calldata" + } + }, + "id": 2866, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "6938:5:9", + "memberName": "value", + "nodeType": "MemberAccess", + "referencedDeclaration": 4043, + "src": "6929:14:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "src": "6857:88:9", + "typeDescriptions": { + "typeIdentifier": "t_function_external_payable$_t_struct$_Message_$4046_memory_ptr_$_t_bytes32_$returns$__$value", + "typeString": "function (struct IBridge.Message memory,bytes32) payable external" + } + }, + "id": 2870, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6857:107:9", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2871, + "nodeType": "ExpressionStatement", + "src": "6857:107:9" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "id": 2875, + "name": "_PLACEHOLDER", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2527, + "src": "7079:12:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 2874, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "7071:7:9", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes32_$", + "typeString": "type(bytes32)" + }, + "typeName": { + "id": 2873, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "7071:7:9", + "typeDescriptions": {} + } + }, + "id": 2876, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7071:21:9", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "arguments": [ + { + "arguments": [ + { + "id": 2881, + "name": "_PLACEHOLDER", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2527, + "src": "7110:12:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 2880, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "7102:7:9", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint160_$", + "typeString": "type(uint160)" + }, + "typeName": { + "id": 2879, + "name": "uint160", + "nodeType": "ElementaryTypeName", + "src": "7102:7:9", + "typeDescriptions": {} + } + }, + "id": 2882, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7102:21:9", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + ], + "id": 2878, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "7094:7:9", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 2877, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "7094:7:9", + "typeDescriptions": {} + } + }, + "id": 2883, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7094:30:9", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "arguments": [ + { + "id": 2886, + "name": "_PLACEHOLDER", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2527, + "src": "7133:12:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 2885, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "7126:6:9", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint64_$", + "typeString": "type(uint64)" + }, + "typeName": { + "id": 2884, + "name": "uint64", + "nodeType": "ElementaryTypeName", + "src": "7126:6:9", + "typeDescriptions": {} + } + }, + "id": 2887, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7126:20:9", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + ], + "id": 2872, + "name": "_storeContext", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3733, + "src": "7040:13:9", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$_t_uint64_$returns$__$", + "typeString": "function (bytes32,address,uint64)" + } + }, + "id": 2888, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7040:120:9", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2889, + "nodeType": "ExpressionStatement", + "src": "7040:120:9" + } + ] + } + } + ] + }, + "baseFunctions": [ + 4090 + ], + "documentation": { + "id": 2780, + "nodeType": "StructuredDocumentation", + "src": "5875:23:9", + "text": "@inheritdoc IBridge" + }, + "functionSelector": "9efc7a2e", + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": [ + { + "expression": { + "id": 2788, + "name": "_message", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2783, + "src": "6033:8:9", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Message_$4046_calldata_ptr", + "typeString": "struct IBridge.Message calldata" + } + }, + "id": 2789, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "6042:10:9", + "memberName": "srcChainId", + "nodeType": "MemberAccess", + "referencedDeclaration": 4033, + "src": "6033:19:9", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + } + ], + "id": 2790, + "kind": "modifierInvocation", + "modifierName": { + "id": 2787, + "name": "sameChain", + "nameLocations": [ + "6023:9:9" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 2589, + "src": "6023:9:9" + }, + "nodeType": "ModifierInvocation", + "src": "6023:30:9" + }, + { + "arguments": [ + { + "expression": { + "id": 2792, + "name": "_message", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2783, + "src": "6072:8:9", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Message_$4046_calldata_ptr", + "typeString": "struct IBridge.Message calldata" + } + }, + "id": 2793, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "6081:11:9", + "memberName": "destChainId", + "nodeType": "MemberAccess", + "referencedDeclaration": 4037, + "src": "6072:20:9", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + } + ], + "id": 2794, + "kind": "modifierInvocation", + "modifierName": { + "id": 2791, + "name": "diffChain", + "nameLocations": [ + "6062:9:9" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 2599, + "src": "6062:9:9" + }, + "nodeType": "ModifierInvocation", + "src": "6062:31:9" + }, + { + "id": 2796, + "kind": "modifierInvocation", + "modifierName": { + "id": 2795, + "name": "whenNotPaused", + "nameLocations": [ + "6102:13:9" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 4398, + "src": "6102:13:9" + }, + "nodeType": "ModifierInvocation", + "src": "6102:13:9" + }, + { + "id": 2798, + "kind": "modifierInvocation", + "modifierName": { + "id": 2797, + "name": "nonReentrant", + "nameLocations": [ + "6124:12:9" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 4382, + "src": "6124:12:9" + }, + "nodeType": "ModifierInvocation", + "src": "6124:12:9" + } + ], + "name": "recallMessage", + "nameLocation": "5912:13:9", + "parameters": { + "id": 2786, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2783, + "mutability": "mutable", + "name": "_message", + "nameLocation": "5952:8:9", + "nodeType": "VariableDeclaration", + "scope": 2904, + "src": "5935:25:9", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Message_$4046_calldata_ptr", + "typeString": "struct IBridge.Message" + }, + "typeName": { + "id": 2782, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 2781, + "name": "Message", + "nameLocations": [ + "5935:7:9" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 4046, + "src": "5935:7:9" + }, + "referencedDeclaration": 4046, + "src": "5935:7:9", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Message_$4046_storage_ptr", + "typeString": "struct IBridge.Message" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2785, + "mutability": "mutable", + "name": "_proof", + "nameLocation": "5985:6:9", + "nodeType": "VariableDeclaration", + "scope": 2904, + "src": "5970:21:9", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 2784, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "5970:5:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "5925:72:9" + }, + "returnParameters": { + "id": 2799, + "nodeType": "ParameterList", + "parameters": [], + "src": "6141:0:9" + }, + "scope": 4009, + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "id": 3214, + "nodeType": "FunctionDefinition", + "src": "7586:4212:9", + "nodes": [], + "body": { + "id": 3213, + "nodeType": "Block", + "src": "7801:3997:9", + "nodes": [], + "statements": [ + { + "assignments": [ + 2924 + ], + "declarations": [ + { + "constant": false, + "id": 2924, + "mutability": "mutable", + "name": "gasStart", + "nameLocation": "7819:8:9", + "nodeType": "VariableDeclaration", + "scope": 3213, + "src": "7811:16:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2923, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7811:7:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 2927, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 2925, + "name": "gasleft", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -7, + "src": "7830:7:9", + "typeDescriptions": { + "typeIdentifier": "t_function_gasleft_view$__$returns$_t_uint256_$", + "typeString": "function () view returns (uint256)" + } + }, + "id": 2926, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7830:9:9", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "7811:28:9" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2932, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 2928, + "name": "_message", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2908, + "src": "7934:8:9", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Message_$4046_calldata_ptr", + "typeString": "struct IBridge.Message calldata" + } + }, + "id": 2929, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "7943:11:9", + "memberName": "destChainId", + "nodeType": "MemberAccess", + "referencedDeclaration": 4037, + "src": "7934:20:9", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "expression": { + "id": 2930, + "name": "block", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -4, + "src": "7958:5:9", + "typeDescriptions": { + "typeIdentifier": "t_magic_block", + "typeString": "block" + } + }, + "id": 2931, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "7964:7:9", + "memberName": "chainid", + "nodeType": "MemberAccess", + "src": "7958:13:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "7934:37:9", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 2936, + "nodeType": "IfStatement", + "src": "7930:69:9", + "trueBody": { + "errorCall": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 2933, + "name": "B_INVALID_CHAINID", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2557, + "src": "7980:17:9", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$__$returns$_t_error_$", + "typeString": "function () pure returns (error)" + } + }, + "id": 2934, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7980:19:9", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_error", + "typeString": "error" + } + }, + "id": 2935, + "nodeType": "RevertStatement", + "src": "7973:26:9" + } + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 2946, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + }, + "id": 2940, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 2937, + "name": "_message", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2908, + "src": "8093:8:9", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Message_$4046_calldata_ptr", + "typeString": "struct IBridge.Message calldata" + } + }, + "id": 2938, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "8102:10:9", + "memberName": "srcChainId", + "nodeType": "MemberAccess", + "referencedDeclaration": 4033, + "src": "8093:19:9", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "30", + "id": 2939, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8116:1:9", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "8093:24:9", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2945, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 2941, + "name": "_message", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2908, + "src": "8121:8:9", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Message_$4046_calldata_ptr", + "typeString": "struct IBridge.Message calldata" + } + }, + "id": 2942, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "8130:10:9", + "memberName": "srcChainId", + "nodeType": "MemberAccess", + "referencedDeclaration": 4033, + "src": "8121:19:9", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "expression": { + "id": 2943, + "name": "block", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -4, + "src": "8144:5:9", + "typeDescriptions": { + "typeIdentifier": "t_magic_block", + "typeString": "block" + } + }, + "id": 2944, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "8150:7:9", + "memberName": "chainid", + "nodeType": "MemberAccess", + "src": "8144:13:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "8121:36:9", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "8093:64:9", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 2951, + "nodeType": "IfStatement", + "src": "8089:121:9", + "trueBody": { + "id": 2950, + "nodeType": "Block", + "src": "8159:51:9", + "statements": [ + { + "errorCall": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 2947, + "name": "B_INVALID_CHAINID", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2557, + "src": "8180:17:9", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$__$returns$_t_error_$", + "typeString": "function () pure returns (error)" + } + }, + "id": 2948, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8180:19:9", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_error", + "typeString": "error" + } + }, + "id": 2949, + "nodeType": "RevertStatement", + "src": "8173:26:9" + } + ] + } + }, + { + "assignments": [ + 2954 + ], + "declarations": [ + { + "constant": false, + "id": 2954, + "mutability": "mutable", + "name": "stats", + "nameLocation": "8243:5:9", + "nodeType": "VariableDeclaration", + "scope": 3213, + "src": "8220:28:9", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ProcessingStats_$2488_memory_ptr", + "typeString": "struct Bridge.ProcessingStats" + }, + "typeName": { + "id": 2953, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 2952, + "name": "ProcessingStats", + "nameLocations": [ + "8220:15:9" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 2488, + "src": "8220:15:9" + }, + "referencedDeclaration": 2488, + "src": "8220:15:9", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ProcessingStats_$2488_storage_ptr", + "typeString": "struct Bridge.ProcessingStats" + } + }, + "visibility": "internal" + } + ], + "id": 2955, + "nodeType": "VariableDeclarationStatement", + "src": "8220:28:9" + }, + { + "expression": { + "id": 2964, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "id": 2956, + "name": "stats", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2954, + "src": "8258:5:9", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ProcessingStats_$2488_memory_ptr", + "typeString": "struct Bridge.ProcessingStats memory" + } + }, + "id": 2958, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberLocation": "8264:18:9", + "memberName": "processedByRelayer", + "nodeType": "MemberAccess", + "referencedDeclaration": 2487, + "src": "8258:24:9", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 2963, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 2959, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "8285:3:9", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 2960, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "8289:6:9", + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "8285:10:9", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "expression": { + "id": 2961, + "name": "_message", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2908, + "src": "8299:8:9", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Message_$4046_calldata_ptr", + "typeString": "struct IBridge.Message calldata" + } + }, + "id": 2962, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "8308:9:9", + "memberName": "destOwner", + "nodeType": "MemberAccess", + "referencedDeclaration": 4039, + "src": "8299:18:9", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "8285:32:9", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "8258:59:9", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 2965, + "nodeType": "ExpressionStatement", + "src": "8258:59:9" + }, + { + "condition": { + "expression": { + "id": 2966, + "name": "stats", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2954, + "src": "8416:5:9", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ProcessingStats_$2488_memory_ptr", + "typeString": "struct Bridge.ProcessingStats memory" + } + }, + "id": 2967, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "8422:18:9", + "memberName": "processedByRelayer", + "nodeType": "MemberAccess", + "referencedDeclaration": 2487, + "src": "8416:24:9", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 2985, + "nodeType": "IfStatement", + "src": "8412:196:9", + "trueBody": { + "id": 2984, + "nodeType": "Block", + "src": "8442:166:9", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + }, + "id": 2971, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 2968, + "name": "_message", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2908, + "src": "8460:8:9", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Message_$4046_calldata_ptr", + "typeString": "struct IBridge.Message calldata" + } + }, + "id": 2969, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "8469:8:9", + "memberName": "gasLimit", + "nodeType": "MemberAccess", + "referencedDeclaration": 4029, + "src": "8460:17:9", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "30", + "id": 2970, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8481:1:9", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "8460:22:9", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 2975, + "nodeType": "IfStatement", + "src": "8456:56:9", + "trueBody": { + "errorCall": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 2972, + "name": "B_PERMISSION_DENIED", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2573, + "src": "8491:19:9", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$__$returns$_t_error_$", + "typeString": "function () pure returns (error)" + } + }, + "id": 2973, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8491:21:9", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_error", + "typeString": "error" + } + }, + "id": 2974, + "nodeType": "RevertStatement", + "src": "8484:28:9" + } + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2979, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 2976, + "name": "_proof", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2910, + "src": "8530:6:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + }, + "id": 2977, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "8537:6:9", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "8530:13:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "id": 2978, + "name": "RELAYER_MAX_PROOF_BYTES", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2511, + "src": "8546:23:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "8530:39:9", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 2983, + "nodeType": "IfStatement", + "src": "8526:71:9", + "trueBody": { + "errorCall": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 2980, + "name": "B_PROOF_TOO_LARGE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2575, + "src": "8578:17:9", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$__$returns$_t_error_$", + "typeString": "function () pure returns (error)" + } + }, + "id": 2981, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8578:19:9", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_error", + "typeString": "error" + } + }, + "id": 2982, + "nodeType": "RevertStatement", + "src": "8571:26:9" + } + } + ] + } + }, + { + "assignments": [ + 2987 + ], + "declarations": [ + { + "constant": false, + "id": 2987, + "mutability": "mutable", + "name": "msgHash", + "nameLocation": "8626:7:9", + "nodeType": "VariableDeclaration", + "scope": 3213, + "src": "8618:15:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 2986, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "8618:7:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "id": 2991, + "initialValue": { + "arguments": [ + { + "id": 2989, + "name": "_message", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2908, + "src": "8648:8:9", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Message_$4046_calldata_ptr", + "typeString": "struct IBridge.Message calldata" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Message_$4046_calldata_ptr", + "typeString": "struct IBridge.Message calldata" + } + ], + "id": 2988, + "name": "hashMessage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3551, + "src": "8636:11:9", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_struct$_Message_$4046_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (struct IBridge.Message memory) pure returns (bytes32)" + } + }, + "id": 2990, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8636:21:9", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "8618:39:9" + }, + { + "expression": { + "arguments": [ + { + "id": 2993, + "name": "msgHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2987, + "src": "8681:7:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "expression": { + "id": 2994, + "name": "Status", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4018, + "src": "8690:6:9", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_enum$_Status_$4018_$", + "typeString": "type(enum IBridge.Status)" + } + }, + "id": 2995, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "8697:3:9", + "memberName": "NEW", + "nodeType": "MemberAccess", + "referencedDeclaration": 4013, + "src": "8690:10:9", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Status_$4018", + "typeString": "enum IBridge.Status" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_enum$_Status_$4018", + "typeString": "enum IBridge.Status" + } + ], + "id": 2992, + "name": "_checkStatus", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3844, + "src": "8668:12:9", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_enum$_Status_$4018_$returns$__$", + "typeString": "function (bytes32,enum IBridge.Status) view" + } + }, + "id": 2996, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8668:33:9", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2997, + "nodeType": "ExpressionStatement", + "src": "8668:33:9" + }, + { + "expression": { + "id": 3006, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "id": 2998, + "name": "stats", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2954, + "src": "8712:5:9", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ProcessingStats_$2488_memory_ptr", + "typeString": "struct Bridge.ProcessingStats memory" + } + }, + "id": 3000, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberLocation": "8718:9:9", + "memberName": "proofSize", + "nodeType": "MemberAccess", + "referencedDeclaration": 2483, + "src": "8712:15:9", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "expression": { + "id": 3003, + "name": "_proof", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2910, + "src": "8737:6:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + }, + "id": 3004, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "8744:6:9", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "8737:13:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 3002, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "8730:6:9", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint32_$", + "typeString": "type(uint32)" + }, + "typeName": { + "id": 3001, + "name": "uint32", + "nodeType": "ElementaryTypeName", + "src": "8730:6:9", + "typeDescriptions": {} + } + }, + "id": 3005, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8730:21:9", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + }, + "src": "8712:39:9", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + }, + "id": 3007, + "nodeType": "ExpressionStatement", + "src": "8712:39:9" + }, + { + "expression": { + "id": 3018, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "id": 3008, + "name": "stats", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2954, + "src": "8761:5:9", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ProcessingStats_$2488_memory_ptr", + "typeString": "struct Bridge.ProcessingStats memory" + } + }, + "id": 3010, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberLocation": "8767:11:9", + "memberName": "numCacheOps", + "nodeType": "MemberAccess", + "referencedDeclaration": 2485, + "src": "8761:17:9", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 3012, + "name": "signalService", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2530, + "src": "8814:13:9", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ISignalService_$6277", + "typeString": "contract ISignalService" + } + }, + { + "id": 3013, + "name": "msgHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2987, + "src": "8829:7:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "expression": { + "id": 3014, + "name": "_message", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2908, + "src": "8838:8:9", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Message_$4046_calldata_ptr", + "typeString": "struct IBridge.Message calldata" + } + }, + "id": 3015, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "8847:10:9", + "memberName": "srcChainId", + "nodeType": "MemberAccess", + "referencedDeclaration": 4033, + "src": "8838:19:9", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + { + "id": 3016, + "name": "_proof", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2910, + "src": "8859:6:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_ISignalService_$6277", + "typeString": "contract ISignalService" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + }, + { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + ], + "id": 3011, + "name": "_proveSignalReceived", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3779, + "src": "8793:20:9", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_ISignalService_$6277_$_t_bytes32_$_t_uint64_$_t_bytes_calldata_ptr_$returns$_t_uint32_$", + "typeString": "function (contract ISignalService,bytes32,uint64,bytes calldata) returns (uint32)" + } + }, + "id": 3017, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8793:73:9", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + }, + "src": "8761:105:9", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + }, + "id": 3019, + "nodeType": "ExpressionStatement", + "src": "8761:105:9" + }, + { + "assignments": [ + 3021 + ], + "declarations": [ + { + "constant": false, + "id": 3021, + "mutability": "mutable", + "name": "refundAmount", + "nameLocation": "8885:12:9", + "nodeType": "VariableDeclaration", + "scope": 3213, + "src": "8877:20:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3020, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8877:7:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 3022, + "nodeType": "VariableDeclarationStatement", + "src": "8877:20:9" + }, + { + "condition": { + "arguments": [ + { + "id": 3024, + "name": "_message", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2908, + "src": "8938:8:9", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Message_$4046_calldata_ptr", + "typeString": "struct IBridge.Message calldata" + } + }, + { + "id": 3025, + "name": "signalService", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2530, + "src": "8948:13:9", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ISignalService_$6277", + "typeString": "contract ISignalService" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Message_$4046_calldata_ptr", + "typeString": "struct IBridge.Message calldata" + }, + { + "typeIdentifier": "t_contract$_ISignalService_$6277", + "typeString": "contract ISignalService" + } + ], + "id": 3023, + "name": "_unableToInvokeMessageCall", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3907, + "src": "8911:26:9", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_Message_$4046_calldata_ptr_$_t_contract$_ISignalService_$6277_$returns$_t_bool_$", + "typeString": "function (struct IBridge.Message calldata,contract ISignalService) view returns (bool)" + } + }, + "id": 3026, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8911:51:9", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 3084, + "nodeType": "Block", + "src": "9300:436:9", + "statements": [ + { + "assignments": [ + 3044 + ], + "declarations": [ + { + "constant": false, + "id": 3044, + "mutability": "mutable", + "name": "gasLimit", + "nameLocation": "9322:8:9", + "nodeType": "VariableDeclaration", + "scope": 3084, + "src": "9314:16:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3043, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "9314:7:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 3053, + "initialValue": { + "condition": { + "expression": { + "id": 3045, + "name": "stats", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2954, + "src": "9333:5:9", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ProcessingStats_$2488_memory_ptr", + "typeString": "struct Bridge.ProcessingStats memory" + } + }, + "id": 3046, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "9339:18:9", + "memberName": "processedByRelayer", + "nodeType": "MemberAccess", + "referencedDeclaration": 2487, + "src": "9333:24:9", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseExpression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 3050, + "name": "gasleft", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -7, + "src": "9392:7:9", + "typeDescriptions": { + "typeIdentifier": "t_function_gasleft_view$__$returns$_t_uint256_$", + "typeString": "function () view returns (uint256)" + } + }, + "id": 3051, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9392:9:9", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 3052, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "Conditional", + "src": "9333:68:9", + "trueExpression": { + "arguments": [ + { + "id": 3048, + "name": "_message", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2908, + "src": "9380:8:9", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Message_$4046_calldata_ptr", + "typeString": "struct IBridge.Message calldata" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Message_$4046_calldata_ptr", + "typeString": "struct IBridge.Message calldata" + } + ], + "id": 3047, + "name": "_invocationGasLimit", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3933, + "src": "9360:19:9", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_struct$_Message_$4046_calldata_ptr_$returns$_t_uint256_$", + "typeString": "function (struct IBridge.Message calldata) pure returns (uint256)" + } + }, + "id": 3049, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9360:29:9", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "9314:87:9" + }, + { + "condition": { + "arguments": [ + { + "id": 3055, + "name": "_message", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2908, + "src": "9439:8:9", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Message_$4046_calldata_ptr", + "typeString": "struct IBridge.Message calldata" + } + }, + { + "id": 3056, + "name": "msgHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2987, + "src": "9449:7:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 3057, + "name": "gasLimit", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3044, + "src": "9458:8:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "expression": { + "id": 3058, + "name": "stats", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2954, + "src": "9468:5:9", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ProcessingStats_$2488_memory_ptr", + "typeString": "struct Bridge.ProcessingStats memory" + } + }, + "id": 3059, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "9474:18:9", + "memberName": "processedByRelayer", + "nodeType": "MemberAccess", + "referencedDeclaration": 2487, + "src": "9468:24:9", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Message_$4046_calldata_ptr", + "typeString": "struct IBridge.Message calldata" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 3054, + "name": "_invokeMessageCall", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3684, + "src": "9420:18:9", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Message_$4046_calldata_ptr_$_t_bytes32_$_t_uint256_$_t_bool_$returns$_t_bool_$", + "typeString": "function (struct IBridge.Message calldata,bytes32,uint256,bool) returns (bool)" + } + }, + "id": 3060, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9420:73:9", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 3082, + "nodeType": "Block", + "src": "9609:117:9", + "statements": [ + { + "expression": { + "id": 3075, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 3072, + "name": "status_", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2918, + "src": "9627:7:9", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Status_$4018", + "typeString": "enum IBridge.Status" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "expression": { + "id": 3073, + "name": "Status", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4018, + "src": "9637:6:9", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_enum$_Status_$4018_$", + "typeString": "type(enum IBridge.Status)" + } + }, + "id": 3074, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "9644:9:9", + "memberName": "RETRIABLE", + "nodeType": "MemberAccess", + "referencedDeclaration": 4014, + "src": "9637:16:9", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Status_$4018", + "typeString": "enum IBridge.Status" + } + }, + "src": "9627:26:9", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Status_$4018", + "typeString": "enum IBridge.Status" + } + }, + "id": 3076, + "nodeType": "ExpressionStatement", + "src": "9627:26:9" + }, + { + "expression": { + "id": 3080, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 3077, + "name": "reason_", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2921, + "src": "9671:7:9", + "typeDescriptions": { + "typeIdentifier": "t_enum$_StatusReason_$4023", + "typeString": "enum IBridge.StatusReason" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "expression": { + "id": 3078, + "name": "StatusReason", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4023, + "src": "9681:12:9", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_enum$_StatusReason_$4023_$", + "typeString": "type(enum IBridge.StatusReason)" + } + }, + "id": 3079, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "9694:17:9", + "memberName": "INVOCATION_FAILED", + "nodeType": "MemberAccess", + "referencedDeclaration": 4021, + "src": "9681:30:9", + "typeDescriptions": { + "typeIdentifier": "t_enum$_StatusReason_$4023", + "typeString": "enum IBridge.StatusReason" + } + }, + "src": "9671:40:9", + "typeDescriptions": { + "typeIdentifier": "t_enum$_StatusReason_$4023", + "typeString": "enum IBridge.StatusReason" + } + }, + "id": 3081, + "nodeType": "ExpressionStatement", + "src": "9671:40:9" + } + ] + }, + "id": 3083, + "nodeType": "IfStatement", + "src": "9416:310:9", + "trueBody": { + "id": 3071, + "nodeType": "Block", + "src": "9495:108:9", + "statements": [ + { + "expression": { + "id": 3064, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 3061, + "name": "status_", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2918, + "src": "9513:7:9", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Status_$4018", + "typeString": "enum IBridge.Status" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "expression": { + "id": 3062, + "name": "Status", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4018, + "src": "9523:6:9", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_enum$_Status_$4018_$", + "typeString": "type(enum IBridge.Status)" + } + }, + "id": 3063, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "9530:4:9", + "memberName": "DONE", + "nodeType": "MemberAccess", + "referencedDeclaration": 4015, + "src": "9523:11:9", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Status_$4018", + "typeString": "enum IBridge.Status" + } + }, + "src": "9513:21:9", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Status_$4018", + "typeString": "enum IBridge.Status" + } + }, + "id": 3065, + "nodeType": "ExpressionStatement", + "src": "9513:21:9" + }, + { + "expression": { + "id": 3069, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 3066, + "name": "reason_", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2921, + "src": "9552:7:9", + "typeDescriptions": { + "typeIdentifier": "t_enum$_StatusReason_$4023", + "typeString": "enum IBridge.StatusReason" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "expression": { + "id": 3067, + "name": "StatusReason", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4023, + "src": "9562:12:9", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_enum$_StatusReason_$4023_$", + "typeString": "type(enum IBridge.StatusReason)" + } + }, + "id": 3068, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "9575:13:9", + "memberName": "INVOCATION_OK", + "nodeType": "MemberAccess", + "referencedDeclaration": 4019, + "src": "9562:26:9", + "typeDescriptions": { + "typeIdentifier": "t_enum$_StatusReason_$4023", + "typeString": "enum IBridge.StatusReason" + } + }, + "src": "9552:36:9", + "typeDescriptions": { + "typeIdentifier": "t_enum$_StatusReason_$4023", + "typeString": "enum IBridge.StatusReason" + } + }, + "id": 3070, + "nodeType": "ExpressionStatement", + "src": "9552:36:9" + } + ] + } + } + ] + }, + "id": 3085, + "nodeType": "IfStatement", + "src": "8907:829:9", + "trueBody": { + "id": 3042, + "nodeType": "Block", + "src": "8964:330:9", + "statements": [ + { + "expression": { + "id": 3030, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 3027, + "name": "refundAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3021, + "src": "9161:12:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "expression": { + "id": 3028, + "name": "_message", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2908, + "src": "9176:8:9", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Message_$4046_calldata_ptr", + "typeString": "struct IBridge.Message calldata" + } + }, + "id": 3029, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "9185:5:9", + "memberName": "value", + "nodeType": "MemberAccess", + "referencedDeclaration": 4043, + "src": "9176:14:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "9161:29:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 3031, + "nodeType": "ExpressionStatement", + "src": "9161:29:9" + }, + { + "expression": { + "id": 3035, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 3032, + "name": "status_", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2918, + "src": "9204:7:9", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Status_$4018", + "typeString": "enum IBridge.Status" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "expression": { + "id": 3033, + "name": "Status", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4018, + "src": "9214:6:9", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_enum$_Status_$4018_$", + "typeString": "type(enum IBridge.Status)" + } + }, + "id": 3034, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "9221:4:9", + "memberName": "DONE", + "nodeType": "MemberAccess", + "referencedDeclaration": 4015, + "src": "9214:11:9", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Status_$4018", + "typeString": "enum IBridge.Status" + } + }, + "src": "9204:21:9", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Status_$4018", + "typeString": "enum IBridge.Status" + } + }, + "id": 3036, + "nodeType": "ExpressionStatement", + "src": "9204:21:9" + }, + { + "expression": { + "id": 3040, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 3037, + "name": "reason_", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2921, + "src": "9239:7:9", + "typeDescriptions": { + "typeIdentifier": "t_enum$_StatusReason_$4023", + "typeString": "enum IBridge.StatusReason" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "expression": { + "id": 3038, + "name": "StatusReason", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4023, + "src": "9249:12:9", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_enum$_StatusReason_$4023_$", + "typeString": "type(enum IBridge.StatusReason)" + } + }, + "id": 3039, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "9262:21:9", + "memberName": "INVOCATION_PROHIBITED", + "nodeType": "MemberAccess", + "referencedDeclaration": 4020, + "src": "9249:34:9", + "typeDescriptions": { + "typeIdentifier": "t_enum$_StatusReason_$4023", + "typeString": "enum IBridge.StatusReason" + } + }, + "src": "9239:44:9", + "typeDescriptions": { + "typeIdentifier": "t_enum$_StatusReason_$4023", + "typeString": "enum IBridge.StatusReason" + } + }, + "id": 3041, + "nodeType": "ExpressionStatement", + "src": "9239:44:9" + } + ] + } + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + }, + "id": 3089, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 3086, + "name": "_message", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2908, + "src": "9750:8:9", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Message_$4046_calldata_ptr", + "typeString": "struct IBridge.Message calldata" + } + }, + "id": 3087, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "9759:3:9", + "memberName": "fee", + "nodeType": "MemberAccess", + "referencedDeclaration": 4027, + "src": "9750:12:9", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "hexValue": "30", + "id": 3088, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9766:1:9", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "9750:17:9", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 3192, + "nodeType": "IfStatement", + "src": "9746:1855:9", + "trueBody": { + "id": 3191, + "nodeType": "Block", + "src": "9769:1832:9", + "statements": [ + { + "expression": { + "id": 3093, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 3090, + "name": "refundAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3021, + "src": "9783:12:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "+=", + "rightHandSide": { + "expression": { + "id": 3091, + "name": "_message", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2908, + "src": "9799:8:9", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Message_$4046_calldata_ptr", + "typeString": "struct IBridge.Message calldata" + } + }, + "id": 3092, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "9808:3:9", + "memberName": "fee", + "nodeType": "MemberAccess", + "referencedDeclaration": 4027, + "src": "9799:12:9", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "src": "9783:28:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 3094, + "nodeType": "ExpressionStatement", + "src": "9783:28:9" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 3101, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 3095, + "name": "stats", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2954, + "src": "9830:5:9", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ProcessingStats_$2488_memory_ptr", + "typeString": "struct Bridge.ProcessingStats memory" + } + }, + "id": 3096, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "9836:18:9", + "memberName": "processedByRelayer", + "nodeType": "MemberAccess", + "referencedDeclaration": 2487, + "src": "9830:24:9", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + }, + "id": 3100, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 3097, + "name": "_message", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2908, + "src": "9858:8:9", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Message_$4046_calldata_ptr", + "typeString": "struct IBridge.Message calldata" + } + }, + "id": 3098, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "9867:8:9", + "memberName": "gasLimit", + "nodeType": "MemberAccess", + "referencedDeclaration": 4029, + "src": "9858:17:9", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "hexValue": "30", + "id": 3099, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9879:1:9", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "9858:22:9", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "9830:50:9", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 3190, + "nodeType": "IfStatement", + "src": "9826:1765:9", + "trueBody": { + "id": 3189, + "nodeType": "Block", + "src": "9882:1709:9", + "statements": [ + { + "id": 3188, + "nodeType": "UncheckedBlock", + "src": "9900:1677:9", + "statements": [ + { + "assignments": [ + 3103 + ], + "declarations": [ + { + "constant": false, + "id": 3103, + "mutability": "mutable", + "name": "refund", + "nameLocation": "10607:6:9", + "nodeType": "VariableDeclaration", + "scope": 3188, + "src": "10599:14:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3102, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "10599:7:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 3108, + "initialValue": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3107, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 3104, + "name": "stats", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2954, + "src": "10616:5:9", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ProcessingStats_$2488_memory_ptr", + "typeString": "struct Bridge.ProcessingStats memory" + } + }, + "id": 3105, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "10622:11:9", + "memberName": "numCacheOps", + "nodeType": "MemberAccess", + "referencedDeclaration": 2485, + "src": "10616:17:9", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "id": 3106, + "name": "_GAS_REFUND_PER_CACHE_OPERATION", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2515, + "src": "10636:31:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "10616:51:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "10599:68:9" + }, + { + "expression": { + "id": 3127, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "id": 3109, + "name": "stats", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2954, + "src": "10881:5:9", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ProcessingStats_$2488_memory_ptr", + "typeString": "struct Bridge.ProcessingStats memory" + } + }, + "id": 3111, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberLocation": "10887:16:9", + "memberName": "gasUsedInFeeCalc", + "nodeType": "MemberAccess", + "referencedDeclaration": 2481, + "src": "10881:22:9", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3125, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3122, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3116, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 3114, + "name": "GAS_OVERHEAD", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2507, + "src": "10938:12:9", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "id": 3115, + "name": "gasStart", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2924, + "src": "10953:8:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "10938:23:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "arguments": [ + { + "expression": { + "expression": { + "id": 3118, + "name": "_message", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2908, + "src": "10985:8:9", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Message_$4046_calldata_ptr", + "typeString": "struct IBridge.Message calldata" + } + }, + "id": 3119, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "10994:4:9", + "memberName": "data", + "nodeType": "MemberAccess", + "referencedDeclaration": 4045, + "src": "10985:13:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + }, + "id": 3120, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "10999:6:9", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "10985:20:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 3117, + "name": "_messageCalldataCost", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3959, + "src": "10964:20:9", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint32_$", + "typeString": "function (uint256) pure returns (uint32)" + } + }, + "id": 3121, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "10964:42:9", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + }, + "src": "10938:68:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 3123, + "name": "gasleft", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -7, + "src": "11037:7:9", + "typeDescriptions": { + "typeIdentifier": "t_function_gasleft_view$__$returns$_t_uint256_$", + "typeString": "function () view returns (uint256)" + } + }, + "id": 3124, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "11037:9:9", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "10938:108:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 3113, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "10906:6:9", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint32_$", + "typeString": "type(uint32)" + }, + "typeName": { + "id": 3112, + "name": "uint32", + "nodeType": "ElementaryTypeName", + "src": "10906:6:9", + "typeDescriptions": {} + } + }, + "id": 3126, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "10906:162:9", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + }, + "src": "10881:187:9", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + }, + "id": 3128, + "nodeType": "ExpressionStatement", + "src": "10881:187:9" + }, + { + "assignments": [ + 3130 + ], + "declarations": [ + { + "constant": false, + "id": 3130, + "mutability": "mutable", + "name": "gasCharged", + "nameLocation": "11099:10:9", + "nodeType": "VariableDeclaration", + "scope": 3188, + "src": "11091:18:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3129, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "11091:7:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 3138, + "initialValue": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3137, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [ + { + "expression": { + "id": 3133, + "name": "stats", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2954, + "src": "11123:5:9", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ProcessingStats_$2488_memory_ptr", + "typeString": "struct Bridge.ProcessingStats memory" + } + }, + "id": 3134, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "11129:16:9", + "memberName": "gasUsedInFeeCalc", + "nodeType": "MemberAccess", + "referencedDeclaration": 2481, + "src": "11123:22:9", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + ], + "expression": { + "id": 3131, + "name": "refund", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3103, + "src": "11112:6:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 3132, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "11119:3:9", + "memberName": "max", + "nodeType": "MemberAccess", + "referencedDeclaration": 5766, + "src": "11112:10:9", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$attached_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 3135, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "11112:34:9", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "id": 3136, + "name": "refund", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3103, + "src": "11149:6:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "11112:43:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "11091:64:9" + }, + { + "assignments": [ + 3140 + ], + "declarations": [ + { + "constant": false, + "id": 3140, + "mutability": "mutable", + "name": "maxFee", + "nameLocation": "11185:6:9", + "nodeType": "VariableDeclaration", + "scope": 3188, + "src": "11177:14:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3139, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "11177:7:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 3148, + "initialValue": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3147, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3144, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 3141, + "name": "gasCharged", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3130, + "src": "11194:10:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "expression": { + "id": 3142, + "name": "_message", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2908, + "src": "11207:8:9", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Message_$4046_calldata_ptr", + "typeString": "struct IBridge.Message calldata" + } + }, + "id": 3143, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "11216:3:9", + "memberName": "fee", + "nodeType": "MemberAccess", + "referencedDeclaration": 4027, + "src": "11207:12:9", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "src": "11194:25:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "expression": { + "id": 3145, + "name": "_message", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2908, + "src": "11222:8:9", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Message_$4046_calldata_ptr", + "typeString": "struct IBridge.Message calldata" + } + }, + "id": 3146, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "11231:8:9", + "memberName": "gasLimit", + "nodeType": "MemberAccess", + "referencedDeclaration": 4029, + "src": "11222:17:9", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + }, + "src": "11194:45:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "11177:62:9" + }, + { + "assignments": [ + 3150 + ], + "declarations": [ + { + "constant": false, + "id": 3150, + "mutability": "mutable", + "name": "baseFee", + "nameLocation": "11269:7:9", + "nodeType": "VariableDeclaration", + "scope": 3188, + "src": "11261:15:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3149, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "11261:7:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 3155, + "initialValue": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3154, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 3151, + "name": "gasCharged", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3130, + "src": "11279:10:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "expression": { + "id": 3152, + "name": "block", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -4, + "src": "11292:5:9", + "typeDescriptions": { + "typeIdentifier": "t_magic_block", + "typeString": "block" + } + }, + "id": 3153, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "11298:7:9", + "memberName": "basefee", + "nodeType": "MemberAccess", + "src": "11292:13:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "11279:26:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "11261:44:9" + }, + { + "assignments": [ + 3157 + ], + "declarations": [ + { + "constant": false, + "id": 3157, + "mutability": "mutable", + "name": "fee", + "nameLocation": "11335:3:9", + "nodeType": "VariableDeclaration", + "scope": 3188, + "src": "11327:11:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3156, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "11327:7:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 3174, + "initialValue": { + "arguments": [ + { + "expression": { + "id": 3171, + "name": "_message", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2908, + "src": "11424:8:9", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Message_$4046_calldata_ptr", + "typeString": "struct IBridge.Message calldata" + } + }, + "id": 3172, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "11433:3:9", + "memberName": "fee", + "nodeType": "MemberAccess", + "referencedDeclaration": 4027, + "src": "11424:12:9", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + ], + "expression": { + "components": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3160, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 3158, + "name": "baseFee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3150, + "src": "11366:7:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "id": 3159, + "name": "maxFee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3140, + "src": "11377:6:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "11366:17:9", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3167, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3164, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 3162, + "name": "maxFee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3140, + "src": "11396:6:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "id": 3163, + "name": "baseFee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3150, + "src": "11405:7:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "11396:16:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 3165, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "11395:18:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">>", + "rightExpression": { + "hexValue": "31", + "id": 3166, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "11417:1:9", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "11395:23:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 3168, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "Conditional", + "src": "11366:52:9", + "trueExpression": { + "id": 3161, + "name": "maxFee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3140, + "src": "11386:6:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 3169, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "11365:54:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 3170, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "11420:3:9", + "memberName": "min", + "nodeType": "MemberAccess", + "referencedDeclaration": 5748, + "src": "11365:58:9", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$attached_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 3173, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "11365:72:9", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "11327:110:9" + }, + { + "expression": { + "id": 3177, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 3175, + "name": "refundAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3021, + "src": "11460:12:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "-=", + "rightHandSide": { + "id": 3176, + "name": "fee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3157, + "src": "11476:3:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "11460:19:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 3178, + "nodeType": "ExpressionStatement", + "src": "11460:19:9" + }, + { + "expression": { + "arguments": [ + { + "id": 3184, + "name": "fee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3157, + "src": "11531:3:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 3185, + "name": "_SEND_ETHER_GAS_LIMIT", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2519, + "src": "11536:21:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "expression": { + "id": 3179, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "11501:3:9", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 3182, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "11505:6:9", + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "11501:10:9", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 3183, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "11512:18:9", + "memberName": "sendEtherAndVerify", + "nodeType": "MemberAccess", + "referencedDeclaration": 5495, + "src": "11501:29:9", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_uint256_$returns$__$attached_to$_t_address_$", + "typeString": "function (address,uint256,uint256)" + } + }, + "id": 3186, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "11501:57:9", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3187, + "nodeType": "ExpressionStatement", + "src": "11501:57:9" + } + ] + } + ] + } + } + ] + } + }, + { + "expression": { + "arguments": [ + { + "id": 3198, + "name": "refundAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3021, + "src": "11649:12:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 3199, + "name": "_SEND_ETHER_GAS_LIMIT", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2519, + "src": "11663:21:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "expression": { + "id": 3193, + "name": "_message", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2908, + "src": "11611:8:9", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Message_$4046_calldata_ptr", + "typeString": "struct IBridge.Message calldata" + } + }, + "id": 3196, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "11620:9:9", + "memberName": "destOwner", + "nodeType": "MemberAccess", + "referencedDeclaration": 4039, + "src": "11611:18:9", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 3197, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "11630:18:9", + "memberName": "sendEtherAndVerify", + "nodeType": "MemberAccess", + "referencedDeclaration": 5495, + "src": "11611:37:9", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_uint256_$returns$__$attached_to$_t_address_$", + "typeString": "function (address,uint256,uint256)" + } + }, + "id": 3200, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "11611:74:9", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3201, + "nodeType": "ExpressionStatement", + "src": "11611:74:9" + }, + { + "expression": { + "arguments": [ + { + "id": 3203, + "name": "msgHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2987, + "src": "11717:7:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 3204, + "name": "status_", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2918, + "src": "11726:7:9", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Status_$4018", + "typeString": "enum IBridge.Status" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_enum$_Status_$4018", + "typeString": "enum IBridge.Status" + } + ], + "id": 3202, + "name": "_updateMessageStatus", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3714, + "src": "11696:20:9", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_enum$_Status_$4018_$returns$__$", + "typeString": "function (bytes32,enum IBridge.Status)" + } + }, + "id": 3205, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "11696:38:9", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3206, + "nodeType": "ExpressionStatement", + "src": "11696:38:9" + }, + { + "eventCall": { + "arguments": [ + { + "id": 3208, + "name": "msgHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2987, + "src": "11766:7:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 3209, + "name": "_message", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2908, + "src": "11775:8:9", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Message_$4046_calldata_ptr", + "typeString": "struct IBridge.Message calldata" + } + }, + { + "id": 3210, + "name": "stats", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2954, + "src": "11785:5:9", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ProcessingStats_$2488_memory_ptr", + "typeString": "struct Bridge.ProcessingStats memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_struct$_Message_$4046_calldata_ptr", + "typeString": "struct IBridge.Message calldata" + }, + { + "typeIdentifier": "t_struct$_ProcessingStats_$2488_memory_ptr", + "typeString": "struct Bridge.ProcessingStats memory" + } + ], + "id": 3207, + "name": "MessageProcessed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2499, + "src": "11749:16:9", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_struct$_Message_$4046_memory_ptr_$_t_struct$_ProcessingStats_$2488_memory_ptr_$returns$__$", + "typeString": "function (bytes32,struct IBridge.Message memory,struct Bridge.ProcessingStats memory)" + } + }, + "id": 3211, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "11749:42:9", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3212, + "nodeType": "EmitStatement", + "src": "11744:47:9" + } + ] + }, + "baseFunctions": [ + 4105 + ], + "documentation": { + "id": 2905, + "nodeType": "StructuredDocumentation", + "src": "7289:292:9", + "text": "@inheritdoc IBridge\n @dev To ensure successful execution, we recommend this transaction's gas limit not to be\n smaller than:\n `(message.gasLimit - GAS_RESERVE) * 64 / 63 + GAS_RESERVE`,\n Or we can use a simplified rule: `tx.gaslimit = message.gaslimit * 102%`." + }, + "functionSelector": "2035065e", + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 2913, + "kind": "modifierInvocation", + "modifierName": { + "id": 2912, + "name": "whenNotPaused", + "nameLocations": [ + "7707:13:9" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 4398, + "src": "7707:13:9" + }, + "nodeType": "ModifierInvocation", + "src": "7707:13:9" + }, + { + "id": 2915, + "kind": "modifierInvocation", + "modifierName": { + "id": 2914, + "name": "nonReentrant", + "nameLocations": [ + "7729:12:9" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 4382, + "src": "7729:12:9" + }, + "nodeType": "ModifierInvocation", + "src": "7729:12:9" + } + ], + "name": "processMessage", + "nameLocation": "7595:14:9", + "parameters": { + "id": 2911, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2908, + "mutability": "mutable", + "name": "_message", + "nameLocation": "7636:8:9", + "nodeType": "VariableDeclaration", + "scope": 3214, + "src": "7619:25:9", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Message_$4046_calldata_ptr", + "typeString": "struct IBridge.Message" + }, + "typeName": { + "id": 2907, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 2906, + "name": "Message", + "nameLocations": [ + "7619:7:9" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 4046, + "src": "7619:7:9" + }, + "referencedDeclaration": 4046, + "src": "7619:7:9", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Message_$4046_storage_ptr", + "typeString": "struct IBridge.Message" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2910, + "mutability": "mutable", + "name": "_proof", + "nameLocation": "7669:6:9", + "nodeType": "VariableDeclaration", + "scope": 3214, + "src": "7654:21:9", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 2909, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "7654:5:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "7609:72:9" + }, + "returnParameters": { + "id": 2922, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2918, + "mutability": "mutable", + "name": "status_", + "nameLocation": "7766:7:9", + "nodeType": "VariableDeclaration", + "scope": 3214, + "src": "7759:14:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Status_$4018", + "typeString": "enum IBridge.Status" + }, + "typeName": { + "id": 2917, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 2916, + "name": "Status", + "nameLocations": [ + "7759:6:9" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 4018, + "src": "7759:6:9" + }, + "referencedDeclaration": 4018, + "src": "7759:6:9", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Status_$4018", + "typeString": "enum IBridge.Status" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2921, + "mutability": "mutable", + "name": "reason_", + "nameLocation": "7788:7:9", + "nodeType": "VariableDeclaration", + "scope": 3214, + "src": "7775:20:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_enum$_StatusReason_$4023", + "typeString": "enum IBridge.StatusReason" + }, + "typeName": { + "id": 2920, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 2919, + "name": "StatusReason", + "nameLocations": [ + "7775:12:9" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 4023, + "src": "7775:12:9" + }, + "referencedDeclaration": 4023, + "src": "7775:12:9", + "typeDescriptions": { + "typeIdentifier": "t_enum$_StatusReason_$4023", + "typeString": "enum IBridge.StatusReason" + } + }, + "visibility": "internal" + } + ], + "src": "7758:38:9" + }, + "scope": 4009, + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "id": 3327, + "nodeType": "FunctionDefinition", + "src": "11832:1159:9", + "nodes": [], + "body": { + "id": 3326, + "nodeType": "Block", + "src": "12067:924:9", + "nodes": [], + "statements": [ + { + "assignments": [ + 3236 + ], + "declarations": [ + { + "constant": false, + "id": 3236, + "mutability": "mutable", + "name": "msgHash", + "nameLocation": "12085:7:9", + "nodeType": "VariableDeclaration", + "scope": 3326, + "src": "12077:15:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 3235, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "12077:7:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "id": 3240, + "initialValue": { + "arguments": [ + { + "id": 3238, + "name": "_message", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3218, + "src": "12107:8:9", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Message_$4046_calldata_ptr", + "typeString": "struct IBridge.Message calldata" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Message_$4046_calldata_ptr", + "typeString": "struct IBridge.Message calldata" + } + ], + "id": 3237, + "name": "hashMessage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3551, + "src": "12095:11:9", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_struct$_Message_$4046_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (struct IBridge.Message memory) pure returns (bytes32)" + } + }, + "id": 3239, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "12095:21:9", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "12077:39:9" + }, + { + "expression": { + "arguments": [ + { + "id": 3242, + "name": "msgHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3236, + "src": "12139:7:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "expression": { + "id": 3243, + "name": "Status", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4018, + "src": "12148:6:9", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_enum$_Status_$4018_$", + "typeString": "type(enum IBridge.Status)" + } + }, + "id": 3244, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "12155:9:9", + "memberName": "RETRIABLE", + "nodeType": "MemberAccess", + "referencedDeclaration": 4014, + "src": "12148:16:9", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Status_$4018", + "typeString": "enum IBridge.Status" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_enum$_Status_$4018", + "typeString": "enum IBridge.Status" + } + ], + "id": 3241, + "name": "_checkStatus", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3844, + "src": "12126:12:9", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_enum$_Status_$4018_$returns$__$", + "typeString": "function (bytes32,enum IBridge.Status) view" + } + }, + "id": 3245, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "12126:39:9", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3246, + "nodeType": "ExpressionStatement", + "src": "12126:39:9" + }, + { + "assignments": [ + 3248 + ], + "declarations": [ + { + "constant": false, + "id": 3248, + "mutability": "mutable", + "name": "succeeded", + "nameLocation": "12181:9:9", + "nodeType": "VariableDeclaration", + "scope": 3326, + "src": "12176:14:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 3247, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "12176:4:9", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "id": 3249, + "nodeType": "VariableDeclarationStatement", + "src": "12176:14:9" + }, + { + "condition": { + "arguments": [ + { + "id": 3251, + "name": "_message", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3218, + "src": "12231:8:9", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Message_$4046_calldata_ptr", + "typeString": "struct IBridge.Message calldata" + } + }, + { + "id": 3252, + "name": "signalService", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2530, + "src": "12241:13:9", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ISignalService_$6277", + "typeString": "contract ISignalService" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Message_$4046_calldata_ptr", + "typeString": "struct IBridge.Message calldata" + }, + { + "typeIdentifier": "t_contract$_ISignalService_$6277", + "typeString": "contract ISignalService" + } + ], + "id": 3250, + "name": "_unableToInvokeMessageCall", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3907, + "src": "12204:26:9", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_Message_$4046_calldata_ptr_$_t_contract$_ISignalService_$6277_$returns$_t_bool_$", + "typeString": "function (struct IBridge.Message calldata,contract ISignalService) view returns (bool)" + } + }, + "id": 3253, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "12204:51:9", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 3294, + "nodeType": "Block", + "src": "12371:301:9", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 3278, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 3271, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + }, + "id": 3269, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 3266, + "name": "_message", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3218, + "src": "12390:8:9", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Message_$4046_calldata_ptr", + "typeString": "struct IBridge.Message calldata" + } + }, + "id": 3267, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "12399:8:9", + "memberName": "gasLimit", + "nodeType": "MemberAccess", + "referencedDeclaration": 4029, + "src": "12390:17:9", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "30", + "id": 3268, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "12411:1:9", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "12390:22:9", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "id": 3270, + "name": "_isLastAttempt", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3220, + "src": "12416:14:9", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "12390:40:9", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "id": 3272, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "12389:42:9", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 3277, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 3273, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "12435:3:9", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 3274, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "12439:6:9", + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "12435:10:9", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "expression": { + "id": 3275, + "name": "_message", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3218, + "src": "12449:8:9", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Message_$4046_calldata_ptr", + "typeString": "struct IBridge.Message calldata" + } + }, + "id": 3276, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "12458:9:9", + "memberName": "destOwner", + "nodeType": "MemberAccess", + "referencedDeclaration": 4039, + "src": "12449:18:9", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "12435:32:9", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "12389:78:9", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 3283, + "nodeType": "IfStatement", + "src": "12385:145:9", + "trueBody": { + "id": 3282, + "nodeType": "Block", + "src": "12469:61:9", + "statements": [ + { + "errorCall": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 3279, + "name": "B_PERMISSION_DENIED", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2573, + "src": "12494:19:9", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$__$returns$_t_error_$", + "typeString": "function () pure returns (error)" + } + }, + "id": 3280, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "12494:21:9", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_error", + "typeString": "error" + } + }, + "id": 3281, + "nodeType": "RevertStatement", + "src": "12487:28:9" + } + ] + } + }, + { + "expression": { + "id": 3292, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 3284, + "name": "succeeded", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3248, + "src": "12594:9:9", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 3286, + "name": "_message", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3218, + "src": "12625:8:9", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Message_$4046_calldata_ptr", + "typeString": "struct IBridge.Message calldata" + } + }, + { + "id": 3287, + "name": "msgHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3236, + "src": "12635:7:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 3288, + "name": "gasleft", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -7, + "src": "12644:7:9", + "typeDescriptions": { + "typeIdentifier": "t_function_gasleft_view$__$returns$_t_uint256_$", + "typeString": "function () view returns (uint256)" + } + }, + "id": 3289, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "12644:9:9", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "hexValue": "66616c7365", + "id": 3290, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "12655:5:9", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Message_$4046_calldata_ptr", + "typeString": "struct IBridge.Message calldata" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 3285, + "name": "_invokeMessageCall", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3684, + "src": "12606:18:9", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Message_$4046_calldata_ptr_$_t_bytes32_$_t_uint256_$_t_bool_$returns$_t_bool_$", + "typeString": "function (struct IBridge.Message calldata,bytes32,uint256,bool) returns (bool)" + } + }, + "id": 3291, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "12606:55:9", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "12594:67:9", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 3293, + "nodeType": "ExpressionStatement", + "src": "12594:67:9" + } + ] + }, + "id": 3295, + "nodeType": "IfStatement", + "src": "12200:472:9", + "trueBody": { + "id": 3265, + "nodeType": "Block", + "src": "12257:108:9", + "statements": [ + { + "expression": { + "id": 3263, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 3254, + "name": "succeeded", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3248, + "src": "12271:9:9", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "expression": { + "id": 3258, + "name": "_message", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3218, + "src": "12312:8:9", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Message_$4046_calldata_ptr", + "typeString": "struct IBridge.Message calldata" + } + }, + "id": 3259, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "12321:5:9", + "memberName": "value", + "nodeType": "MemberAccess", + "referencedDeclaration": 4043, + "src": "12312:14:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 3260, + "name": "_SEND_ETHER_GAS_LIMIT", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2519, + "src": "12328:21:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "hexValue": "", + "id": 3261, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "12351:2:9", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", + "typeString": "literal_string \"\"" + }, + "value": "" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", + "typeString": "literal_string \"\"" + } + ], + "expression": { + "expression": { + "id": 3255, + "name": "_message", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3218, + "src": "12283:8:9", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Message_$4046_calldata_ptr", + "typeString": "struct IBridge.Message calldata" + } + }, + "id": 3256, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "12292:9:9", + "memberName": "destOwner", + "nodeType": "MemberAccess", + "referencedDeclaration": 4039, + "src": "12283:18:9", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 3257, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "12302:9:9", + "memberName": "sendEther", + "nodeType": "MemberAccess", + "referencedDeclaration": 5468, + "src": "12283:28:9", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bool_$attached_to$_t_address_$", + "typeString": "function (address,uint256,uint256,bytes memory) returns (bool)" + } + }, + "id": 3262, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "12283:71:9", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "12271:83:9", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 3264, + "nodeType": "ExpressionStatement", + "src": "12271:83:9" + } + ] + } + }, + { + "condition": { + "id": 3296, + "name": "succeeded", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3248, + "src": "12686:9:9", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "condition": { + "id": 3304, + "name": "_isLastAttempt", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3220, + "src": "12774:14:9", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 3323, + "nodeType": "Block", + "src": "12937:48:9", + "statements": [ + { + "errorCall": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 3320, + "name": "B_RETRY_FAILED", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2577, + "src": "12958:14:9", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$__$returns$_t_error_$", + "typeString": "function () pure returns (error)" + } + }, + "id": 3321, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "12958:16:9", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_error", + "typeString": "error" + } + }, + "id": 3322, + "nodeType": "RevertStatement", + "src": "12951:23:9" + } + ] + }, + "id": 3324, + "nodeType": "IfStatement", + "src": "12770:215:9", + "trueBody": { + "id": 3319, + "nodeType": "Block", + "src": "12790:141:9", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 3306, + "name": "msgHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3236, + "src": "12825:7:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "expression": { + "id": 3307, + "name": "Status", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4018, + "src": "12834:6:9", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_enum$_Status_$4018_$", + "typeString": "type(enum IBridge.Status)" + } + }, + "id": 3308, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "12841:6:9", + "memberName": "FAILED", + "nodeType": "MemberAccess", + "referencedDeclaration": 4016, + "src": "12834:13:9", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Status_$4018", + "typeString": "enum IBridge.Status" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_enum$_Status_$4018", + "typeString": "enum IBridge.Status" + } + ], + "id": 3305, + "name": "_updateMessageStatus", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3714, + "src": "12804:20:9", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_enum$_Status_$4018_$returns$__$", + "typeString": "function (bytes32,enum IBridge.Status)" + } + }, + "id": 3309, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "12804:44:9", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3310, + "nodeType": "ExpressionStatement", + "src": "12804:44:9" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "id": 3315, + "name": "msgHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3236, + "src": "12911:7:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 3314, + "name": "signalForFailedMessage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3571, + "src": "12888:22:9", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_bytes32_$", + "typeString": "function (bytes32) pure returns (bytes32)" + } + }, + "id": 3316, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "12888:31:9", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "expression": { + "id": 3311, + "name": "signalService", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2530, + "src": "12863:13:9", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ISignalService_$6277", + "typeString": "contract ISignalService" + } + }, + "id": 3313, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "12877:10:9", + "memberName": "sendSignal", + "nodeType": "MemberAccess", + "referencedDeclaration": 6232, + "src": "12863:24:9", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_bytes32_$returns$_t_bytes32_$", + "typeString": "function (bytes32) external returns (bytes32)" + } + }, + "id": 3317, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "12863:57:9", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 3318, + "nodeType": "ExpressionStatement", + "src": "12863:57:9" + } + ] + } + }, + "id": 3325, + "nodeType": "IfStatement", + "src": "12682:303:9", + "trueBody": { + "id": 3303, + "nodeType": "Block", + "src": "12697:67:9", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 3298, + "name": "msgHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3236, + "src": "12732:7:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "expression": { + "id": 3299, + "name": "Status", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4018, + "src": "12741:6:9", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_enum$_Status_$4018_$", + "typeString": "type(enum IBridge.Status)" + } + }, + "id": 3300, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "12748:4:9", + "memberName": "DONE", + "nodeType": "MemberAccess", + "referencedDeclaration": 4015, + "src": "12741:11:9", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Status_$4018", + "typeString": "enum IBridge.Status" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_enum$_Status_$4018", + "typeString": "enum IBridge.Status" + } + ], + "id": 3297, + "name": "_updateMessageStatus", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3714, + "src": "12711:20:9", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_enum$_Status_$4018_$returns$__$", + "typeString": "function (bytes32,enum IBridge.Status)" + } + }, + "id": 3301, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "12711:42:9", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3302, + "nodeType": "ExpressionStatement", + "src": "12711:42:9" + } + ] + } + } + ] + }, + "baseFunctions": [ + 4114 + ], + "documentation": { + "id": 3215, + "nodeType": "StructuredDocumentation", + "src": "11804:23:9", + "text": "@inheritdoc IBridge" + }, + "functionSelector": "0432873c", + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": [ + { + "expression": { + "id": 3223, + "name": "_message", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3218, + "src": "11959:8:9", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Message_$4046_calldata_ptr", + "typeString": "struct IBridge.Message calldata" + } + }, + "id": 3224, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "11968:11:9", + "memberName": "destChainId", + "nodeType": "MemberAccess", + "referencedDeclaration": 4037, + "src": "11959:20:9", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + } + ], + "id": 3225, + "kind": "modifierInvocation", + "modifierName": { + "id": 3222, + "name": "sameChain", + "nameLocations": [ + "11949:9:9" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 2589, + "src": "11949:9:9" + }, + "nodeType": "ModifierInvocation", + "src": "11949:31:9" + }, + { + "arguments": [ + { + "expression": { + "id": 3227, + "name": "_message", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3218, + "src": "11999:8:9", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Message_$4046_calldata_ptr", + "typeString": "struct IBridge.Message calldata" + } + }, + "id": 3228, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "12008:10:9", + "memberName": "srcChainId", + "nodeType": "MemberAccess", + "referencedDeclaration": 4033, + "src": "11999:19:9", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + } + ], + "id": 3229, + "kind": "modifierInvocation", + "modifierName": { + "id": 3226, + "name": "diffChain", + "nameLocations": [ + "11989:9:9" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 2599, + "src": "11989:9:9" + }, + "nodeType": "ModifierInvocation", + "src": "11989:30:9" + }, + { + "id": 3231, + "kind": "modifierInvocation", + "modifierName": { + "id": 3230, + "name": "whenNotPaused", + "nameLocations": [ + "12028:13:9" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 4398, + "src": "12028:13:9" + }, + "nodeType": "ModifierInvocation", + "src": "12028:13:9" + }, + { + "id": 3233, + "kind": "modifierInvocation", + "modifierName": { + "id": 3232, + "name": "nonReentrant", + "nameLocations": [ + "12050:12:9" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 4382, + "src": "12050:12:9" + }, + "nodeType": "ModifierInvocation", + "src": "12050:12:9" + } + ], + "name": "retryMessage", + "nameLocation": "11841:12:9", + "parameters": { + "id": 3221, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3218, + "mutability": "mutable", + "name": "_message", + "nameLocation": "11880:8:9", + "nodeType": "VariableDeclaration", + "scope": 3327, + "src": "11863:25:9", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Message_$4046_calldata_ptr", + "typeString": "struct IBridge.Message" + }, + "typeName": { + "id": 3217, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 3216, + "name": "Message", + "nameLocations": [ + "11863:7:9" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 4046, + "src": "11863:7:9" + }, + "referencedDeclaration": 4046, + "src": "11863:7:9", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Message_$4046_storage_ptr", + "typeString": "struct IBridge.Message" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3220, + "mutability": "mutable", + "name": "_isLastAttempt", + "nameLocation": "11903:14:9", + "nodeType": "VariableDeclaration", + "scope": 3327, + "src": "11898:19:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 3219, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "11898:4:9", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "11853:70:9" + }, + "returnParameters": { + "id": 3234, + "nodeType": "ParameterList", + "parameters": [], + "src": "12067:0:9" + }, + "scope": 4009, + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "id": 3383, + "nodeType": "FunctionDefinition", + "src": "13025:519:9", + "nodes": [], + "body": { + "id": 3382, + "nodeType": "Block", + "src": "13216:328:9", + "nodes": [], + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 3350, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 3346, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "13230:3:9", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 3347, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "13234:6:9", + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "13230:10:9", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "expression": { + "id": 3348, + "name": "_message", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3331, + "src": "13244:8:9", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Message_$4046_calldata_ptr", + "typeString": "struct IBridge.Message calldata" + } + }, + "id": 3349, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "13253:9:9", + "memberName": "destOwner", + "nodeType": "MemberAccess", + "referencedDeclaration": 4039, + "src": "13244:18:9", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "13230:32:9", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 3355, + "nodeType": "IfStatement", + "src": "13226:91:9", + "trueBody": { + "id": 3354, + "nodeType": "Block", + "src": "13264:53:9", + "statements": [ + { + "errorCall": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 3351, + "name": "B_PERMISSION_DENIED", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2573, + "src": "13285:19:9", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$__$returns$_t_error_$", + "typeString": "function () pure returns (error)" + } + }, + "id": 3352, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "13285:21:9", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_error", + "typeString": "error" + } + }, + "id": 3353, + "nodeType": "RevertStatement", + "src": "13278:28:9" + } + ] + } + }, + { + "assignments": [ + 3357 + ], + "declarations": [ + { + "constant": false, + "id": 3357, + "mutability": "mutable", + "name": "msgHash", + "nameLocation": "13335:7:9", + "nodeType": "VariableDeclaration", + "scope": 3382, + "src": "13327:15:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 3356, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "13327:7:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "id": 3361, + "initialValue": { + "arguments": [ + { + "id": 3359, + "name": "_message", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3331, + "src": "13357:8:9", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Message_$4046_calldata_ptr", + "typeString": "struct IBridge.Message calldata" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Message_$4046_calldata_ptr", + "typeString": "struct IBridge.Message calldata" + } + ], + "id": 3358, + "name": "hashMessage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3551, + "src": "13345:11:9", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_struct$_Message_$4046_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (struct IBridge.Message memory) pure returns (bytes32)" + } + }, + "id": 3360, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "13345:21:9", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "13327:39:9" + }, + { + "expression": { + "arguments": [ + { + "id": 3363, + "name": "msgHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3357, + "src": "13389:7:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "expression": { + "id": 3364, + "name": "Status", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4018, + "src": "13398:6:9", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_enum$_Status_$4018_$", + "typeString": "type(enum IBridge.Status)" + } + }, + "id": 3365, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "13405:9:9", + "memberName": "RETRIABLE", + "nodeType": "MemberAccess", + "referencedDeclaration": 4014, + "src": "13398:16:9", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Status_$4018", + "typeString": "enum IBridge.Status" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_enum$_Status_$4018", + "typeString": "enum IBridge.Status" + } + ], + "id": 3362, + "name": "_checkStatus", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3844, + "src": "13376:12:9", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_enum$_Status_$4018_$returns$__$", + "typeString": "function (bytes32,enum IBridge.Status) view" + } + }, + "id": 3366, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "13376:39:9", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3367, + "nodeType": "ExpressionStatement", + "src": "13376:39:9" + }, + { + "expression": { + "arguments": [ + { + "id": 3369, + "name": "msgHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3357, + "src": "13447:7:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "expression": { + "id": 3370, + "name": "Status", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4018, + "src": "13456:6:9", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_enum$_Status_$4018_$", + "typeString": "type(enum IBridge.Status)" + } + }, + "id": 3371, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "13463:6:9", + "memberName": "FAILED", + "nodeType": "MemberAccess", + "referencedDeclaration": 4016, + "src": "13456:13:9", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Status_$4018", + "typeString": "enum IBridge.Status" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_enum$_Status_$4018", + "typeString": "enum IBridge.Status" + } + ], + "id": 3368, + "name": "_updateMessageStatus", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3714, + "src": "13426:20:9", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_enum$_Status_$4018_$returns$__$", + "typeString": "function (bytes32,enum IBridge.Status)" + } + }, + "id": 3372, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "13426:44:9", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3373, + "nodeType": "ExpressionStatement", + "src": "13426:44:9" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "id": 3378, + "name": "msgHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3357, + "src": "13528:7:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 3377, + "name": "signalForFailedMessage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3571, + "src": "13505:22:9", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_bytes32_$", + "typeString": "function (bytes32) pure returns (bytes32)" + } + }, + "id": 3379, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "13505:31:9", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "expression": { + "id": 3374, + "name": "signalService", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2530, + "src": "13480:13:9", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ISignalService_$6277", + "typeString": "contract ISignalService" + } + }, + "id": 3376, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "13494:10:9", + "memberName": "sendSignal", + "nodeType": "MemberAccess", + "referencedDeclaration": 6232, + "src": "13480:24:9", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_bytes32_$returns$_t_bytes32_$", + "typeString": "function (bytes32) external returns (bytes32)" + } + }, + "id": 3380, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "13480:57:9", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 3381, + "nodeType": "ExpressionStatement", + "src": "13480:57:9" + } + ] + }, + "baseFunctions": [ + 4121 + ], + "documentation": { + "id": 3328, + "nodeType": "StructuredDocumentation", + "src": "12997:23:9", + "text": "@inheritdoc IBridge" + }, + "functionSelector": "913b16cb", + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": [ + { + "expression": { + "id": 3334, + "name": "_message", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3331, + "src": "13108:8:9", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Message_$4046_calldata_ptr", + "typeString": "struct IBridge.Message calldata" + } + }, + "id": 3335, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "13117:11:9", + "memberName": "destChainId", + "nodeType": "MemberAccess", + "referencedDeclaration": 4037, + "src": "13108:20:9", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + } + ], + "id": 3336, + "kind": "modifierInvocation", + "modifierName": { + "id": 3333, + "name": "sameChain", + "nameLocations": [ + "13098:9:9" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 2589, + "src": "13098:9:9" + }, + "nodeType": "ModifierInvocation", + "src": "13098:31:9" + }, + { + "arguments": [ + { + "expression": { + "id": 3338, + "name": "_message", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3331, + "src": "13148:8:9", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Message_$4046_calldata_ptr", + "typeString": "struct IBridge.Message calldata" + } + }, + "id": 3339, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "13157:10:9", + "memberName": "srcChainId", + "nodeType": "MemberAccess", + "referencedDeclaration": 4033, + "src": "13148:19:9", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + } + ], + "id": 3340, + "kind": "modifierInvocation", + "modifierName": { + "id": 3337, + "name": "diffChain", + "nameLocations": [ + "13138:9:9" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 2599, + "src": "13138:9:9" + }, + "nodeType": "ModifierInvocation", + "src": "13138:30:9" + }, + { + "id": 3342, + "kind": "modifierInvocation", + "modifierName": { + "id": 3341, + "name": "whenNotPaused", + "nameLocations": [ + "13177:13:9" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 4398, + "src": "13177:13:9" + }, + "nodeType": "ModifierInvocation", + "src": "13177:13:9" + }, + { + "id": 3344, + "kind": "modifierInvocation", + "modifierName": { + "id": 3343, + "name": "nonReentrant", + "nameLocations": [ + "13199:12:9" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 4382, + "src": "13199:12:9" + }, + "nodeType": "ModifierInvocation", + "src": "13199:12:9" + } + ], + "name": "failMessage", + "nameLocation": "13034:11:9", + "parameters": { + "id": 3332, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3331, + "mutability": "mutable", + "name": "_message", + "nameLocation": "13063:8:9", + "nodeType": "VariableDeclaration", + "scope": 3383, + "src": "13046:25:9", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Message_$4046_calldata_ptr", + "typeString": "struct IBridge.Message" + }, + "typeName": { + "id": 3330, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 3329, + "name": "Message", + "nameLocations": [ + "13046:7:9" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 4046, + "src": "13046:7:9" + }, + "referencedDeclaration": 4046, + "src": "13046:7:9", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Message_$4046_storage_ptr", + "typeString": "struct IBridge.Message" + } + }, + "visibility": "internal" + } + ], + "src": "13045:27:9" + }, + "returnParameters": { + "id": 3345, + "nodeType": "ParameterList", + "parameters": [], + "src": "13216:0:9" + }, + "scope": 4009, + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "id": 3412, + "nodeType": "FunctionDefinition", + "src": "13578:250:9", + "nodes": [], + "body": { + "id": 3411, + "nodeType": "Block", + "src": "13657:171:9", + "nodes": [], + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3396, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 3392, + "name": "_message", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3387, + "src": "13671:8:9", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Message_$4046_calldata_ptr", + "typeString": "struct IBridge.Message calldata" + } + }, + "id": 3393, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "13680:10:9", + "memberName": "srcChainId", + "nodeType": "MemberAccess", + "referencedDeclaration": 4033, + "src": "13671:19:9", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "expression": { + "id": 3394, + "name": "block", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -4, + "src": "13694:5:9", + "typeDescriptions": { + "typeIdentifier": "t_magic_block", + "typeString": "block" + } + }, + "id": 3395, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "13700:7:9", + "memberName": "chainid", + "nodeType": "MemberAccess", + "src": "13694:13:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "13671:36:9", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 3399, + "nodeType": "IfStatement", + "src": "13667:54:9", + "trueBody": { + "expression": { + "hexValue": "66616c7365", + "id": 3397, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "13716:5:9", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "functionReturnParameters": 3391, + "id": 3398, + "nodeType": "Return", + "src": "13709:12:9" + } + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "id": 3404, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "13781:4:9", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Bridge_$4009", + "typeString": "contract Bridge" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_Bridge_$4009", + "typeString": "contract Bridge" + } + ], + "id": 3403, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "13773:7:9", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 3402, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "13773:7:9", + "typeDescriptions": {} + } + }, + "id": 3405, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "13773:13:9", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "arguments": [ + { + "id": 3407, + "name": "_message", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3387, + "src": "13809:8:9", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Message_$4046_calldata_ptr", + "typeString": "struct IBridge.Message calldata" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Message_$4046_calldata_ptr", + "typeString": "struct IBridge.Message calldata" + } + ], + "id": 3406, + "name": "hashMessage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3551, + "src": "13797:11:9", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_struct$_Message_$4046_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (struct IBridge.Message memory) pure returns (bytes32)" + } + }, + "id": 3408, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "13797:21:9", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "expression": { + "id": 3400, + "name": "signalService", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2530, + "src": "13738:13:9", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ISignalService_$6277", + "typeString": "contract ISignalService" + } + }, + "id": 3401, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "13752:12:9", + "memberName": "isSignalSent", + "nodeType": "MemberAccess", + "referencedDeclaration": 6268, + "src": "13738:26:9", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_address_$_t_bytes32_$returns$_t_bool_$", + "typeString": "function (address,bytes32) view external returns (bool)" + } + }, + "id": 3409, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [ + "13767:4:9", + "13788:7:9" + ], + "names": [ + "_app", + "_signal" + ], + "nodeType": "FunctionCall", + "src": "13738:83:9", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 3391, + "id": 3410, + "nodeType": "Return", + "src": "13731:90:9" + } + ] + }, + "baseFunctions": [ + 4137 + ], + "documentation": { + "id": 3384, + "nodeType": "StructuredDocumentation", + "src": "13550:23:9", + "text": "@inheritdoc IBridge" + }, + "functionSelector": "60620c6b", + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "isMessageSent", + "nameLocation": "13587:13:9", + "parameters": { + "id": 3388, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3387, + "mutability": "mutable", + "name": "_message", + "nameLocation": "13618:8:9", + "nodeType": "VariableDeclaration", + "scope": 3412, + "src": "13601:25:9", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Message_$4046_calldata_ptr", + "typeString": "struct IBridge.Message" + }, + "typeName": { + "id": 3386, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 3385, + "name": "Message", + "nameLocations": [ + "13601:7:9" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 4046, + "src": "13601:7:9" + }, + "referencedDeclaration": 4046, + "src": "13601:7:9", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Message_$4046_storage_ptr", + "typeString": "struct IBridge.Message" + } + }, + "visibility": "internal" + } + ], + "src": "13600:27:9" + }, + "returnParameters": { + "id": 3391, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3390, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 3412, + "src": "13651:4:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 3389, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "13651:4:9", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "13650:6:9" + }, + "scope": 4009, + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "id": 3444, + "nodeType": "FunctionDefinition", + "src": "14121:410:9", + "nodes": [], + "body": { + "id": 3443, + "nodeType": "Block", + "src": "14275:256:9", + "nodes": [], + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3427, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 3423, + "name": "_message", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3416, + "src": "14289:8:9", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Message_$4046_calldata_ptr", + "typeString": "struct IBridge.Message calldata" + } + }, + "id": 3424, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "14298:10:9", + "memberName": "srcChainId", + "nodeType": "MemberAccess", + "referencedDeclaration": 4033, + "src": "14289:19:9", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "expression": { + "id": 3425, + "name": "block", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -4, + "src": "14312:5:9", + "typeDescriptions": { + "typeIdentifier": "t_magic_block", + "typeString": "block" + } + }, + "id": 3426, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "14318:7:9", + "memberName": "chainid", + "nodeType": "MemberAccess", + "src": "14312:13:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "14289:36:9", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 3430, + "nodeType": "IfStatement", + "src": "14285:54:9", + "trueBody": { + "expression": { + "hexValue": "66616c7365", + "id": 3428, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "14334:5:9", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "functionReturnParameters": 3422, + "id": 3429, + "nodeType": "Return", + "src": "14327:12:9" + } + }, + { + "expression": { + "arguments": [ + { + "id": 3432, + "name": "signalService", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2530, + "src": "14388:13:9", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ISignalService_$6277", + "typeString": "contract ISignalService" + } + }, + { + "arguments": [ + { + "arguments": [ + { + "id": 3435, + "name": "_message", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3416, + "src": "14450:8:9", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Message_$4046_calldata_ptr", + "typeString": "struct IBridge.Message calldata" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Message_$4046_calldata_ptr", + "typeString": "struct IBridge.Message calldata" + } + ], + "id": 3434, + "name": "hashMessage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3551, + "src": "14438:11:9", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_struct$_Message_$4046_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (struct IBridge.Message memory) pure returns (bytes32)" + } + }, + "id": 3436, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "14438:21:9", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 3433, + "name": "signalForFailedMessage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3571, + "src": "14415:22:9", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_bytes32_$", + "typeString": "function (bytes32) pure returns (bytes32)" + } + }, + "id": 3437, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "14415:45:9", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "expression": { + "id": 3438, + "name": "_message", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3416, + "src": "14474:8:9", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Message_$4046_calldata_ptr", + "typeString": "struct IBridge.Message calldata" + } + }, + "id": 3439, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "14483:11:9", + "memberName": "destChainId", + "nodeType": "MemberAccess", + "referencedDeclaration": 4037, + "src": "14474:20:9", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + { + "id": 3440, + "name": "_proof", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3418, + "src": "14508:6:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_ISignalService_$6277", + "typeString": "contract ISignalService" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + }, + { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + ], + "id": 3431, + "name": "_isSignalReceived", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3826, + "src": "14357:17:9", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_contract$_ISignalService_$6277_$_t_bytes32_$_t_uint64_$_t_bytes_calldata_ptr_$returns$_t_bool_$", + "typeString": "function (contract ISignalService,bytes32,uint64,bytes calldata) view returns (bool)" + } + }, + "id": 3441, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "14357:167:9", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 3422, + "id": 3442, + "nodeType": "Return", + "src": "14350:174:9" + } + ] + }, + "documentation": { + "id": 3413, + "nodeType": "StructuredDocumentation", + "src": "13834:282:9", + "text": "@notice Checks if a msgHash has failed on its destination chain.\n This is the 'readonly' version of proveMessageFailed.\n @param _message The message.\n @param _proof The merkle inclusion proof.\n @return true if the message has failed, false otherwise." + }, + "functionSelector": "5862f6e1", + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "isMessageFailed", + "nameLocation": "14130:15:9", + "parameters": { + "id": 3419, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3416, + "mutability": "mutable", + "name": "_message", + "nameLocation": "14172:8:9", + "nodeType": "VariableDeclaration", + "scope": 3444, + "src": "14155:25:9", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Message_$4046_calldata_ptr", + "typeString": "struct IBridge.Message" + }, + "typeName": { + "id": 3415, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 3414, + "name": "Message", + "nameLocations": [ + "14155:7:9" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 4046, + "src": "14155:7:9" + }, + "referencedDeclaration": 4046, + "src": "14155:7:9", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Message_$4046_storage_ptr", + "typeString": "struct IBridge.Message" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3418, + "mutability": "mutable", + "name": "_proof", + "nameLocation": "14205:6:9", + "nodeType": "VariableDeclaration", + "scope": 3444, + "src": "14190:21:9", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 3417, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "14190:5:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "14145:72:9" + }, + "returnParameters": { + "id": 3422, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3421, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 3444, + "src": "14265:4:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 3420, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "14265:4:9", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "14264:6:9" + }, + "scope": 4009, + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "id": 3474, + "nodeType": "FunctionDefinition", + "src": "14835:329:9", + "nodes": [], + "body": { + "id": 3473, + "nodeType": "Block", + "src": "14991:173:9", + "nodes": [], + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3459, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 3455, + "name": "_message", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3448, + "src": "15005:8:9", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Message_$4046_calldata_ptr", + "typeString": "struct IBridge.Message calldata" + } + }, + "id": 3456, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "15014:11:9", + "memberName": "destChainId", + "nodeType": "MemberAccess", + "referencedDeclaration": 4037, + "src": "15005:20:9", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "expression": { + "id": 3457, + "name": "block", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -4, + "src": "15029:5:9", + "typeDescriptions": { + "typeIdentifier": "t_magic_block", + "typeString": "block" + } + }, + "id": 3458, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "15035:7:9", + "memberName": "chainid", + "nodeType": "MemberAccess", + "src": "15029:13:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "15005:37:9", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 3462, + "nodeType": "IfStatement", + "src": "15001:55:9", + "trueBody": { + "expression": { + "hexValue": "66616c7365", + "id": 3460, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "15051:5:9", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "functionReturnParameters": 3454, + "id": 3461, + "nodeType": "Return", + "src": "15044:12:9" + } + }, + { + "expression": { + "arguments": [ + { + "id": 3464, + "name": "signalService", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2530, + "src": "15091:13:9", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ISignalService_$6277", + "typeString": "contract ISignalService" + } + }, + { + "arguments": [ + { + "id": 3466, + "name": "_message", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3448, + "src": "15118:8:9", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Message_$4046_calldata_ptr", + "typeString": "struct IBridge.Message calldata" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Message_$4046_calldata_ptr", + "typeString": "struct IBridge.Message calldata" + } + ], + "id": 3465, + "name": "hashMessage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3551, + "src": "15106:11:9", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_struct$_Message_$4046_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (struct IBridge.Message memory) pure returns (bytes32)" + } + }, + "id": 3467, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "15106:21:9", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "expression": { + "id": 3468, + "name": "_message", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3448, + "src": "15129:8:9", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Message_$4046_calldata_ptr", + "typeString": "struct IBridge.Message calldata" + } + }, + "id": 3469, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "15138:10:9", + "memberName": "srcChainId", + "nodeType": "MemberAccess", + "referencedDeclaration": 4033, + "src": "15129:19:9", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + { + "id": 3470, + "name": "_proof", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3450, + "src": "15150:6:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_ISignalService_$6277", + "typeString": "contract ISignalService" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + }, + { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + ], + "id": 3463, + "name": "_isSignalReceived", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3826, + "src": "15073:17:9", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_contract$_ISignalService_$6277_$_t_bytes32_$_t_uint64_$_t_bytes_calldata_ptr_$returns$_t_bool_$", + "typeString": "function (contract ISignalService,bytes32,uint64,bytes calldata) view returns (bool)" + } + }, + "id": 3471, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "15073:84:9", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 3454, + "id": 3472, + "nodeType": "Return", + "src": "15066:91:9" + } + ] + }, + "documentation": { + "id": 3445, + "nodeType": "StructuredDocumentation", + "src": "14537:293:9", + "text": "@notice Checks if a msgHash has been received on its source chain.\n This is the 'readonly' version of proveMessageReceived.\n @param _message The message.\n @param _proof The merkle inclusion proof.\n @return true if the message has been received, false otherwise." + }, + "functionSelector": "b8acae0e", + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "isMessageReceived", + "nameLocation": "14844:17:9", + "parameters": { + "id": 3451, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3448, + "mutability": "mutable", + "name": "_message", + "nameLocation": "14888:8:9", + "nodeType": "VariableDeclaration", + "scope": 3474, + "src": "14871:25:9", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Message_$4046_calldata_ptr", + "typeString": "struct IBridge.Message" + }, + "typeName": { + "id": 3447, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 3446, + "name": "Message", + "nameLocations": [ + "14871:7:9" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 4046, + "src": "14871:7:9" + }, + "referencedDeclaration": 4046, + "src": "14871:7:9", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Message_$4046_storage_ptr", + "typeString": "struct IBridge.Message" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3450, + "mutability": "mutable", + "name": "_proof", + "nameLocation": "14921:6:9", + "nodeType": "VariableDeclaration", + "scope": 3474, + "src": "14906:21:9", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 3449, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "14906:5:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "14861:72:9" + }, + "returnParameters": { + "id": 3454, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3453, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 3474, + "src": "14981:4:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 3452, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "14981:4:9", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "14980:6:9" + }, + "scope": 4009, + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "id": 3503, + "nodeType": "FunctionDefinition", + "src": "15412:249:9", + "nodes": [], + "body": { + "id": 3502, + "nodeType": "Block", + "src": "15542:119:9", + "nodes": [], + "statements": [ + { + "expression": { + "id": 3491, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 3484, + "name": "destBridge_", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3482, + "src": "15552:11:9", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 3486, + "name": "_chainId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3477, + "src": "15574:8:9", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + { + "expression": { + "id": 3487, + "name": "LibNames", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5845, + "src": "15584:8:9", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_LibNames_$5845_$", + "typeString": "type(library LibNames)" + } + }, + "id": 3488, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "15593:8:9", + "memberName": "B_BRIDGE", + "nodeType": "MemberAccess", + "referencedDeclaration": 5796, + "src": "15584:17:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "hexValue": "74727565", + "id": 3489, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "15603:4:9", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 3485, + "name": "resolve", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 4899, + 4921 + ], + "referencedDeclaration": 4899, + "src": "15566:7:9", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_uint64_$_t_bytes32_$_t_bool_$returns$_t_address_$", + "typeString": "function (uint64,bytes32,bool) view returns (address)" + } + }, + "id": 3490, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "15566:42:9", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "15552:56:9", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 3492, + "nodeType": "ExpressionStatement", + "src": "15552:56:9" + }, + { + "expression": { + "id": 3500, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 3493, + "name": "enabled_", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3480, + "src": "15618:8:9", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 3499, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 3494, + "name": "destBridge_", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3482, + "src": "15629:11:9", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "arguments": [ + { + "hexValue": "30", + "id": 3497, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "15652:1:9", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 3496, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "15644:7:9", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 3495, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "15644:7:9", + "typeDescriptions": {} + } + }, + "id": 3498, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "15644:10:9", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "15629:25:9", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "15618:36:9", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 3501, + "nodeType": "ExpressionStatement", + "src": "15618:36:9" + } + ] + }, + "documentation": { + "id": 3475, + "nodeType": "StructuredDocumentation", + "src": "15170:237:9", + "text": "@notice Checks if the destination chain is enabled.\n @param _chainId The destination chain ID.\n @return enabled_ True if the destination chain is enabled.\n @return destBridge_ The bridge of the destination chain." + }, + "functionSelector": "8e3881a9", + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "isDestChainEnabled", + "nameLocation": "15421:18:9", + "parameters": { + "id": 3478, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3477, + "mutability": "mutable", + "name": "_chainId", + "nameLocation": "15447:8:9", + "nodeType": "VariableDeclaration", + "scope": 3503, + "src": "15440:15:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + }, + "typeName": { + "id": 3476, + "name": "uint64", + "nodeType": "ElementaryTypeName", + "src": "15440:6:9", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "visibility": "internal" + } + ], + "src": "15439:17:9" + }, + "returnParameters": { + "id": 3483, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3480, + "mutability": "mutable", + "name": "enabled_", + "nameLocation": "15507:8:9", + "nodeType": "VariableDeclaration", + "scope": 3503, + "src": "15502:13:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 3479, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "15502:4:9", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3482, + "mutability": "mutable", + "name": "destBridge_", + "nameLocation": "15525:11:9", + "nodeType": "VariableDeclaration", + "scope": 3503, + "src": "15517:19:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3481, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "15517:7:9", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "15501:36:9" + }, + "scope": 4009, + "stateMutability": "view", + "virtual": false, + "visibility": "public" + }, + { + "id": 3533, + "nodeType": "FunctionDefinition", + "src": "15737:225:9", + "nodes": [], + "body": { + "id": 3532, + "nodeType": "Block", + "src": "15800:162:9", + "nodes": [], + "statements": [ + { + "expression": { + "id": 3513, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 3510, + "name": "ctx_", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3508, + "src": "15810:4:9", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Context_$4053_memory_ptr", + "typeString": "struct IBridge.Context memory" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 3511, + "name": "_loadContext", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3789, + "src": "15817:12:9", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_struct$_Context_$4053_memory_ptr_$", + "typeString": "function () view returns (struct IBridge.Context memory)" + } + }, + "id": 3512, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "15817:14:9", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_Context_$4053_memory_ptr", + "typeString": "struct IBridge.Context memory" + } + }, + "src": "15810:21:9", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Context_$4053_memory_ptr", + "typeString": "struct IBridge.Context memory" + } + }, + "id": 3514, + "nodeType": "ExpressionStatement", + "src": "15810:21:9" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 3526, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "id": 3518, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 3515, + "name": "ctx_", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3508, + "src": "15845:4:9", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Context_$4053_memory_ptr", + "typeString": "struct IBridge.Context memory" + } + }, + "id": 3516, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "15850:7:9", + "memberName": "msgHash", + "nodeType": "MemberAccess", + "referencedDeclaration": 4048, + "src": "15845:12:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "30", + "id": 3517, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "15861:1:9", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "15845:17:9", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "id": 3525, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 3519, + "name": "ctx_", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3508, + "src": "15866:4:9", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Context_$4053_memory_ptr", + "typeString": "struct IBridge.Context memory" + } + }, + "id": 3520, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "15871:7:9", + "memberName": "msgHash", + "nodeType": "MemberAccess", + "referencedDeclaration": 4048, + "src": "15866:12:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "arguments": [ + { + "id": 3523, + "name": "_PLACEHOLDER", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2527, + "src": "15890:12:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 3522, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "15882:7:9", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes32_$", + "typeString": "type(bytes32)" + }, + "typeName": { + "id": 3521, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "15882:7:9", + "typeDescriptions": {} + } + }, + "id": 3524, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "15882:21:9", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "15866:37:9", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "15845:58:9", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 3531, + "nodeType": "IfStatement", + "src": "15841:115:9", + "trueBody": { + "id": 3530, + "nodeType": "Block", + "src": "15905:51:9", + "statements": [ + { + "errorCall": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 3527, + "name": "B_INVALID_CONTEXT", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2559, + "src": "15926:17:9", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$__$returns$_t_error_$", + "typeString": "function () pure returns (error)" + } + }, + "id": 3528, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "15926:19:9", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_error", + "typeString": "error" + } + }, + "id": 3529, + "nodeType": "RevertStatement", + "src": "15919:26:9" + } + ] + } + } + ] + }, + "baseFunctions": [ + 4128 + ], + "documentation": { + "id": 3504, + "nodeType": "StructuredDocumentation", + "src": "15667:65:9", + "text": "@notice Gets the current context.\n @inheritdoc IBridge" + }, + "functionSelector": "d0496d6a", + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "context", + "nameLocation": "15746:7:9", + "parameters": { + "id": 3505, + "nodeType": "ParameterList", + "parameters": [], + "src": "15753:2:9" + }, + "returnParameters": { + "id": 3509, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3508, + "mutability": "mutable", + "name": "ctx_", + "nameLocation": "15794:4:9", + "nodeType": "VariableDeclaration", + "scope": 3533, + "src": "15779:19:9", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Context_$4053_memory_ptr", + "typeString": "struct IBridge.Context" + }, + "typeName": { + "id": 3507, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 3506, + "name": "Context", + "nameLocations": [ + "15779:7:9" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 4053, + "src": "15779:7:9" + }, + "referencedDeclaration": 4053, + "src": "15779:7:9", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Context_$4053_storage_ptr", + "typeString": "struct IBridge.Context" + } + }, + "visibility": "internal" + } + ], + "src": "15778:21:9" + }, + "scope": 4009, + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "id": 3551, + "nodeType": "FunctionDefinition", + "src": "15996:148:9", + "nodes": [], + "body": { + "id": 3550, + "nodeType": "Block", + "src": "16072:72:9", + "nodes": [], + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "hexValue": "5441494b4f5f4d455353414745", + "id": 3545, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "16110:15:9", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_1a4473b8c75893734d8c6977cd1e546423701f3f5c26bb840c8dbeabf02c3f88", + "typeString": "literal_string \"TAIKO_MESSAGE\"" + }, + "value": "TAIKO_MESSAGE" + }, + { + "id": 3546, + "name": "_message", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3537, + "src": "16127:8:9", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Message_$4046_memory_ptr", + "typeString": "struct IBridge.Message memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_1a4473b8c75893734d8c6977cd1e546423701f3f5c26bb840c8dbeabf02c3f88", + "typeString": "literal_string \"TAIKO_MESSAGE\"" + }, + { + "typeIdentifier": "t_struct$_Message_$4046_memory_ptr", + "typeString": "struct IBridge.Message memory" + } + ], + "expression": { + "id": 3543, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -1, + "src": "16099:3:9", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 3544, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "16103:6:9", + "memberName": "encode", + "nodeType": "MemberAccess", + "src": "16099:10:9", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$", + "typeString": "function () pure returns (bytes memory)" + } + }, + "id": 3547, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "16099:37:9", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 3542, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -8, + "src": "16089:9:9", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 3548, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "16089:48:9", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "functionReturnParameters": 3541, + "id": 3549, + "nodeType": "Return", + "src": "16082:55:9" + } + ] + }, + "baseFunctions": [ + 4152 + ], + "documentation": { + "id": 3534, + "nodeType": "StructuredDocumentation", + "src": "15968:23:9", + "text": "@inheritdoc IBridge" + }, + "functionSelector": "c012fa77", + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "hashMessage", + "nameLocation": "16005:11:9", + "parameters": { + "id": 3538, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3537, + "mutability": "mutable", + "name": "_message", + "nameLocation": "16032:8:9", + "nodeType": "VariableDeclaration", + "scope": 3551, + "src": "16017:23:9", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Message_$4046_memory_ptr", + "typeString": "struct IBridge.Message" + }, + "typeName": { + "id": 3536, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 3535, + "name": "Message", + "nameLocations": [ + "16017:7:9" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 4046, + "src": "16017:7:9" + }, + "referencedDeclaration": 4046, + "src": "16017:7:9", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Message_$4046_storage_ptr", + "typeString": "struct IBridge.Message" + } + }, + "visibility": "internal" + } + ], + "src": "16016:25:9" + }, + "returnParameters": { + "id": 3541, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3540, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 3551, + "src": "16063:7:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 3539, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "16063:7:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "16062:9:9" + }, + "scope": 4009, + "stateMutability": "pure", + "virtual": false, + "visibility": "public" + }, + { + "id": 3571, + "nodeType": "FunctionDefinition", + "src": "16325:146:9", + "nodes": [], + "body": { + "id": 3570, + "nodeType": "Block", + "src": "16405:66:9", + "nodes": [], + "statements": [ + { + "expression": { + "commonType": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "id": 3568, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 3559, + "name": "_msgHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3554, + "src": "16422:8:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "BinaryOperation", + "operator": "^", + "rightExpression": { + "arguments": [ + { + "arguments": [ + { + "expression": { + "id": 3564, + "name": "Status", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4018, + "src": "16449:6:9", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_enum$_Status_$4018_$", + "typeString": "type(enum IBridge.Status)" + } + }, + "id": 3565, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "16456:6:9", + "memberName": "FAILED", + "nodeType": "MemberAccess", + "referencedDeclaration": 4016, + "src": "16449:13:9", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Status_$4018", + "typeString": "enum IBridge.Status" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_enum$_Status_$4018", + "typeString": "enum IBridge.Status" + } + ], + "id": 3563, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "16441:7:9", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 3562, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "16441:7:9", + "typeDescriptions": {} + } + }, + "id": 3566, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "16441:22:9", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 3561, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "16433:7:9", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes32_$", + "typeString": "type(bytes32)" + }, + "typeName": { + "id": 3560, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "16433:7:9", + "typeDescriptions": {} + } + }, + "id": 3567, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "16433:31:9", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "16422:42:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "functionReturnParameters": 3558, + "id": 3569, + "nodeType": "Return", + "src": "16415:49:9" + } + ] + }, + "documentation": { + "id": 3552, + "nodeType": "StructuredDocumentation", + "src": "16150:170:9", + "text": "@notice Returns a signal representing a failed/recalled message.\n @param _msgHash The message hash.\n @return The failed representation of it as bytes32." + }, + "functionSelector": "d1aaa5df", + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "signalForFailedMessage", + "nameLocation": "16334:22:9", + "parameters": { + "id": 3555, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3554, + "mutability": "mutable", + "name": "_msgHash", + "nameLocation": "16365:8:9", + "nodeType": "VariableDeclaration", + "scope": 3571, + "src": "16357:16:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 3553, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "16357:7:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "16356:18:9" + }, + "returnParameters": { + "id": 3558, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3557, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 3571, + "src": "16396:7:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 3556, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "16396:7:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "16395:9:9" + }, + "scope": 4009, + "stateMutability": "pure", + "virtual": false, + "visibility": "public" + }, + { + "id": 3586, + "nodeType": "FunctionDefinition", + "src": "16688:150:9", + "nodes": [], + "body": { + "id": 3585, + "nodeType": "Block", + "src": "16768:70:9", + "nodes": [], + "statements": [ + { + "expression": { + "commonType": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + }, + "id": 3583, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [ + { + "id": 3580, + "name": "dataLength", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3574, + "src": "16806:10:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 3579, + "name": "_messageCalldataCost", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3959, + "src": "16785:20:9", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint32_$", + "typeString": "function (uint256) pure returns (uint32)" + } + }, + "id": 3581, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "16785:32:9", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "id": 3582, + "name": "GAS_RESERVE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2503, + "src": "16820:11:9", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + }, + "src": "16785:46:9", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + }, + "functionReturnParameters": 3578, + "id": 3584, + "nodeType": "Return", + "src": "16778:53:9" + } + ] + }, + "documentation": { + "id": 3572, + "nodeType": "StructuredDocumentation", + "src": "16477:206:9", + "text": "@notice Returns the minimal gas limit required for sending a given message.\n @param dataLength The length of message.data.\n @return The minimal gas limit required for sending this message." + }, + "functionSelector": "7cbadfaa", + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getMessageMinGasLimit", + "nameLocation": "16697:21:9", + "parameters": { + "id": 3575, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3574, + "mutability": "mutable", + "name": "dataLength", + "nameLocation": "16727:10:9", + "nodeType": "VariableDeclaration", + "scope": 3586, + "src": "16719:18:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3573, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "16719:7:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "16718:20:9" + }, + "returnParameters": { + "id": 3578, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3577, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 3586, + "src": "16760:6:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + }, + "typeName": { + "id": 3576, + "name": "uint32", + "nodeType": "ElementaryTypeName", + "src": "16760:6:9", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + }, + "visibility": "internal" + } + ], + "src": "16759:8:9" + }, + "scope": 4009, + "stateMutability": "pure", + "virtual": false, + "visibility": "public" + }, + { + "id": 3684, + "nodeType": "FunctionDefinition", + "src": "17315:949:9", + "nodes": [], + "body": { + "id": 3683, + "nodeType": "Block", + "src": "17528:736:9", + "nodes": [], + "statements": [ + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 3608, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 3602, + "name": "_message", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3590, + "src": "17545:8:9", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Message_$4046_calldata_ptr", + "typeString": "struct IBridge.Message calldata" + } + }, + "id": 3603, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "17554:4:9", + "memberName": "from", + "nodeType": "MemberAccess", + "referencedDeclaration": 4031, + "src": "17545:13:9", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "arguments": [ + { + "id": 3606, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "17570:4:9", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Bridge_$4009", + "typeString": "contract Bridge" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_Bridge_$4009", + "typeString": "contract Bridge" + } + ], + "id": 3605, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "17562:7:9", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 3604, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "17562:7:9", + "typeDescriptions": {} + } + }, + "id": 3607, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "17562:13:9", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "17545:30:9", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 3601, + "name": "assert", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -3, + "src": "17538:6:9", + "typeDescriptions": { + "typeIdentifier": "t_function_assert_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 3609, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "17538:38:9", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3610, + "nodeType": "ExpressionStatement", + "src": "17538:38:9" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 3620, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3614, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 3611, + "name": "_message", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3590, + "src": "17591:8:9", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Message_$4046_calldata_ptr", + "typeString": "struct IBridge.Message calldata" + } + }, + "id": 3612, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "17600:5:9", + "memberName": "value", + "nodeType": "MemberAccess", + "referencedDeclaration": 4043, + "src": "17591:14:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "30", + "id": 3613, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "17609:1:9", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "17591:19:9", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3619, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "expression": { + "id": 3615, + "name": "_message", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3590, + "src": "17614:8:9", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Message_$4046_calldata_ptr", + "typeString": "struct IBridge.Message calldata" + } + }, + "id": 3616, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "17623:4:9", + "memberName": "data", + "nodeType": "MemberAccess", + "referencedDeclaration": 4045, + "src": "17614:13:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + }, + "id": 3617, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "17628:6:9", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "17614:20:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "30", + "id": 3618, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "17638:1:9", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "17614:25:9", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "17591:48:9", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 3623, + "nodeType": "IfStatement", + "src": "17587:65:9", + "trueBody": { + "expression": { + "hexValue": "74727565", + "id": 3621, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "17648:4:9", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 3600, + "id": 3622, + "nodeType": "Return", + "src": "17641:11:9" + } + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3626, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 3624, + "name": "_gasLimit", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3594, + "src": "17667:9:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "30", + "id": 3625, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "17680:1:9", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "17667:14:9", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 3629, + "nodeType": "IfStatement", + "src": "17663:32:9", + "trueBody": { + "expression": { + "hexValue": "66616c7365", + "id": 3627, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "17690:5:9", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "functionReturnParameters": 3600, + "id": 3628, + "nodeType": "Return", + "src": "17683:12:9" + } + }, + { + "expression": { + "arguments": [ + { + "id": 3631, + "name": "_msgHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3592, + "src": "17720:8:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "expression": { + "id": 3632, + "name": "_message", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3590, + "src": "17730:8:9", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Message_$4046_calldata_ptr", + "typeString": "struct IBridge.Message calldata" + } + }, + "id": 3633, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "17739:4:9", + "memberName": "from", + "nodeType": "MemberAccess", + "referencedDeclaration": 4031, + "src": "17730:13:9", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "expression": { + "id": 3634, + "name": "_message", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3590, + "src": "17745:8:9", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Message_$4046_calldata_ptr", + "typeString": "struct IBridge.Message calldata" + } + }, + "id": 3635, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "17754:10:9", + "memberName": "srcChainId", + "nodeType": "MemberAccess", + "referencedDeclaration": 4033, + "src": "17745:19:9", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + ], + "id": 3630, + "name": "_storeContext", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3733, + "src": "17706:13:9", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$_t_uint64_$returns$__$", + "typeString": "function (bytes32,address,uint64)" + } + }, + "id": 3636, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "17706:59:9", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3637, + "nodeType": "ExpressionStatement", + "src": "17706:59:9" + }, + { + "assignments": [ + 3639 + ], + "declarations": [ + { + "constant": false, + "id": 3639, + "mutability": "mutable", + "name": "to", + "nameLocation": "17784:2:9", + "nodeType": "VariableDeclaration", + "scope": 3683, + "src": "17776:10:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3638, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "17776:7:9", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "id": 3642, + "initialValue": { + "expression": { + "id": 3640, + "name": "_message", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3590, + "src": "17789:8:9", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Message_$4046_calldata_ptr", + "typeString": "struct IBridge.Message calldata" + } + }, + "id": 3641, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "17798:2:9", + "memberName": "to", + "nodeType": "MemberAccess", + "referencedDeclaration": 4041, + "src": "17789:11:9", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "17776:24:9" + }, + { + "assignments": [ + 3644 + ], + "declarations": [ + { + "constant": false, + "id": 3644, + "mutability": "mutable", + "name": "value", + "nameLocation": "17818:5:9", + "nodeType": "VariableDeclaration", + "scope": 3683, + "src": "17810:13:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3643, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "17810:7:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 3647, + "initialValue": { + "expression": { + "id": 3645, + "name": "_message", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3590, + "src": "17826:8:9", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Message_$4046_calldata_ptr", + "typeString": "struct IBridge.Message calldata" + } + }, + "id": 3646, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "17835:5:9", + "memberName": "value", + "nodeType": "MemberAccess", + "referencedDeclaration": 4043, + "src": "17826:14:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "17810:30:9" + }, + { + "assignments": [ + 3649 + ], + "declarations": [ + { + "constant": false, + "id": 3649, + "mutability": "mutable", + "name": "data", + "nameLocation": "17863:4:9", + "nodeType": "VariableDeclaration", + "scope": 3683, + "src": "17850:17:9", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 3648, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "17850:5:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "id": 3652, + "initialValue": { + "expression": { + "id": 3650, + "name": "_message", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3590, + "src": "17870:8:9", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Message_$4046_calldata_ptr", + "typeString": "struct IBridge.Message calldata" + } + }, + "id": 3651, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "17879:4:9", + "memberName": "data", + "nodeType": "MemberAccess", + "referencedDeclaration": 4045, + "src": "17870:13:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "17850:33:9" + }, + { + "assignments": [ + 3654 + ], + "declarations": [ + { + "constant": false, + "id": 3654, + "mutability": "mutable", + "name": "gasLeft", + "nameLocation": "17901:7:9", + "nodeType": "VariableDeclaration", + "scope": 3683, + "src": "17893:15:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3653, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "17893:7:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 3655, + "nodeType": "VariableDeclarationStatement", + "src": "17893:15:9" + }, + { + "AST": { + "nativeSrc": "17928:127:9", + "nodeType": "YulBlock", + "src": "17928:127:9", + "statements": [ + { + "nativeSrc": "17942:74:9", + "nodeType": "YulAssignment", + "src": "17942:74:9", + "value": { + "arguments": [ + { + "name": "_gasLimit", + "nativeSrc": "17959:9:9", + "nodeType": "YulIdentifier", + "src": "17959:9:9" + }, + { + "name": "to", + "nativeSrc": "17970:2:9", + "nodeType": "YulIdentifier", + "src": "17970:2:9" + }, + { + "name": "value", + "nativeSrc": "17974:5:9", + "nodeType": "YulIdentifier", + "src": "17974:5:9" + }, + { + "arguments": [ + { + "name": "data", + "nativeSrc": "17985:4:9", + "nodeType": "YulIdentifier", + "src": "17985:4:9" + }, + { + "kind": "number", + "nativeSrc": "17991:4:9", + "nodeType": "YulLiteral", + "src": "17991:4:9", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "17981:3:9", + "nodeType": "YulIdentifier", + "src": "17981:3:9" + }, + "nativeSrc": "17981:15:9", + "nodeType": "YulFunctionCall", + "src": "17981:15:9" + }, + { + "arguments": [ + { + "name": "data", + "nativeSrc": "18004:4:9", + "nodeType": "YulIdentifier", + "src": "18004:4:9" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "17998:5:9", + "nodeType": "YulIdentifier", + "src": "17998:5:9" + }, + "nativeSrc": "17998:11:9", + "nodeType": "YulFunctionCall", + "src": "17998:11:9" + }, + { + "kind": "number", + "nativeSrc": "18011:1:9", + "nodeType": "YulLiteral", + "src": "18011:1:9", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "18014:1:9", + "nodeType": "YulLiteral", + "src": "18014:1:9", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "call", + "nativeSrc": "17954:4:9", + "nodeType": "YulIdentifier", + "src": "17954:4:9" + }, + "nativeSrc": "17954:62:9", + "nodeType": "YulFunctionCall", + "src": "17954:62:9" + }, + "variableNames": [ + { + "name": "success_", + "nativeSrc": "17942:8:9", + "nodeType": "YulIdentifier", + "src": "17942:8:9" + } + ] + }, + { + "nativeSrc": "18029:16:9", + "nodeType": "YulAssignment", + "src": "18029:16:9", + "value": { + "arguments": [], + "functionName": { + "name": "gas", + "nativeSrc": "18040:3:9", + "nodeType": "YulIdentifier", + "src": "18040:3:9" + }, + "nativeSrc": "18040:5:9", + "nodeType": "YulFunctionCall", + "src": "18040:5:9" + }, + "variableNames": [ + { + "name": "gasLeft", + "nativeSrc": "18029:7:9", + "nodeType": "YulIdentifier", + "src": "18029:7:9" + } + ] + } + ] + }, + "evmVersion": "shanghai", + "externalReferences": [ + { + "declaration": 3594, + "isOffset": false, + "isSlot": false, + "src": "17959:9:9", + "valueSize": 1 + }, + { + "declaration": 3649, + "isOffset": false, + "isSlot": false, + "src": "17985:4:9", + "valueSize": 1 + }, + { + "declaration": 3649, + "isOffset": false, + "isSlot": false, + "src": "18004:4:9", + "valueSize": 1 + }, + { + "declaration": 3654, + "isOffset": false, + "isSlot": false, + "src": "18029:7:9", + "valueSize": 1 + }, + { + "declaration": 3599, + "isOffset": false, + "isSlot": false, + "src": "17942:8:9", + "valueSize": 1 + }, + { + "declaration": 3639, + "isOffset": false, + "isSlot": false, + "src": "17970:2:9", + "valueSize": 1 + }, + { + "declaration": 3644, + "isOffset": false, + "isSlot": false, + "src": "17974:5:9", + "valueSize": 1 + } + ], + "id": 3656, + "nodeType": "InlineAssembly", + "src": "17919:136:9" + }, + { + "condition": { + "id": 3657, + "name": "_shouldCheckForwardedGas", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3596, + "src": "18069:24:9", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 3664, + "nodeType": "IfStatement", + "src": "18065:93:9", + "trueBody": { + "id": 3663, + "nodeType": "Block", + "src": "18095:63:9", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 3659, + "name": "gasLeft", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3654, + "src": "18128:7:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 3660, + "name": "_gasLimit", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3594, + "src": "18137:9:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 3658, + "name": "_checkForwardedGas", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3976, + "src": "18109:18:9", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$__$", + "typeString": "function (uint256,uint256) pure" + } + }, + "id": 3661, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "18109:38:9", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3662, + "nodeType": "ExpressionStatement", + "src": "18109:38:9" + } + ] + } + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "id": 3668, + "name": "_PLACEHOLDER", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2527, + "src": "18189:12:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 3667, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "18181:7:9", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes32_$", + "typeString": "type(bytes32)" + }, + "typeName": { + "id": 3666, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "18181:7:9", + "typeDescriptions": {} + } + }, + "id": 3669, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "18181:21:9", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "arguments": [ + { + "arguments": [ + { + "id": 3674, + "name": "_PLACEHOLDER", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2527, + "src": "18220:12:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 3673, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "18212:7:9", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint160_$", + "typeString": "type(uint160)" + }, + "typeName": { + "id": 3672, + "name": "uint160", + "nodeType": "ElementaryTypeName", + "src": "18212:7:9", + "typeDescriptions": {} + } + }, + "id": 3675, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "18212:21:9", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + ], + "id": 3671, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "18204:7:9", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 3670, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "18204:7:9", + "typeDescriptions": {} + } + }, + "id": 3676, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "18204:30:9", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "arguments": [ + { + "id": 3679, + "name": "_PLACEHOLDER", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2527, + "src": "18243:12:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 3678, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "18236:6:9", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint64_$", + "typeString": "type(uint64)" + }, + "typeName": { + "id": 3677, + "name": "uint64", + "nodeType": "ElementaryTypeName", + "src": "18236:6:9", + "typeDescriptions": {} + } + }, + "id": 3680, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "18236:20:9", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + ], + "id": 3665, + "name": "_storeContext", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3733, + "src": "18167:13:9", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$_t_uint64_$returns$__$", + "typeString": "function (bytes32,address,uint64)" + } + }, + "id": 3681, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "18167:90:9", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3682, + "nodeType": "ExpressionStatement", + "src": "18167:90:9" + } + ] + }, + "documentation": { + "id": 3587, + "nodeType": "StructuredDocumentation", + "src": "16844:466:9", + "text": "@notice Invokes a call message on the Bridge.\n @param _message The call message to be invoked.\n @param _msgHash The hash of the message.\n @param _shouldCheckForwardedGas True to check gasleft is sufficient for target function\n invocation.\n @return success_ A boolean value indicating whether the message call was successful.\n @dev This function updates the context in the state before and after the\n message call." + }, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_invokeMessageCall", + "nameLocation": "17324:18:9", + "parameters": { + "id": 3597, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3590, + "mutability": "mutable", + "name": "_message", + "nameLocation": "17369:8:9", + "nodeType": "VariableDeclaration", + "scope": 3684, + "src": "17352:25:9", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Message_$4046_calldata_ptr", + "typeString": "struct IBridge.Message" + }, + "typeName": { + "id": 3589, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 3588, + "name": "Message", + "nameLocations": [ + "17352:7:9" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 4046, + "src": "17352:7:9" + }, + "referencedDeclaration": 4046, + "src": "17352:7:9", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Message_$4046_storage_ptr", + "typeString": "struct IBridge.Message" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3592, + "mutability": "mutable", + "name": "_msgHash", + "nameLocation": "17395:8:9", + "nodeType": "VariableDeclaration", + "scope": 3684, + "src": "17387:16:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 3591, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "17387:7:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3594, + "mutability": "mutable", + "name": "_gasLimit", + "nameLocation": "17421:9:9", + "nodeType": "VariableDeclaration", + "scope": 3684, + "src": "17413:17:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3593, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "17413:7:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3596, + "mutability": "mutable", + "name": "_shouldCheckForwardedGas", + "nameLocation": "17445:24:9", + "nodeType": "VariableDeclaration", + "scope": 3684, + "src": "17440:29:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 3595, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "17440:4:9", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "17342:133:9" + }, + "returnParameters": { + "id": 3600, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3599, + "mutability": "mutable", + "name": "success_", + "nameLocation": "17514:8:9", + "nodeType": "VariableDeclaration", + "scope": 3684, + "src": "17509:13:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 3598, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "17509:4:9", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "17508:15:9" + }, + "scope": 4009, + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "private" + }, + { + "id": 3714, + "nodeType": "FunctionDefinition", + "src": "18568:251:9", + "nodes": [], + "body": { + "id": 3713, + "nodeType": "Block", + "src": "18640:179:9", + "nodes": [], + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_enum$_Status_$4018", + "typeString": "enum IBridge.Status" + }, + "id": 3697, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "baseExpression": { + "id": 3693, + "name": "messageStatus", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2541, + "src": "18654:13:9", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_enum$_Status_$4018_$", + "typeString": "mapping(bytes32 => enum IBridge.Status)" + } + }, + "id": 3695, + "indexExpression": { + "id": 3694, + "name": "_msgHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3687, + "src": "18668:8:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "18654:23:9", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Status_$4018", + "typeString": "enum IBridge.Status" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "id": 3696, + "name": "_status", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3690, + "src": "18681:7:9", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Status_$4018", + "typeString": "enum IBridge.Status" + } + }, + "src": "18654:34:9", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 3701, + "nodeType": "IfStatement", + "src": "18650:65:9", + "trueBody": { + "errorCall": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 3698, + "name": "B_INVALID_STATUS", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2565, + "src": "18697:16:9", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$__$returns$_t_error_$", + "typeString": "function () pure returns (error)" + } + }, + "id": 3699, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "18697:18:9", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_error", + "typeString": "error" + } + }, + "id": 3700, + "nodeType": "RevertStatement", + "src": "18690:25:9" + } + }, + { + "expression": { + "id": 3706, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "id": 3702, + "name": "messageStatus", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2541, + "src": "18725:13:9", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_enum$_Status_$4018_$", + "typeString": "mapping(bytes32 => enum IBridge.Status)" + } + }, + "id": 3704, + "indexExpression": { + "id": 3703, + "name": "_msgHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3687, + "src": "18739:8:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "18725:23:9", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Status_$4018", + "typeString": "enum IBridge.Status" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 3705, + "name": "_status", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3690, + "src": "18751:7:9", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Status_$4018", + "typeString": "enum IBridge.Status" + } + }, + "src": "18725:33:9", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Status_$4018", + "typeString": "enum IBridge.Status" + } + }, + "id": 3707, + "nodeType": "ExpressionStatement", + "src": "18725:33:9" + }, + { + "eventCall": { + "arguments": [ + { + "id": 3709, + "name": "_msgHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3687, + "src": "18794:8:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 3710, + "name": "_status", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3690, + "src": "18804:7:9", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Status_$4018", + "typeString": "enum IBridge.Status" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_enum$_Status_$4018", + "typeString": "enum IBridge.Status" + } + ], + "id": 3708, + "name": "MessageStatusChanged", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4069, + "src": "18773:20:9", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_enum$_Status_$4018_$returns$__$", + "typeString": "function (bytes32,enum IBridge.Status)" + } + }, + "id": 3711, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "18773:39:9", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3712, + "nodeType": "EmitStatement", + "src": "18768:44:9" + } + ] + }, + "documentation": { + "id": 3685, + "nodeType": "StructuredDocumentation", + "src": "18270:293:9", + "text": "@notice Updates the status of a bridge message.\n @dev If the new status is different from the current status in the\n mapping, the status is updated and an event is emitted.\n @param _msgHash The hash of the message.\n @param _status The new status of the message." + }, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_updateMessageStatus", + "nameLocation": "18577:20:9", + "parameters": { + "id": 3691, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3687, + "mutability": "mutable", + "name": "_msgHash", + "nameLocation": "18606:8:9", + "nodeType": "VariableDeclaration", + "scope": 3714, + "src": "18598:16:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 3686, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "18598:7:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3690, + "mutability": "mutable", + "name": "_status", + "nameLocation": "18623:7:9", + "nodeType": "VariableDeclaration", + "scope": 3714, + "src": "18616:14:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Status_$4018", + "typeString": "enum IBridge.Status" + }, + "typeName": { + "id": 3689, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 3688, + "name": "Status", + "nameLocations": [ + "18616:6:9" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 4018, + "src": "18616:6:9" + }, + "referencedDeclaration": 4018, + "src": "18616:6:9", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Status_$4018", + "typeString": "enum IBridge.Status" + } + }, + "visibility": "internal" + } + ], + "src": "18597:34:9" + }, + "returnParameters": { + "id": 3692, + "nodeType": "ParameterList", + "parameters": [], + "src": "18640:0:9" + }, + "scope": 4009, + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "private" + }, + { + "id": 3733, + "nodeType": "FunctionDefinition", + "src": "18998:155:9", + "nodes": [], + "body": { + "id": 3732, + "nodeType": "Block", + "src": "19091:62:9", + "nodes": [], + "statements": [ + { + "expression": { + "id": 3730, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 3724, + "name": "__ctx", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2545, + "src": "19101:5:9", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Context_$4053_storage", + "typeString": "struct IBridge.Context storage ref" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 3726, + "name": "_msgHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3717, + "src": "19117:8:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 3727, + "name": "_from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3719, + "src": "19127:5:9", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 3728, + "name": "_srcChainId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3721, + "src": "19134:11:9", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + ], + "id": 3725, + "name": "Context", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4053, + "src": "19109:7:9", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_struct$_Context_$4053_storage_ptr_$", + "typeString": "type(struct IBridge.Context storage pointer)" + } + }, + "id": 3729, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "structConstructorCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "19109:37:9", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_Context_$4053_memory_ptr", + "typeString": "struct IBridge.Context memory" + } + }, + "src": "19101:45:9", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Context_$4053_storage", + "typeString": "struct IBridge.Context storage ref" + } + }, + "id": 3731, + "nodeType": "ExpressionStatement", + "src": "19101:45:9" + } + ] + }, + "documentation": { + "id": 3715, + "nodeType": "StructuredDocumentation", + "src": "18825:168:9", + "text": "@notice Stores the call context\n @param _msgHash The message hash.\n @param _from The sender's address.\n @param _srcChainId The source chain ID." + }, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_storeContext", + "nameLocation": "19007:13:9", + "parameters": { + "id": 3722, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3717, + "mutability": "mutable", + "name": "_msgHash", + "nameLocation": "19029:8:9", + "nodeType": "VariableDeclaration", + "scope": 3733, + "src": "19021:16:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 3716, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "19021:7:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3719, + "mutability": "mutable", + "name": "_from", + "nameLocation": "19047:5:9", + "nodeType": "VariableDeclaration", + "scope": 3733, + "src": "19039:13:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3718, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "19039:7:9", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3721, + "mutability": "mutable", + "name": "_srcChainId", + "nameLocation": "19061:11:9", + "nodeType": "VariableDeclaration", + "scope": 3733, + "src": "19054:18:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + }, + "typeName": { + "id": 3720, + "name": "uint64", + "nodeType": "ElementaryTypeName", + "src": "19054:6:9", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "visibility": "internal" + } + ], + "src": "19020:53:9" + }, + "returnParameters": { + "id": 3723, + "nodeType": "ParameterList", + "parameters": [], + "src": "19091:0:9" + }, + "scope": 4009, + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + }, + { + "id": 3779, + "nodeType": "FunctionDefinition", + "src": "19512:536:9", + "nodes": [], + "body": { + "id": 3778, + "nodeType": "Block", + "src": "19726:322:9", + "nodes": [], + "statements": [ + { + "clauses": [ + { + "block": { + "id": 3770, + "nodeType": "Block", + "src": "19921:59:9", + "statements": [ + { + "expression": { + "id": 3768, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 3763, + "name": "numCacheOps_", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3746, + "src": "19935:12:9", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 3766, + "name": "numCacheOps", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3761, + "src": "19957:11:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 3765, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "19950:6:9", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint32_$", + "typeString": "type(uint32)" + }, + "typeName": { + "id": 3764, + "name": "uint32", + "nodeType": "ElementaryTypeName", + "src": "19950:6:9", + "typeDescriptions": {} + } + }, + "id": 3767, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "19950:19:9", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + }, + "src": "19935:34:9", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + }, + "id": 3769, + "nodeType": "ExpressionStatement", + "src": "19935:34:9" + } + ] + }, + "errorName": "", + "id": 3771, + "nodeType": "TryCatchClause", + "parameters": { + "id": 3762, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3761, + "mutability": "mutable", + "name": "numCacheOps", + "nameLocation": "19899:11:9", + "nodeType": "VariableDeclaration", + "scope": 3771, + "src": "19891:19:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3760, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "19891:7:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "19877:43:9" + }, + "src": "19869:111:9" + }, + { + "block": { + "id": 3775, + "nodeType": "Block", + "src": "19987:55:9", + "statements": [ + { + "errorCall": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 3772, + "name": "B_SIGNAL_NOT_RECEIVED", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2579, + "src": "20008:21:9", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$__$returns$_t_error_$", + "typeString": "function () pure returns (error)" + } + }, + "id": 3773, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "20008:23:9", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_error", + "typeString": "error" + } + }, + "id": 3774, + "nodeType": "RevertStatement", + "src": "20001:30:9" + } + ] + }, + "errorName": "", + "id": 3776, + "nodeType": "TryCatchClause", + "src": "19981:61:9" + } + ], + "externalCall": { + "arguments": [ + { + "id": 3750, + "name": "_chainId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3741, + "src": "19788:8:9", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + { + "arguments": [ + { + "id": 3752, + "name": "_chainId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3741, + "src": "19806:8:9", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + { + "expression": { + "id": 3753, + "name": "LibNames", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5845, + "src": "19816:8:9", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_LibNames_$5845_$", + "typeString": "type(library LibNames)" + } + }, + "id": 3754, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "19825:8:9", + "memberName": "B_BRIDGE", + "nodeType": "MemberAccess", + "referencedDeclaration": 5796, + "src": "19816:17:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "hexValue": "66616c7365", + "id": 3755, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "19835:5:9", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 3751, + "name": "resolve", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 4899, + 4921 + ], + "referencedDeclaration": 4899, + "src": "19798:7:9", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_uint64_$_t_bytes32_$_t_bool_$returns$_t_address_$", + "typeString": "function (uint64,bytes32,bool) view returns (address)" + } + }, + "id": 3756, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "19798:43:9", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 3757, + "name": "_signal", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3739, + "src": "19843:7:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 3758, + "name": "_proof", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3743, + "src": "19852:6:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + ], + "expression": { + "id": 3748, + "name": "_signalService", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3737, + "src": "19740:14:9", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ISignalService_$6277", + "typeString": "contract ISignalService" + } + }, + "id": 3749, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "19755:19:9", + "memberName": "proveSignalReceived", + "nodeType": "MemberAccess", + "referencedDeclaration": 6246, + "src": "19740:34:9", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_uint64_$_t_address_$_t_bytes32_$_t_bytes_memory_ptr_$returns$_t_uint256_$", + "typeString": "function (uint64,address,bytes32,bytes memory) external returns (uint256)" + } + }, + "id": 3759, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "19740:128:9", + "tryCall": true, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 3777, + "nodeType": "TryStatement", + "src": "19736:306:9" + } + ] + }, + "documentation": { + "id": 3734, + "nodeType": "StructuredDocumentation", + "src": "19159:348:9", + "text": "@notice Checks if the signal was received and caches cross-chain data if requested.\n @param _signalService The signal service address.\n @param _signal The signal.\n @param _chainId The ID of the chain the signal is stored on.\n @param _proof The merkle inclusion proof.\n @return numCacheOps_ Num of cached items" + }, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_proveSignalReceived", + "nameLocation": "19521:20:9", + "parameters": { + "id": 3744, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3737, + "mutability": "mutable", + "name": "_signalService", + "nameLocation": "19566:14:9", + "nodeType": "VariableDeclaration", + "scope": 3779, + "src": "19551:29:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ISignalService_$6277", + "typeString": "contract ISignalService" + }, + "typeName": { + "id": 3736, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 3735, + "name": "ISignalService", + "nameLocations": [ + "19551:14:9" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 6277, + "src": "19551:14:9" + }, + "referencedDeclaration": 6277, + "src": "19551:14:9", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ISignalService_$6277", + "typeString": "contract ISignalService" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3739, + "mutability": "mutable", + "name": "_signal", + "nameLocation": "19598:7:9", + "nodeType": "VariableDeclaration", + "scope": 3779, + "src": "19590:15:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 3738, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "19590:7:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3741, + "mutability": "mutable", + "name": "_chainId", + "nameLocation": "19622:8:9", + "nodeType": "VariableDeclaration", + "scope": 3779, + "src": "19615:15:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + }, + "typeName": { + "id": 3740, + "name": "uint64", + "nodeType": "ElementaryTypeName", + "src": "19615:6:9", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3743, + "mutability": "mutable", + "name": "_proof", + "nameLocation": "19655:6:9", + "nodeType": "VariableDeclaration", + "scope": 3779, + "src": "19640:21:9", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 3742, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "19640:5:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "19541:126:9" + }, + "returnParameters": { + "id": 3747, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3746, + "mutability": "mutable", + "name": "numCacheOps_", + "nameLocation": "19708:12:9", + "nodeType": "VariableDeclaration", + "scope": 3779, + "src": "19701:19:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + }, + "typeName": { + "id": 3745, + "name": "uint32", + "nodeType": "ElementaryTypeName", + "src": "19701:6:9", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + }, + "visibility": "internal" + } + ], + "src": "19700:21:9" + }, + "scope": 4009, + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "private" + }, + { + "id": 3789, + "nodeType": "FunctionDefinition", + "src": "20145:100:9", + "nodes": [], + "body": { + "id": 3788, + "nodeType": "Block", + "src": "20216:29:9", + "nodes": [], + "statements": [ + { + "expression": { + "id": 3786, + "name": "__ctx", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2545, + "src": "20233:5:9", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Context_$4053_storage", + "typeString": "struct IBridge.Context storage ref" + } + }, + "functionReturnParameters": 3785, + "id": 3787, + "nodeType": "Return", + "src": "20226:12:9" + } + ] + }, + "documentation": { + "id": 3780, + "nodeType": "StructuredDocumentation", + "src": "20054:86:9", + "text": "@notice Loads and returns the call context.\n @return ctx_ The call context." + }, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_loadContext", + "nameLocation": "20154:12:9", + "parameters": { + "id": 3781, + "nodeType": "ParameterList", + "parameters": [], + "src": "20166:2:9" + }, + "returnParameters": { + "id": 3785, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3784, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 3789, + "src": "20200:14:9", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Context_$4053_memory_ptr", + "typeString": "struct IBridge.Context" + }, + "typeName": { + "id": 3783, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 3782, + "name": "Context", + "nameLocations": [ + "20200:7:9" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 4053, + "src": "20200:7:9" + }, + "referencedDeclaration": 4053, + "src": "20200:7:9", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Context_$4053_storage_ptr", + "typeString": "struct IBridge.Context" + } + }, + "visibility": "internal" + } + ], + "src": "20199:16:9" + }, + "scope": 4009, + "stateMutability": "view", + "virtual": true, + "visibility": "internal" + }, + { + "id": 3826, + "nodeType": "FunctionDefinition", + "src": "20628:439:9", + "nodes": [], + "body": { + "id": 3825, + "nodeType": "Block", + "src": "20837:230:9", + "nodes": [], + "statements": [ + { + "clauses": [ + { + "block": { + "id": 3818, + "nodeType": "Block", + "src": "20981:36:9", + "statements": [ + { + "expression": { + "hexValue": "74727565", + "id": 3816, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "21002:4:9", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 3803, + "id": 3817, + "nodeType": "Return", + "src": "20995:11:9" + } + ] + }, + "errorName": "", + "id": 3819, + "nodeType": "TryCatchClause", + "src": "20981:36:9" + }, + { + "block": { + "id": 3822, + "nodeType": "Block", + "src": "21024:37:9", + "statements": [ + { + "expression": { + "hexValue": "66616c7365", + "id": 3820, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "21045:5:9", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "functionReturnParameters": 3803, + "id": 3821, + "nodeType": "Return", + "src": "21038:12:9" + } + ] + }, + "errorName": "", + "id": 3823, + "nodeType": "TryCatchClause", + "src": "21018:43:9" + } + ], + "externalCall": { + "arguments": [ + { + "id": 3806, + "name": "_chainId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3797, + "src": "20900:8:9", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + { + "arguments": [ + { + "id": 3808, + "name": "_chainId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3797, + "src": "20918:8:9", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + { + "expression": { + "id": 3809, + "name": "LibNames", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5845, + "src": "20928:8:9", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_LibNames_$5845_$", + "typeString": "type(library LibNames)" + } + }, + "id": 3810, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "20937:8:9", + "memberName": "B_BRIDGE", + "nodeType": "MemberAccess", + "referencedDeclaration": 5796, + "src": "20928:17:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "hexValue": "66616c7365", + "id": 3811, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "20947:5:9", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 3807, + "name": "resolve", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 4899, + 4921 + ], + "referencedDeclaration": 4899, + "src": "20910:7:9", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_uint64_$_t_bytes32_$_t_bool_$returns$_t_address_$", + "typeString": "function (uint64,bytes32,bool) view returns (address)" + } + }, + "id": 3812, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "20910:43:9", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 3813, + "name": "_signal", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3795, + "src": "20955:7:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 3814, + "name": "_proof", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3799, + "src": "20964:6:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + ], + "expression": { + "id": 3804, + "name": "_signalService", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3793, + "src": "20851:14:9", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ISignalService_$6277", + "typeString": "contract ISignalService" + } + }, + "id": 3805, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "20866:20:9", + "memberName": "verifySignalReceived", + "nodeType": "MemberAccess", + "referencedDeclaration": 6258, + "src": "20851:35:9", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_uint64_$_t_address_$_t_bytes32_$_t_bytes_memory_ptr_$returns$__$", + "typeString": "function (uint64,address,bytes32,bytes memory) view external" + } + }, + "id": 3815, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "20851:129:9", + "tryCall": true, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3824, + "nodeType": "TryStatement", + "src": "20847:214:9" + } + ] + }, + "documentation": { + "id": 3790, + "nodeType": "StructuredDocumentation", + "src": "20251:372:9", + "text": "@notice Checks if the signal was received.\n This is the 'readonly' version of _proveSignalReceived.\n @param _signalService The signal service address.\n @param _signal The signal.\n @param _chainId The ID of the chain the signal is stored on.\n @param _proof The merkle inclusion proof.\n @return true if the message was received." + }, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_isSignalReceived", + "nameLocation": "20637:17:9", + "parameters": { + "id": 3800, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3793, + "mutability": "mutable", + "name": "_signalService", + "nameLocation": "20679:14:9", + "nodeType": "VariableDeclaration", + "scope": 3826, + "src": "20664:29:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ISignalService_$6277", + "typeString": "contract ISignalService" + }, + "typeName": { + "id": 3792, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 3791, + "name": "ISignalService", + "nameLocations": [ + "20664:14:9" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 6277, + "src": "20664:14:9" + }, + "referencedDeclaration": 6277, + "src": "20664:14:9", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ISignalService_$6277", + "typeString": "contract ISignalService" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3795, + "mutability": "mutable", + "name": "_signal", + "nameLocation": "20711:7:9", + "nodeType": "VariableDeclaration", + "scope": 3826, + "src": "20703:15:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 3794, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "20703:7:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3797, + "mutability": "mutable", + "name": "_chainId", + "nameLocation": "20735:8:9", + "nodeType": "VariableDeclaration", + "scope": 3826, + "src": "20728:15:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + }, + "typeName": { + "id": 3796, + "name": "uint64", + "nodeType": "ElementaryTypeName", + "src": "20728:6:9", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3799, + "mutability": "mutable", + "name": "_proof", + "nameLocation": "20768:6:9", + "nodeType": "VariableDeclaration", + "scope": 3826, + "src": "20753:21:9", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 3798, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "20753:5:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "20654:126:9" + }, + "returnParameters": { + "id": 3803, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3802, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 3826, + "src": "20827:4:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 3801, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "20827:4:9", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "20826:6:9" + }, + "scope": 4009, + "stateMutability": "view", + "virtual": false, + "visibility": "private" + }, + { + "id": 3844, + "nodeType": "FunctionDefinition", + "src": "21073:167:9", + "nodes": [], + "body": { + "id": 3843, + "nodeType": "Block", + "src": "21150:90:9", + "nodes": [], + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_enum$_Status_$4018", + "typeString": "enum IBridge.Status" + }, + "id": 3838, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "baseExpression": { + "id": 3834, + "name": "messageStatus", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2541, + "src": "21164:13:9", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_enum$_Status_$4018_$", + "typeString": "mapping(bytes32 => enum IBridge.Status)" + } + }, + "id": 3836, + "indexExpression": { + "id": 3835, + "name": "_msgHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3828, + "src": "21178:8:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "21164:23:9", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Status_$4018", + "typeString": "enum IBridge.Status" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "id": 3837, + "name": "_expectedStatus", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3831, + "src": "21191:15:9", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Status_$4018", + "typeString": "enum IBridge.Status" + } + }, + "src": "21164:42:9", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 3842, + "nodeType": "IfStatement", + "src": "21160:73:9", + "trueBody": { + "errorCall": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 3839, + "name": "B_INVALID_STATUS", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2565, + "src": "21215:16:9", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$__$returns$_t_error_$", + "typeString": "function () pure returns (error)" + } + }, + "id": 3840, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "21215:18:9", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_error", + "typeString": "error" + } + }, + "id": 3841, + "nodeType": "RevertStatement", + "src": "21208:25:9" + } + } + ] + }, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_checkStatus", + "nameLocation": "21082:12:9", + "parameters": { + "id": 3832, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3828, + "mutability": "mutable", + "name": "_msgHash", + "nameLocation": "21103:8:9", + "nodeType": "VariableDeclaration", + "scope": 3844, + "src": "21095:16:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 3827, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "21095:7:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3831, + "mutability": "mutable", + "name": "_expectedStatus", + "nameLocation": "21120:15:9", + "nodeType": "VariableDeclaration", + "scope": 3844, + "src": "21113:22:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Status_$4018", + "typeString": "enum IBridge.Status" + }, + "typeName": { + "id": 3830, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 3829, + "name": "Status", + "nameLocations": [ + "21113:6:9" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 4018, + "src": "21113:6:9" + }, + "referencedDeclaration": 4018, + "src": "21113:6:9", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Status_$4018", + "typeString": "enum IBridge.Status" + } + }, + "visibility": "internal" + } + ], + "src": "21094:42:9" + }, + "returnParameters": { + "id": 3833, + "nodeType": "ParameterList", + "parameters": [], + "src": "21150:0:9" + }, + "scope": 4009, + "stateMutability": "view", + "virtual": false, + "visibility": "private" + }, + { + "id": 3907, + "nodeType": "FunctionDefinition", + "src": "21246:521:9", + "nodes": [], + "body": { + "id": 3906, + "nodeType": "Block", + "src": "21418:349:9", + "nodes": [], + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 3861, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 3855, + "name": "_message", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3847, + "src": "21432:8:9", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Message_$4046_calldata_ptr", + "typeString": "struct IBridge.Message calldata" + } + }, + "id": 3856, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "21441:2:9", + "memberName": "to", + "nodeType": "MemberAccess", + "referencedDeclaration": 4041, + "src": "21432:11:9", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "arguments": [ + { + "hexValue": "30", + "id": 3859, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "21455:1:9", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 3858, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "21447:7:9", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 3857, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "21447:7:9", + "typeDescriptions": {} + } + }, + "id": 3860, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "21447:10:9", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "21432:25:9", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 3864, + "nodeType": "IfStatement", + "src": "21428:42:9", + "trueBody": { + "expression": { + "hexValue": "74727565", + "id": 3862, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "21466:4:9", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 3854, + "id": 3863, + "nodeType": "Return", + "src": "21459:11:9" + } + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 3871, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 3865, + "name": "_message", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3847, + "src": "21484:8:9", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Message_$4046_calldata_ptr", + "typeString": "struct IBridge.Message calldata" + } + }, + "id": 3866, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "21493:2:9", + "memberName": "to", + "nodeType": "MemberAccess", + "referencedDeclaration": 4041, + "src": "21484:11:9", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "arguments": [ + { + "id": 3869, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "21507:4:9", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Bridge_$4009", + "typeString": "contract Bridge" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_Bridge_$4009", + "typeString": "contract Bridge" + } + ], + "id": 3868, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "21499:7:9", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 3867, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "21499:7:9", + "typeDescriptions": {} + } + }, + "id": 3870, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "21499:13:9", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "21484:28:9", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 3874, + "nodeType": "IfStatement", + "src": "21480:45:9", + "trueBody": { + "expression": { + "hexValue": "74727565", + "id": 3872, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "21521:4:9", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 3854, + "id": 3873, + "nodeType": "Return", + "src": "21514:11:9" + } + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 3881, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 3875, + "name": "_message", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3847, + "src": "21539:8:9", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Message_$4046_calldata_ptr", + "typeString": "struct IBridge.Message calldata" + } + }, + "id": 3876, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "21548:2:9", + "memberName": "to", + "nodeType": "MemberAccess", + "referencedDeclaration": 4041, + "src": "21539:11:9", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "arguments": [ + { + "id": 3879, + "name": "_signalService", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3850, + "src": "21562:14:9", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ISignalService_$6277", + "typeString": "contract ISignalService" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_ISignalService_$6277", + "typeString": "contract ISignalService" + } + ], + "id": 3878, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "21554:7:9", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 3877, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "21554:7:9", + "typeDescriptions": {} + } + }, + "id": 3880, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "21554:23:9", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "21539:38:9", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 3884, + "nodeType": "IfStatement", + "src": "21535:55:9", + "trueBody": { + "expression": { + "hexValue": "74727565", + "id": 3882, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "21586:4:9", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 3854, + "id": 3883, + "nodeType": "Return", + "src": "21579:11:9" + } + }, + { + "expression": { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 3904, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 3899, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3889, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "expression": { + "id": 3885, + "name": "_message", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3847, + "src": "21608:8:9", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Message_$4046_calldata_ptr", + "typeString": "struct IBridge.Message calldata" + } + }, + "id": 3886, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "21617:4:9", + "memberName": "data", + "nodeType": "MemberAccess", + "referencedDeclaration": 4045, + "src": "21608:13:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + }, + "id": 3887, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "21622:6:9", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "21608:20:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "hexValue": "34", + "id": 3888, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "21632:1:9", + "typeDescriptions": { + "typeIdentifier": "t_rational_4_by_1", + "typeString": "int_const 4" + }, + "value": "4" + }, + "src": "21608:25:9", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "id": 3898, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [ + { + "expression": { + "id": 3892, + "name": "_message", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3847, + "src": "21656:8:9", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Message_$4046_calldata_ptr", + "typeString": "struct IBridge.Message calldata" + } + }, + "id": 3893, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "21665:4:9", + "memberName": "data", + "nodeType": "MemberAccess", + "referencedDeclaration": 4045, + "src": "21656:13:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + ], + "id": 3891, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "21649:6:9", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes4_$", + "typeString": "type(bytes4)" + }, + "typeName": { + "id": 3890, + "name": "bytes4", + "nodeType": "ElementaryTypeName", + "src": "21649:6:9", + "typeDescriptions": {} + } + }, + "id": 3894, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "21649:21:9", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "expression": { + "expression": { + "id": 3895, + "name": "IMessageInvocable", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4172, + "src": "21674:17:9", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IMessageInvocable_$4172_$", + "typeString": "type(contract IMessageInvocable)" + } + }, + "id": 3896, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "21692:19:9", + "memberName": "onMessageInvocation", + "nodeType": "MemberAccess", + "referencedDeclaration": 4171, + "src": "21674:37:9", + "typeDescriptions": { + "typeIdentifier": "t_function_declaration_payable$_t_bytes_calldata_ptr_$returns$__$", + "typeString": "function IMessageInvocable.onMessageInvocation(bytes calldata) payable" + } + }, + "id": 3897, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "21712:8:9", + "memberName": "selector", + "nodeType": "MemberAccess", + "src": "21674:46:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "src": "21649:71:9", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "21608:112:9", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "expression": { + "id": 3900, + "name": "_message", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3847, + "src": "21736:8:9", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Message_$4046_calldata_ptr", + "typeString": "struct IBridge.Message calldata" + } + }, + "id": 3901, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "21745:2:9", + "memberName": "to", + "nodeType": "MemberAccess", + "referencedDeclaration": 4041, + "src": "21736:11:9", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 3902, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "21748:10:9", + "memberName": "isContract", + "nodeType": "MemberAccess", + "referencedDeclaration": 22454, + "src": "21736:22:9", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$attached_to$_t_address_$", + "typeString": "function (address) view returns (bool)" + } + }, + "id": 3903, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "21736:24:9", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "21608:152:9", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 3854, + "id": 3905, + "nodeType": "Return", + "src": "21601:159:9" + } + ] + }, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_unableToInvokeMessageCall", + "nameLocation": "21255:26:9", + "parameters": { + "id": 3851, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3847, + "mutability": "mutable", + "name": "_message", + "nameLocation": "21308:8:9", + "nodeType": "VariableDeclaration", + "scope": 3907, + "src": "21291:25:9", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Message_$4046_calldata_ptr", + "typeString": "struct IBridge.Message" + }, + "typeName": { + "id": 3846, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 3845, + "name": "Message", + "nameLocations": [ + "21291:7:9" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 4046, + "src": "21291:7:9" + }, + "referencedDeclaration": 4046, + "src": "21291:7:9", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Message_$4046_storage_ptr", + "typeString": "struct IBridge.Message" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3850, + "mutability": "mutable", + "name": "_signalService", + "nameLocation": "21341:14:9", + "nodeType": "VariableDeclaration", + "scope": 3907, + "src": "21326:29:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ISignalService_$6277", + "typeString": "contract ISignalService" + }, + "typeName": { + "id": 3849, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 3848, + "name": "ISignalService", + "nameLocations": [ + "21326:14:9" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 6277, + "src": "21326:14:9" + }, + "referencedDeclaration": 6277, + "src": "21326:14:9", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ISignalService_$6277", + "typeString": "contract ISignalService" + } + }, + "visibility": "internal" + } + ], + "src": "21281:80:9" + }, + "returnParameters": { + "id": 3854, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3853, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 3907, + "src": "21408:4:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 3852, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "21408:4:9", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "21407:6:9" + }, + "scope": 4009, + "stateMutability": "view", + "virtual": false, + "visibility": "private" + }, + { + "id": 3933, + "nodeType": "FunctionDefinition", + "src": "21773:277:9", + "nodes": [], + "body": { + "id": 3932, + "nodeType": "Block", + "src": "21860:190:9", + "nodes": [], + "statements": [ + { + "assignments": [ + 3916 + ], + "declarations": [ + { + "constant": false, + "id": 3916, + "mutability": "mutable", + "name": "minGasRequired", + "nameLocation": "21878:14:9", + "nodeType": "VariableDeclaration", + "scope": 3932, + "src": "21870:22:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3915, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "21870:7:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 3922, + "initialValue": { + "arguments": [ + { + "expression": { + "expression": { + "id": 3918, + "name": "_message", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3910, + "src": "21917:8:9", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Message_$4046_calldata_ptr", + "typeString": "struct IBridge.Message calldata" + } + }, + "id": 3919, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "21926:4:9", + "memberName": "data", + "nodeType": "MemberAccess", + "referencedDeclaration": 4045, + "src": "21917:13:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + }, + "id": 3920, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "21931:6:9", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "21917:20:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 3917, + "name": "getMessageMinGasLimit", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3586, + "src": "21895:21:9", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint32_$", + "typeString": "function (uint256) pure returns (uint32)" + } + }, + "id": 3921, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "21895:43:9", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "21870:68:9" + }, + { + "id": 3931, + "nodeType": "UncheckedBlock", + "src": "21948:96:9", + "statements": [ + { + "expression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3929, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [ + { + "expression": { + "id": 3925, + "name": "_message", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3910, + "src": "21998:8:9", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Message_$4046_calldata_ptr", + "typeString": "struct IBridge.Message calldata" + } + }, + "id": 3926, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "22007:8:9", + "memberName": "gasLimit", + "nodeType": "MemberAccess", + "referencedDeclaration": 4029, + "src": "21998:17:9", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + ], + "expression": { + "id": 3923, + "name": "minGasRequired", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3916, + "src": "21979:14:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 3924, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "21994:3:9", + "memberName": "max", + "nodeType": "MemberAccess", + "referencedDeclaration": 5766, + "src": "21979:18:9", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$attached_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 3927, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "21979:37:9", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "id": 3928, + "name": "minGasRequired", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3916, + "src": "22019:14:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "21979:54:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 3914, + "id": 3930, + "nodeType": "Return", + "src": "21972:61:9" + } + ] + } + ] + }, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_invocationGasLimit", + "nameLocation": "21782:19:9", + "parameters": { + "id": 3911, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3910, + "mutability": "mutable", + "name": "_message", + "nameLocation": "21819:8:9", + "nodeType": "VariableDeclaration", + "scope": 3933, + "src": "21802:25:9", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Message_$4046_calldata_ptr", + "typeString": "struct IBridge.Message" + }, + "typeName": { + "id": 3909, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 3908, + "name": "Message", + "nameLocations": [ + "21802:7:9" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 4046, + "src": "21802:7:9" + }, + "referencedDeclaration": 4046, + "src": "21802:7:9", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Message_$4046_storage_ptr", + "typeString": "struct IBridge.Message" + } + }, + "visibility": "internal" + } + ], + "src": "21801:27:9" + }, + "returnParameters": { + "id": 3914, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3913, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 3933, + "src": "21851:7:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3912, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "21851:7:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "21850:9:9" + }, + "scope": 4009, + "stateMutability": "pure", + "virtual": false, + "visibility": "private" + }, + { + "id": 3959, + "nodeType": "FunctionDefinition", + "src": "22056:604:9", + "nodes": [], + "body": { + "id": 3958, + "nodeType": "Block", + "src": "22136:524:9", + "nodes": [], + "statements": [ + { + "id": 3957, + "nodeType": "UncheckedBlock", + "src": "22564:90:9", + "statements": [ + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3954, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3951, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3949, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3947, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3944, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 3942, + "name": "dataLength", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3935, + "src": "22604:10:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "hexValue": "3331", + "id": 3943, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "22617:2:9", + "typeDescriptions": { + "typeIdentifier": "t_rational_31_by_1", + "typeString": "int_const 31" + }, + "value": "31" + }, + "src": "22604:15:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 3945, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "22603:17:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "hexValue": "3332", + "id": 3946, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "22623:2:9", + "typeDescriptions": { + "typeIdentifier": "t_rational_32_by_1", + "typeString": "int_const 32" + }, + "value": "32" + }, + "src": "22603:22:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "hexValue": "3332", + "id": 3948, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "22628:2:9", + "typeDescriptions": { + "typeIdentifier": "t_rational_32_by_1", + "typeString": "int_const 32" + }, + "value": "32" + }, + "src": "22603:27:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "hexValue": "343136", + "id": 3950, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "22633:3:9", + "typeDescriptions": { + "typeIdentifier": "t_rational_416_by_1", + "typeString": "int_const 416" + }, + "value": "416" + }, + "src": "22603:33:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 3952, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "22602:35:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<<", + "rightExpression": { + "hexValue": "34", + "id": 3953, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "22641:1:9", + "typeDescriptions": { + "typeIdentifier": "t_rational_4_by_1", + "typeString": "int_const 4" + }, + "value": "4" + }, + "src": "22602:40:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 3941, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "22595:6:9", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint32_$", + "typeString": "type(uint32)" + }, + "typeName": { + "id": 3940, + "name": "uint32", + "nodeType": "ElementaryTypeName", + "src": "22595:6:9", + "typeDescriptions": {} + } + }, + "id": 3955, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "22595:48:9", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + }, + "functionReturnParameters": 3939, + "id": 3956, + "nodeType": "Return", + "src": "22588:55:9" + } + ] + } + ] + }, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_messageCalldataCost", + "nameLocation": "22065:20:9", + "parameters": { + "id": 3936, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3935, + "mutability": "mutable", + "name": "dataLength", + "nameLocation": "22094:10:9", + "nodeType": "VariableDeclaration", + "scope": 3959, + "src": "22086:18:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3934, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "22086:7:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "22085:20:9" + }, + "returnParameters": { + "id": 3939, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3938, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 3959, + "src": "22128:6:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + }, + "typeName": { + "id": 3937, + "name": "uint32", + "nodeType": "ElementaryTypeName", + "src": "22128:6:9", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + }, + "visibility": "internal" + } + ], + "src": "22127:8:9" + }, + "scope": 4009, + "stateMutability": "pure", + "virtual": false, + "visibility": "private" + }, + { + "id": 3976, + "nodeType": "FunctionDefinition", + "src": "23684:2292:9", + "nodes": [], + "body": { + "id": 3975, + "nodeType": "Block", + "src": "23766:2210:9", + "nodes": [], + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3971, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 3967, + "name": "_gasLeft", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3962, + "src": "25501:8:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3970, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 3968, + "name": "_gasRequested", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3964, + "src": "25512:13:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "hexValue": "3633", + "id": 3969, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "25528:2:9", + "typeDescriptions": { + "typeIdentifier": "t_rational_63_by_1", + "typeString": "int_const 63" + }, + "value": "63" + }, + "src": "25512:18:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "25501:29:9", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 3974, + "nodeType": "IfStatement", + "src": "25497:473:9", + "trueBody": { + "id": 3973, + "nodeType": "Block", + "src": "25532:438:9", + "statements": [ + { + "AST": { + "nativeSrc": "25919:41:9", + "nodeType": "YulBlock", + "src": "25919:41:9", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "invalid", + "nativeSrc": "25937:7:9", + "nodeType": "YulIdentifier", + "src": "25937:7:9" + }, + "nativeSrc": "25937:9:9", + "nodeType": "YulFunctionCall", + "src": "25937:9:9" + }, + "nativeSrc": "25937:9:9", + "nodeType": "YulExpressionStatement", + "src": "25937:9:9" + } + ] + }, + "evmVersion": "shanghai", + "externalReferences": [], + "id": 3972, + "nodeType": "InlineAssembly", + "src": "25910:50:9" + } + ] + } + } + ] + }, + "documentation": { + "id": 3960, + "nodeType": "StructuredDocumentation", + "src": "22834:845:9", + "text": "@dev Suggested by OpenZeppelin and copied from\n https://github.com/OpenZeppelin/openzeppelin-contracts/\n blob/83c7e45092dac350b070c421cd2bf7105616cf1a/contracts/\n metatx/ERC2771Forwarder.sol#L327C1-L370C6\n @dev Checks if the requested gas was correctly forwarded to the callee.\n As a consequence of https://eips.ethereum.org/EIPS/eip-150[EIP-150]:\n - At most `gasleft() - floor(gasleft() / 64)` is forwarded to the callee.\n - At least `floor(gasleft() / 64)` is kept in the caller.\n It reverts consuming all the available gas if the forwarded gas is not the requested gas.\n IMPORTANT: The `gasLeft` parameter should be measured exactly at the end of the forwarded\n call.\n Any gas consumed in between will make room for bypassing this check." + }, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_checkForwardedGas", + "nameLocation": "23693:18:9", + "parameters": { + "id": 3965, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3962, + "mutability": "mutable", + "name": "_gasLeft", + "nameLocation": "23720:8:9", + "nodeType": "VariableDeclaration", + "scope": 3976, + "src": "23712:16:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3961, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "23712:7:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3964, + "mutability": "mutable", + "name": "_gasRequested", + "nameLocation": "23738:13:9", + "nodeType": "VariableDeclaration", + "scope": 3976, + "src": "23730:21:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3963, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "23730:7:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "23711:41:9" + }, + "returnParameters": { + "id": 3966, + "nodeType": "ParameterList", + "parameters": [], + "src": "23766:0:9" + }, + "scope": 4009, + "stateMutability": "pure", + "virtual": false, + "visibility": "private" + }, + { + "id": 3990, + "nodeType": "FunctionDefinition", + "src": "25982:130:9", + "nodes": [], + "body": { + "id": 3989, + "nodeType": "Block", + "src": "26038:74:9", + "nodes": [], + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3984, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 3981, + "name": "_chainId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3978, + "src": "26052:8:9", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "expression": { + "id": 3982, + "name": "block", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -4, + "src": "26064:5:9", + "typeDescriptions": { + "typeIdentifier": "t_magic_block", + "typeString": "block" + } + }, + "id": 3983, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "26070:7:9", + "memberName": "chainid", + "nodeType": "MemberAccess", + "src": "26064:13:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "26052:25:9", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 3988, + "nodeType": "IfStatement", + "src": "26048:57:9", + "trueBody": { + "errorCall": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 3985, + "name": "B_INVALID_CHAINID", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2557, + "src": "26086:17:9", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$__$returns$_t_error_$", + "typeString": "function () pure returns (error)" + } + }, + "id": 3986, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "26086:19:9", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_error", + "typeString": "error" + } + }, + "id": 3987, + "nodeType": "RevertStatement", + "src": "26079:26:9" + } + } + ] + }, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_checkSameChain", + "nameLocation": "25991:15:9", + "parameters": { + "id": 3979, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3978, + "mutability": "mutable", + "name": "_chainId", + "nameLocation": "26014:8:9", + "nodeType": "VariableDeclaration", + "scope": 3990, + "src": "26007:15:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + }, + "typeName": { + "id": 3977, + "name": "uint64", + "nodeType": "ElementaryTypeName", + "src": "26007:6:9", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "visibility": "internal" + } + ], + "src": "26006:17:9" + }, + "returnParameters": { + "id": 3980, + "nodeType": "ParameterList", + "parameters": [], + "src": "26038:0:9" + }, + "scope": 4009, + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "id": 4008, + "nodeType": "FunctionDefinition", + "src": "26118:147:9", + "nodes": [], + "body": { + "id": 4007, + "nodeType": "Block", + "src": "26174:91:9", + "nodes": [], + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 4002, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + }, + "id": 3997, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 3995, + "name": "_chainId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3992, + "src": "26188:8:9", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "30", + "id": 3996, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "26200:1:9", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "26188:13:9", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 4001, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 3998, + "name": "_chainId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3992, + "src": "26205:8:9", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "expression": { + "id": 3999, + "name": "block", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -4, + "src": "26217:5:9", + "typeDescriptions": { + "typeIdentifier": "t_magic_block", + "typeString": "block" + } + }, + "id": 4000, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "26223:7:9", + "memberName": "chainid", + "nodeType": "MemberAccess", + "src": "26217:13:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "26205:25:9", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "26188:42:9", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 4006, + "nodeType": "IfStatement", + "src": "26184:74:9", + "trueBody": { + "errorCall": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 4003, + "name": "B_INVALID_CHAINID", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2557, + "src": "26239:17:9", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$__$returns$_t_error_$", + "typeString": "function () pure returns (error)" + } + }, + "id": 4004, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "26239:19:9", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_error", + "typeString": "error" + } + }, + "id": 4005, + "nodeType": "RevertStatement", + "src": "26232:26:9" + } + } + ] + }, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_checkDiffChain", + "nameLocation": "26127:15:9", + "parameters": { + "id": 3993, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3992, + "mutability": "mutable", + "name": "_chainId", + "nameLocation": "26150:8:9", + "nodeType": "VariableDeclaration", + "scope": 4008, + "src": "26143:15:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + }, + "typeName": { + "id": 3991, + "name": "uint64", + "nodeType": "ElementaryTypeName", + "src": "26143:6:9", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "visibility": "internal" + } + ], + "src": "26142:17:9" + }, + "returnParameters": { + "id": 3994, + "nodeType": "ParameterList", + "parameters": [], + "src": "26174:0:9" + }, + "scope": 4009, + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + } + ], + "abstract": false, + "baseContracts": [ + { + "baseName": { + "id": 2464, + "name": "EssentialResolverContract", + "nameLocations": [ + "662:25:9" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 5017, + "src": "662:25:9" + }, + "id": 2465, + "nodeType": "InheritanceSpecifier", + "src": "662:25:9" + }, + { + "baseName": { + "id": 2466, + "name": "IBridge", + "nameLocations": [ + "689:7:9" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 4153, + "src": "689:7:9" + }, + "id": 2467, + "nodeType": "InheritanceSpecifier", + "src": "689:7:9" + } + ], + "canonicalName": "Bridge", + "contractDependencies": [], + "contractKind": "contract", + "documentation": { + "id": 2463, + "nodeType": "StructuredDocumentation", + "src": "394:249:9", + "text": "@title Bridge\n @notice See the documentation for {IBridge}.\n @dev Labeled in address resolver as \"bridge\". Additionally, the code hash for the same address\n on L1 and L2 may be different.\n @custom:security-contact security@taiko.xyz" + }, + "fullyImplemented": true, + "linearizedBaseContracts": [ + 4009, + 4153, + 5017, + 4802, + 11319, + 11452, + 16421, + 11748, + 21013, + 20512, + 20161, + 20171 + ], + "name": "Bridge", + "nameLocation": "652:6:9", + "scope": 4010, + "usedErrors": [ + 2557, + 2559, + 2561, + 2563, + 2565, + 2567, + 2569, + 2571, + 2573, + 2575, + 2577, + 2579, + 4337, + 4339, + 4341, + 4343, + 4345, + 4347, + 5016, + 5441 + ], + "usedEvents": [ + 2499, + 4061, + 4069, + 4330, + 4335, + 11230, + 11337, + 11594, + 20148, + 20155, + 20160 + ] + } + ], + "license": "MIT" + }, + "id": 9 +} \ No newline at end of file diff --git a/shasta/src/l2/abi/SurgeInbox.json b/shasta/src/l2/abi/SurgeInbox.json new file mode 100644 index 00000000..a6dd5209 --- /dev/null +++ b/shasta/src/l2/abi/SurgeInbox.json @@ -0,0 +1,1743 @@ +{ + "abi": [ + { + "type": "constructor", + "inputs": [ + { + "name": "_config", + "type": "tuple", + "internalType": "struct IInbox.Config", + "components": [ + { + "name": "proofVerifier", + "type": "address", + "internalType": "address" + }, + { + "name": "proposerChecker", + "type": "address", + "internalType": "address" + }, + { + "name": "proverWhitelist", + "type": "address", + "internalType": "address" + }, + { + "name": "signalService", + "type": "address", + "internalType": "address" + }, + { + "name": "bondToken", + "type": "address", + "internalType": "address" + }, + { + "name": "minBond", + "type": "uint64", + "internalType": "uint64" + }, + { + "name": "livenessBond", + "type": "uint64", + "internalType": "uint64" + }, + { + "name": "withdrawalDelay", + "type": "uint48", + "internalType": "uint48" + }, + { + "name": "provingWindow", + "type": "uint48", + "internalType": "uint48" + }, + { + "name": "maxProofSubmissionDelay", + "type": "uint48", + "internalType": "uint48" + }, + { + "name": "ringBufferSize", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "basefeeSharingPctg", + "type": "uint8", + "internalType": "uint8" + }, + { + "name": "minForcedInclusionCount", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "forcedInclusionDelay", + "type": "uint16", + "internalType": "uint16" + }, + { + "name": "forcedInclusionFeeInGwei", + "type": "uint64", + "internalType": "uint64" + }, + { + "name": "forcedInclusionFeeDoubleThreshold", + "type": "uint64", + "internalType": "uint64" + }, + { + "name": "minCheckpointDelay", + "type": "uint16", + "internalType": "uint16" + }, + { + "name": "permissionlessInclusionMultiplier", + "type": "uint8", + "internalType": "uint8" + } + ] + } + ], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "acceptOwnership", + "inputs": [], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "activate", + "inputs": [ + { + "name": "_lastPacayaBlockHash", + "type": "bytes32", + "internalType": "bytes32" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "activationTimestamp", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint48", + "internalType": "uint48" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "cancelWithdrawal", + "inputs": [], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "decodeProposeInput", + "inputs": [ + { + "name": "_data", + "type": "bytes", + "internalType": "bytes" + } + ], + "outputs": [ + { + "name": "input_", + "type": "tuple", + "internalType": "struct IInbox.ProposeInput", + "components": [ + { + "name": "deadline", + "type": "uint48", + "internalType": "uint48" + }, + { + "name": "blobReference", + "type": "tuple", + "internalType": "struct LibBlobs.BlobReference", + "components": [ + { + "name": "blobStartIndex", + "type": "uint16", + "internalType": "uint16" + }, + { + "name": "numBlobs", + "type": "uint16", + "internalType": "uint16" + }, + { + "name": "offset", + "type": "uint24", + "internalType": "uint24" + } + ] + }, + { + "name": "numForcedInclusions", + "type": "uint8", + "internalType": "uint8" + } + ] + } + ], + "stateMutability": "pure" + }, + { + "type": "function", + "name": "decodeProveInput", + "inputs": [ + { + "name": "_data", + "type": "bytes", + "internalType": "bytes" + } + ], + "outputs": [ + { + "name": "input_", + "type": "tuple", + "internalType": "struct IInbox.ProveInput", + "components": [ + { + "name": "commitment", + "type": "tuple", + "internalType": "struct IInbox.Commitment", + "components": [ + { + "name": "firstProposalId", + "type": "uint48", + "internalType": "uint48" + }, + { + "name": "firstProposalParentBlockHash", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "lastProposalHash", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "actualProver", + "type": "address", + "internalType": "address" + }, + { + "name": "endBlockNumber", + "type": "uint48", + "internalType": "uint48" + }, + { + "name": "endStateRoot", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "transitions", + "type": "tuple[]", + "internalType": "struct IInbox.Transition[]", + "components": [ + { + "name": "proposer", + "type": "address", + "internalType": "address" + }, + { + "name": "timestamp", + "type": "uint48", + "internalType": "uint48" + }, + { + "name": "blockHash", + "type": "bytes32", + "internalType": "bytes32" + } + ] + } + ] + }, + { + "name": "forceCheckpointSync", + "type": "bool", + "internalType": "bool" + } + ] + } + ], + "stateMutability": "pure" + }, + { + "type": "function", + "name": "deposit", + "inputs": [ + { + "name": "_amount", + "type": "uint64", + "internalType": "uint64" + } + ], + "outputs": [], + "stateMutability": "payable" + }, + { + "type": "function", + "name": "depositTo", + "inputs": [ + { + "name": "_recipient", + "type": "address", + "internalType": "address" + }, + { + "name": "_amount", + "type": "uint64", + "internalType": "uint64" + } + ], + "outputs": [], + "stateMutability": "payable" + }, + { + "type": "function", + "name": "encodeProposeInput", + "inputs": [ + { + "name": "_input", + "type": "tuple", + "internalType": "struct IInbox.ProposeInput", + "components": [ + { + "name": "deadline", + "type": "uint48", + "internalType": "uint48" + }, + { + "name": "blobReference", + "type": "tuple", + "internalType": "struct LibBlobs.BlobReference", + "components": [ + { + "name": "blobStartIndex", + "type": "uint16", + "internalType": "uint16" + }, + { + "name": "numBlobs", + "type": "uint16", + "internalType": "uint16" + }, + { + "name": "offset", + "type": "uint24", + "internalType": "uint24" + } + ] + }, + { + "name": "numForcedInclusions", + "type": "uint8", + "internalType": "uint8" + } + ] + } + ], + "outputs": [ + { + "name": "encoded_", + "type": "bytes", + "internalType": "bytes" + } + ], + "stateMutability": "pure" + }, + { + "type": "function", + "name": "encodeProveInput", + "inputs": [ + { + "name": "_input", + "type": "tuple", + "internalType": "struct IInbox.ProveInput", + "components": [ + { + "name": "commitment", + "type": "tuple", + "internalType": "struct IInbox.Commitment", + "components": [ + { + "name": "firstProposalId", + "type": "uint48", + "internalType": "uint48" + }, + { + "name": "firstProposalParentBlockHash", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "lastProposalHash", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "actualProver", + "type": "address", + "internalType": "address" + }, + { + "name": "endBlockNumber", + "type": "uint48", + "internalType": "uint48" + }, + { + "name": "endStateRoot", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "transitions", + "type": "tuple[]", + "internalType": "struct IInbox.Transition[]", + "components": [ + { + "name": "proposer", + "type": "address", + "internalType": "address" + }, + { + "name": "timestamp", + "type": "uint48", + "internalType": "uint48" + }, + { + "name": "blockHash", + "type": "bytes32", + "internalType": "bytes32" + } + ] + } + ] + }, + { + "name": "forceCheckpointSync", + "type": "bool", + "internalType": "bool" + } + ] + } + ], + "outputs": [ + { + "name": "encoded_", + "type": "bytes", + "internalType": "bytes" + } + ], + "stateMutability": "pure" + }, + { + "type": "function", + "name": "getBond", + "inputs": [ + { + "name": "_address", + "type": "address", + "internalType": "address" + } + ], + "outputs": [ + { + "name": "bond_", + "type": "tuple", + "internalType": "struct IBondManager.Bond", + "components": [ + { + "name": "balance", + "type": "uint64", + "internalType": "uint64" + }, + { + "name": "withdrawalRequestedAt", + "type": "uint48", + "internalType": "uint48" + } + ] + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "getConfig", + "inputs": [], + "outputs": [ + { + "name": "config_", + "type": "tuple", + "internalType": "struct IInbox.Config", + "components": [ + { + "name": "proofVerifier", + "type": "address", + "internalType": "address" + }, + { + "name": "proposerChecker", + "type": "address", + "internalType": "address" + }, + { + "name": "proverWhitelist", + "type": "address", + "internalType": "address" + }, + { + "name": "signalService", + "type": "address", + "internalType": "address" + }, + { + "name": "bondToken", + "type": "address", + "internalType": "address" + }, + { + "name": "minBond", + "type": "uint64", + "internalType": "uint64" + }, + { + "name": "livenessBond", + "type": "uint64", + "internalType": "uint64" + }, + { + "name": "withdrawalDelay", + "type": "uint48", + "internalType": "uint48" + }, + { + "name": "provingWindow", + "type": "uint48", + "internalType": "uint48" + }, + { + "name": "maxProofSubmissionDelay", + "type": "uint48", + "internalType": "uint48" + }, + { + "name": "ringBufferSize", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "basefeeSharingPctg", + "type": "uint8", + "internalType": "uint8" + }, + { + "name": "minForcedInclusionCount", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "forcedInclusionDelay", + "type": "uint16", + "internalType": "uint16" + }, + { + "name": "forcedInclusionFeeInGwei", + "type": "uint64", + "internalType": "uint64" + }, + { + "name": "forcedInclusionFeeDoubleThreshold", + "type": "uint64", + "internalType": "uint64" + }, + { + "name": "minCheckpointDelay", + "type": "uint16", + "internalType": "uint16" + }, + { + "name": "permissionlessInclusionMultiplier", + "type": "uint8", + "internalType": "uint8" + } + ] + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "getCoreState", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "tuple", + "internalType": "struct IInbox.CoreState", + "components": [ + { + "name": "nextProposalId", + "type": "uint48", + "internalType": "uint48" + }, + { + "name": "lastProposalBlockId", + "type": "uint48", + "internalType": "uint48" + }, + { + "name": "lastFinalizedProposalId", + "type": "uint48", + "internalType": "uint48" + }, + { + "name": "lastFinalizedTimestamp", + "type": "uint48", + "internalType": "uint48" + }, + { + "name": "lastCheckpointTimestamp", + "type": "uint48", + "internalType": "uint48" + }, + { + "name": "lastFinalizedBlockHash", + "type": "bytes32", + "internalType": "bytes32" + } + ] + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "getCurrentForcedInclusionFee", + "inputs": [], + "outputs": [ + { + "name": "feeInGwei_", + "type": "uint64", + "internalType": "uint64" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "getForcedInclusionState", + "inputs": [], + "outputs": [ + { + "name": "head_", + "type": "uint48", + "internalType": "uint48" + }, + { + "name": "tail_", + "type": "uint48", + "internalType": "uint48" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "getForcedInclusions", + "inputs": [ + { + "name": "_start", + "type": "uint48", + "internalType": "uint48" + }, + { + "name": "_maxCount", + "type": "uint48", + "internalType": "uint48" + } + ], + "outputs": [ + { + "name": "inclusions_", + "type": "tuple[]", + "internalType": "struct IForcedInclusionStore.ForcedInclusion[]", + "components": [ + { + "name": "feeInGwei", + "type": "uint64", + "internalType": "uint64" + }, + { + "name": "blobSlice", + "type": "tuple", + "internalType": "struct LibBlobs.BlobSlice", + "components": [ + { + "name": "blobHashes", + "type": "bytes32[]", + "internalType": "bytes32[]" + }, + { + "name": "offset", + "type": "uint24", + "internalType": "uint24" + }, + { + "name": "timestamp", + "type": "uint48", + "internalType": "uint48" + } + ] + } + ] + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "getProposalHash", + "inputs": [ + { + "name": "_proposalId", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [ + { + "name": "", + "type": "bytes32", + "internalType": "bytes32" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "hashCommitment", + "inputs": [ + { + "name": "_commitment", + "type": "tuple", + "internalType": "struct IInbox.Commitment", + "components": [ + { + "name": "firstProposalId", + "type": "uint48", + "internalType": "uint48" + }, + { + "name": "firstProposalParentBlockHash", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "lastProposalHash", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "actualProver", + "type": "address", + "internalType": "address" + }, + { + "name": "endBlockNumber", + "type": "uint48", + "internalType": "uint48" + }, + { + "name": "endStateRoot", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "transitions", + "type": "tuple[]", + "internalType": "struct IInbox.Transition[]", + "components": [ + { + "name": "proposer", + "type": "address", + "internalType": "address" + }, + { + "name": "timestamp", + "type": "uint48", + "internalType": "uint48" + }, + { + "name": "blockHash", + "type": "bytes32", + "internalType": "bytes32" + } + ] + } + ] + } + ], + "outputs": [ + { + "name": "", + "type": "bytes32", + "internalType": "bytes32" + } + ], + "stateMutability": "pure" + }, + { + "type": "function", + "name": "hashProposal", + "inputs": [ + { + "name": "_proposal", + "type": "tuple", + "internalType": "struct IInbox.Proposal", + "components": [ + { + "name": "id", + "type": "uint48", + "internalType": "uint48" + }, + { + "name": "timestamp", + "type": "uint48", + "internalType": "uint48" + }, + { + "name": "endOfSubmissionWindowTimestamp", + "type": "uint48", + "internalType": "uint48" + }, + { + "name": "proposer", + "type": "address", + "internalType": "address" + }, + { + "name": "parentProposalHash", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "originBlockNumber", + "type": "uint48", + "internalType": "uint48" + }, + { + "name": "originBlockHash", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "basefeeSharingPctg", + "type": "uint8", + "internalType": "uint8" + }, + { + "name": "sources", + "type": "tuple[]", + "internalType": "struct IInbox.DerivationSource[]", + "components": [ + { + "name": "isForcedInclusion", + "type": "bool", + "internalType": "bool" + }, + { + "name": "blobSlice", + "type": "tuple", + "internalType": "struct LibBlobs.BlobSlice", + "components": [ + { + "name": "blobHashes", + "type": "bytes32[]", + "internalType": "bytes32[]" + }, + { + "name": "offset", + "type": "uint24", + "internalType": "uint24" + }, + { + "name": "timestamp", + "type": "uint48", + "internalType": "uint48" + } + ] + } + ] + } + ] + } + ], + "outputs": [ + { + "name": "", + "type": "bytes32", + "internalType": "bytes32" + } + ], + "stateMutability": "pure" + }, + { + "type": "function", + "name": "impl", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "inNonReentrant", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "init", + "inputs": [ + { + "name": "_owner", + "type": "address", + "internalType": "address" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "owner", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "pause", + "inputs": [], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "paused", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "pendingOwner", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "propose", + "inputs": [ + { + "name": "_lookahead", + "type": "bytes", + "internalType": "bytes" + }, + { + "name": "_data", + "type": "bytes", + "internalType": "bytes" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "proposeWithProof", + "inputs": [ + { + "name": "_lookahead", + "type": "bytes", + "internalType": "bytes" + }, + { + "name": "_data", + "type": "bytes", + "internalType": "bytes" + }, + { + "name": "_proof", + "type": "bytes", + "internalType": "bytes" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "prove", + "inputs": [ + { + "name": "_data", + "type": "bytes", + "internalType": "bytes" + }, + { + "name": "_proof", + "type": "bytes", + "internalType": "bytes" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "proxiableUUID", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "bytes32", + "internalType": "bytes32" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "renounceOwnership", + "inputs": [], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "requestWithdrawal", + "inputs": [], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "resolver", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "saveForcedInclusion", + "inputs": [ + { + "name": "_blobReference", + "type": "tuple", + "internalType": "struct LibBlobs.BlobReference", + "components": [ + { + "name": "blobStartIndex", + "type": "uint16", + "internalType": "uint16" + }, + { + "name": "numBlobs", + "type": "uint16", + "internalType": "uint16" + }, + { + "name": "offset", + "type": "uint24", + "internalType": "uint24" + } + ] + } + ], + "outputs": [], + "stateMutability": "payable" + }, + { + "type": "function", + "name": "transferOwnership", + "inputs": [ + { + "name": "newOwner", + "type": "address", + "internalType": "address" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "unpause", + "inputs": [], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "upgradeTo", + "inputs": [ + { + "name": "newImplementation", + "type": "address", + "internalType": "address" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "upgradeToAndCall", + "inputs": [ + { + "name": "newImplementation", + "type": "address", + "internalType": "address" + }, + { + "name": "data", + "type": "bytes", + "internalType": "bytes" + } + ], + "outputs": [], + "stateMutability": "payable" + }, + { + "type": "function", + "name": "withdraw", + "inputs": [ + { + "name": "_to", + "type": "address", + "internalType": "address" + }, + { + "name": "_amount", + "type": "uint64", + "internalType": "uint64" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "event", + "name": "AdminChanged", + "inputs": [ + { + "name": "previousAdmin", + "type": "address", + "indexed": false, + "internalType": "address" + }, + { + "name": "newAdmin", + "type": "address", + "indexed": false, + "internalType": "address" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "BeaconUpgraded", + "inputs": [ + { + "name": "beacon", + "type": "address", + "indexed": true, + "internalType": "address" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "BondDeposited", + "inputs": [ + { + "name": "depositor", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "recipient", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "amount", + "type": "uint64", + "indexed": false, + "internalType": "uint64" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "BondWithdrawn", + "inputs": [ + { + "name": "account", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "amount", + "type": "uint64", + "indexed": false, + "internalType": "uint64" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "ForcedInclusionSaved", + "inputs": [ + { + "name": "forcedInclusion", + "type": "tuple", + "indexed": false, + "internalType": "struct IForcedInclusionStore.ForcedInclusion", + "components": [ + { + "name": "feeInGwei", + "type": "uint64", + "internalType": "uint64" + }, + { + "name": "blobSlice", + "type": "tuple", + "internalType": "struct LibBlobs.BlobSlice", + "components": [ + { + "name": "blobHashes", + "type": "bytes32[]", + "internalType": "bytes32[]" + }, + { + "name": "offset", + "type": "uint24", + "internalType": "uint24" + }, + { + "name": "timestamp", + "type": "uint48", + "internalType": "uint48" + } + ] + } + ] + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "InboxActivated", + "inputs": [ + { + "name": "lastPacayaBlockHash", + "type": "bytes32", + "indexed": false, + "internalType": "bytes32" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "Initialized", + "inputs": [ + { + "name": "version", + "type": "uint8", + "indexed": false, + "internalType": "uint8" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "LivenessBondSettled", + "inputs": [ + { + "name": "payer", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "payee", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "livenessBond", + "type": "uint64", + "indexed": false, + "internalType": "uint64" + }, + { + "name": "credited", + "type": "uint64", + "indexed": false, + "internalType": "uint64" + }, + { + "name": "slashed", + "type": "uint64", + "indexed": false, + "internalType": "uint64" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "OwnershipTransferStarted", + "inputs": [ + { + "name": "previousOwner", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "newOwner", + "type": "address", + "indexed": true, + "internalType": "address" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "OwnershipTransferred", + "inputs": [ + { + "name": "previousOwner", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "newOwner", + "type": "address", + "indexed": true, + "internalType": "address" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "Paused", + "inputs": [ + { + "name": "account", + "type": "address", + "indexed": false, + "internalType": "address" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "Proposed", + "inputs": [ + { + "name": "id", + "type": "uint48", + "indexed": true, + "internalType": "uint48" + }, + { + "name": "proposer", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "parentProposalHash", + "type": "bytes32", + "indexed": false, + "internalType": "bytes32" + }, + { + "name": "endOfSubmissionWindowTimestamp", + "type": "uint48", + "indexed": false, + "internalType": "uint48" + }, + { + "name": "basefeeSharingPctg", + "type": "uint8", + "indexed": false, + "internalType": "uint8" + }, + { + "name": "sources", + "type": "tuple[]", + "indexed": false, + "internalType": "struct IInbox.DerivationSource[]", + "components": [ + { + "name": "isForcedInclusion", + "type": "bool", + "internalType": "bool" + }, + { + "name": "blobSlice", + "type": "tuple", + "internalType": "struct LibBlobs.BlobSlice", + "components": [ + { + "name": "blobHashes", + "type": "bytes32[]", + "internalType": "bytes32[]" + }, + { + "name": "offset", + "type": "uint24", + "internalType": "uint24" + }, + { + "name": "timestamp", + "type": "uint48", + "internalType": "uint48" + } + ] + } + ] + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "Proved", + "inputs": [ + { + "name": "firstProposalId", + "type": "uint48", + "indexed": false, + "internalType": "uint48" + }, + { + "name": "firstNewProposalId", + "type": "uint48", + "indexed": false, + "internalType": "uint48" + }, + { + "name": "lastProposalId", + "type": "uint48", + "indexed": false, + "internalType": "uint48" + }, + { + "name": "actualProver", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "checkpointSynced", + "type": "bool", + "indexed": false, + "internalType": "bool" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "Unpaused", + "inputs": [ + { + "name": "account", + "type": "address", + "indexed": false, + "internalType": "address" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "Upgraded", + "inputs": [ + { + "name": "implementation", + "type": "address", + "indexed": true, + "internalType": "address" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "WithdrawalCancelled", + "inputs": [ + { + "name": "account", + "type": "address", + "indexed": true, + "internalType": "address" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "WithdrawalRequested", + "inputs": [ + { + "name": "account", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "withdrawableAt", + "type": "uint48", + "indexed": false, + "internalType": "uint48" + } + ], + "anonymous": false + }, + { + "type": "error", + "name": "ACCESS_DENIED", + "inputs": [] + }, + { + "type": "error", + "name": "ActivationRequired", + "inputs": [] + }, + { + "type": "error", + "name": "BlobNotFound", + "inputs": [] + }, + { + "type": "error", + "name": "CannotProposeInCurrentBlock", + "inputs": [] + }, + { + "type": "error", + "name": "CheckpointDelayHasPassed", + "inputs": [] + }, + { + "type": "error", + "name": "DeadlineExceeded", + "inputs": [] + }, + { + "type": "error", + "name": "ETH_TRANSFER_FAILED", + "inputs": [] + }, + { + "type": "error", + "name": "EmptyBatch", + "inputs": [] + }, + { + "type": "error", + "name": "FUNC_NOT_IMPLEMENTED", + "inputs": [] + }, + { + "type": "error", + "name": "FirstProposalIdTooLarge", + "inputs": [] + }, + { + "type": "error", + "name": "INVALID_PAUSE_STATUS", + "inputs": [] + }, + { + "type": "error", + "name": "IncorrectProposalCount", + "inputs": [] + }, + { + "type": "error", + "name": "InsufficientBond", + "inputs": [] + }, + { + "type": "error", + "name": "InsufficientETH", + "inputs": [] + }, + { + "type": "error", + "name": "InvalidAddress", + "inputs": [] + }, + { + "type": "error", + "name": "LastProposalAlreadyFinalized", + "inputs": [] + }, + { + "type": "error", + "name": "LastProposalHashMismatch", + "inputs": [] + }, + { + "type": "error", + "name": "LastProposalIdTooLarge", + "inputs": [] + }, + { + "type": "error", + "name": "LengthExceedsUint16", + "inputs": [] + }, + { + "type": "error", + "name": "MustMaintainMinBond", + "inputs": [] + }, + { + "type": "error", + "name": "NoBlobs", + "inputs": [] + }, + { + "type": "error", + "name": "NoBondToWithdraw", + "inputs": [] + }, + { + "type": "error", + "name": "NoWithdrawalRequested", + "inputs": [] + }, + { + "type": "error", + "name": "NotEnoughCapacity", + "inputs": [] + }, + { + "type": "error", + "name": "ParentBlockHashMismatch", + "inputs": [] + }, + { + "type": "error", + "name": "ProverNotWhitelisted", + "inputs": [] + }, + { + "type": "error", + "name": "REENTRANT_CALL", + "inputs": [] + }, + { + "type": "error", + "name": "UnprocessedForcedInclusionIsDue", + "inputs": [] + }, + { + "type": "error", + "name": "WithdrawalAlreadyRequested", + "inputs": [] + }, + { + "type": "error", + "name": "ZERO_ADDRESS", + "inputs": [] + }, + { + "type": "error", + "name": "ZERO_VALUE", + "inputs": [] + } + ] +} \ No newline at end of file diff --git a/shasta/src/l2/bindings.rs b/shasta/src/l2/bindings.rs index 137a38e3..88de71de 100644 --- a/shasta/src/l2/bindings.rs +++ b/shasta/src/l2/bindings.rs @@ -15,3 +15,10 @@ sol!( Bridge, "src/l2/abi/Bridge.json" ); + +sol!( + #[allow(missing_docs)] + #[sol(rpc)] + SurgeInbox, + "src/l2/abi/SurgeInbox.json" +); diff --git a/shasta/src/l2/mod.rs b/shasta/src/l2/mod.rs index 4d6b6c2e..a34cdfda 100644 --- a/shasta/src/l2/mod.rs +++ b/shasta/src/l2/mod.rs @@ -1,4 +1,4 @@ -mod bindings; +pub mod bindings; pub mod execution_layer; pub mod extra_data; pub mod taiko; diff --git a/shasta/src/node/proposal_manager/batch_builder.rs b/shasta/src/node/proposal_manager/batch_builder.rs index 78d336a8..5e340fdc 100644 --- a/shasta/src/node/proposal_manager/batch_builder.rs +++ b/shasta/src/node/proposal_manager/batch_builder.rs @@ -103,6 +103,7 @@ impl BatchBuilder { anchor_block_hash: anchor_block.hash(), anchor_state_root: anchor_block.state_root(), num_forced_inclusion: 0, + checkpoint: Checkpoint::default(), }); } @@ -161,6 +162,19 @@ impl BatchBuilder { } } + // Surge: Sets the proposal checkpoint + // This is called at the end of sequencing + pub fn set_proposal_checkpoint(&mut self, checkpoint: Checkpoint) -> Result<&Proposal, Error> { + if let Some(current_proposal) = self.current_proposal.as_mut() { + current_proposal.checkpoint = checkpoint.clone(); + + debug!("Update proposal checkpoint: {:?}", checkpoint); + Ok(current_proposal) + } else { + Err(anyhow::anyhow!("No current batch")) + } + } + pub fn get_current_proposal_last_block_timestamp(&self) -> Option { self.current_proposal .as_ref() @@ -215,6 +229,7 @@ impl BatchBuilder { anchor_block_hash: anchor_info.hash(), anchor_state_root: anchor_info.state_root(), num_forced_inclusion: 0, + checkpoint: Checkpoint::default(), }); } @@ -330,7 +345,11 @@ impl BatchBuilder { if let Err(err) = ethereum_l1 .execution_layer // TODO send a Proosal to function - .send_batch_to_l1(batch.l2_blocks.clone(), batch.num_forced_inclusion) + .send_batch_to_l1( + batch.l2_blocks.clone(), + batch.num_forced_inclusion, + batch.checkpoint.clone(), + ) .await { if let Some(transaction_error) = err.downcast_ref::() diff --git a/shasta/src/node/proposal_manager/mod.rs b/shasta/src/node/proposal_manager/mod.rs index 77711d88..b873c1e3 100644 --- a/shasta/src/node/proposal_manager/mod.rs +++ b/shasta/src/node/proposal_manager/mod.rs @@ -8,7 +8,10 @@ use crate::{ metrics::Metrics, shared::{l2_block_v2::L2BlockV2Draft, l2_tx_lists::PreBuiltTxList}, }; -use alloy::{consensus::BlockHeader, consensus::Transaction}; +use alloy::{ + consensus::{BlockHeader, Transaction}, + primitives::aliases::U48, +}; use anyhow::Error; use batch_builder::BatchBuilder; use common::{batch_builder::BatchBuilderConfig, shared::l2_slot_info_v2::L2SlotContext}; @@ -19,6 +22,7 @@ use common::{ utils::cancellation_token::CancellationToken, }; use std::sync::Arc; +use taiko_bindings::anchor::ICheckpointStore::Checkpoint; use tracing::{debug, error, info, warn}; use crate::forced_inclusion::ForcedInclusion; @@ -262,7 +266,19 @@ impl BatchManager { .advance_head_to_new_l2_block(payload, l2_slot_context, operation_type) .await { - Ok(preconfed_block) => Ok(preconfed_block), + Ok(preconfed_block) => { + // Surge: set the end state as the checkpoint for the proposal at the end + // of sequencing + if l2_slot_context.end_of_sequencing { + self.batch_builder.set_proposal_checkpoint(Checkpoint { + blockNumber: U48::from(preconfed_block.number), + stateRoot: preconfed_block.state_root, + blockHash: preconfed_block.hash, + })?; + } + + Ok(preconfed_block) + } Err(err) => { error!("Failed to advance head to new L2 block: {}", err); self.remove_last_l2_block(); diff --git a/shasta/src/node/proposal_manager/proposal.rs b/shasta/src/node/proposal_manager/proposal.rs index f59b3989..2f96a827 100644 --- a/shasta/src/node/proposal_manager/proposal.rs +++ b/shasta/src/node/proposal_manager/proposal.rs @@ -20,6 +20,9 @@ pub struct Proposal { pub anchor_block_hash: B256, pub anchor_state_root: B256, pub num_forced_inclusion: u8, + // Surge: the state sync checkpoint that is signed and sent as a proof + // along with the proposal to Surge inbox + pub checkpoint: Checkpoint, } impl Proposal { @@ -177,6 +180,7 @@ mod test { anchor_block_hash: B256::ZERO, anchor_state_root: B256::ZERO, num_forced_inclusion: 0, + checkpoint: Checkpoint::default(), }; proposal.compress(); From 686bac2f3261c9011e2c8fa6258c71222f0c5479 Mon Sep 17 00:00:00 2001 From: AnshuJalan Date: Thu, 22 Jan 2026 15:31:17 +0530 Subject: [PATCH 2/8] chore: add debug --- shasta/src/l1/proposal_tx_builder.rs | 2 + shasta/src/l2/abi/Bridge.json | 26931 ++++++------------------- 2 files changed, 5793 insertions(+), 21140 deletions(-) diff --git a/shasta/src/l1/proposal_tx_builder.rs b/shasta/src/l1/proposal_tx_builder.rs index 9c7576af..5ef3f608 100644 --- a/shasta/src/l1/proposal_tx_builder.rs +++ b/shasta/src/l1/proposal_tx_builder.rs @@ -155,6 +155,8 @@ impl ProposalTxBuilder { _proof: proof_data, }); + tracing::debug!("{:?}", tx.input); + Ok(tx) } diff --git a/shasta/src/l2/abi/Bridge.json b/shasta/src/l2/abi/Bridge.json index f615734a..23a25f9d 100644 --- a/shasta/src/l2/abi/Bridge.json +++ b/shasta/src/l2/abi/Bridge.json @@ -4,159 +4,142 @@ "type": "constructor", "inputs": [ { - "name": "_resolver", + "name": "_authorized", "type": "address", "internalType": "address" }, { - "name": "_signalService", + "name": "_bondToken", "type": "address", "internalType": "address" + }, + { + "name": "_minBond", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "_withdrawalDelay", + "type": "uint48", + "internalType": "uint48" } ], "stateMutability": "nonpayable" }, { "type": "function", - "name": "GAS_OVERHEAD", + "name": "acceptOwnership", + "inputs": [], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "authorized", "inputs": [], "outputs": [ { "name": "", - "type": "uint32", - "internalType": "uint32" + "type": "address", + "internalType": "address" } ], "stateMutability": "view" }, { "type": "function", - "name": "GAS_RESERVE", - "inputs": [], + "name": "bond", + "inputs": [ + { + "name": "account", + "type": "address", + "internalType": "address" + } + ], "outputs": [ { - "name": "", - "type": "uint32", - "internalType": "uint32" + "name": "balance", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "withdrawalRequestedAt", + "type": "uint48", + "internalType": "uint48" } ], "stateMutability": "view" }, { "type": "function", - "name": "RELAYER_MAX_PROOF_BYTES", + "name": "bondToken", "inputs": [], "outputs": [ { "name": "", - "type": "uint256", - "internalType": "uint256" + "type": "address", + "internalType": "contract IERC20" } ], "stateMutability": "view" }, { "type": "function", - "name": "acceptOwnership", + "name": "cancelWithdrawal", "inputs": [], "outputs": [], "stateMutability": "nonpayable" }, { "type": "function", - "name": "context", - "inputs": [], + "name": "creditBond", + "inputs": [ + { + "name": "_address", + "type": "address", + "internalType": "address" + }, + { + "name": "_bond", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "debitBond", + "inputs": [ + { + "name": "_address", + "type": "address", + "internalType": "address" + }, + { + "name": "_bond", + "type": "uint256", + "internalType": "uint256" + } + ], "outputs": [ { - "name": "ctx_", - "type": "tuple", - "internalType": "struct IBridge.Context", - "components": [ - { - "name": "msgHash", - "type": "bytes32", - "internalType": "bytes32" - }, - { - "name": "from", - "type": "address", - "internalType": "address" - }, - { - "name": "srcChainId", - "type": "uint64", - "internalType": "uint64" - } - ] + "name": "amountDebited_", + "type": "uint256", + "internalType": "uint256" } ], - "stateMutability": "view" + "stateMutability": "nonpayable" }, { "type": "function", - "name": "failMessage", + "name": "deposit", "inputs": [ { - "name": "_message", - "type": "tuple", - "internalType": "struct IBridge.Message", - "components": [ - { - "name": "id", - "type": "uint64", - "internalType": "uint64" - }, - { - "name": "fee", - "type": "uint64", - "internalType": "uint64" - }, - { - "name": "gasLimit", - "type": "uint32", - "internalType": "uint32" - }, - { - "name": "from", - "type": "address", - "internalType": "address" - }, - { - "name": "srcChainId", - "type": "uint64", - "internalType": "uint64" - }, - { - "name": "srcOwner", - "type": "address", - "internalType": "address" - }, - { - "name": "destChainId", - "type": "uint64", - "internalType": "uint64" - }, - { - "name": "destOwner", - "type": "address", - "internalType": "address" - }, - { - "name": "to", - "type": "address", - "internalType": "address" - }, - { - "name": "value", - "type": "uint256", - "internalType": "uint256" - }, - { - "name": "data", - "type": "bytes", - "internalType": "bytes" - } - ] + "name": "_amount", + "type": "uint256", + "internalType": "uint256" } ], "outputs": [], @@ -164,98 +147,64 @@ }, { "type": "function", - "name": "getMessageMinGasLimit", + "name": "depositTo", "inputs": [ { - "name": "dataLength", + "name": "_recipient", + "type": "address", + "internalType": "address" + }, + { + "name": "_amount", "type": "uint256", "internalType": "uint256" } ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "getBondBalance", + "inputs": [ + { + "name": "_address", + "type": "address", + "internalType": "address" + } + ], "outputs": [ { "name": "", - "type": "uint32", - "internalType": "uint32" + "type": "uint256", + "internalType": "uint256" } ], - "stateMutability": "pure" + "stateMutability": "view" }, { "type": "function", - "name": "hashMessage", + "name": "hasSufficientBond", "inputs": [ { - "name": "_message", - "type": "tuple", - "internalType": "struct IBridge.Message", - "components": [ - { - "name": "id", - "type": "uint64", - "internalType": "uint64" - }, - { - "name": "fee", - "type": "uint64", - "internalType": "uint64" - }, - { - "name": "gasLimit", - "type": "uint32", - "internalType": "uint32" - }, - { - "name": "from", - "type": "address", - "internalType": "address" - }, - { - "name": "srcChainId", - "type": "uint64", - "internalType": "uint64" - }, - { - "name": "srcOwner", - "type": "address", - "internalType": "address" - }, - { - "name": "destChainId", - "type": "uint64", - "internalType": "uint64" - }, - { - "name": "destOwner", - "type": "address", - "internalType": "address" - }, - { - "name": "to", - "type": "address", - "internalType": "address" - }, - { - "name": "value", - "type": "uint256", - "internalType": "uint256" - }, - { - "name": "data", - "type": "bytes", - "internalType": "bytes" - } - ] + "name": "_address", + "type": "address", + "internalType": "address" + }, + { + "name": "_additionalBond", + "type": "uint256", + "internalType": "uint256" } ], "outputs": [ { "name": "", - "type": "bytes32", - "internalType": "bytes32" + "type": "bool", + "internalType": "bool" } ], - "stateMutability": "pure" + "stateMutability": "view" }, { "type": "function", @@ -298,853 +247,388 @@ }, { "type": "function", - "name": "init2", + "name": "minBond", "inputs": [], - "outputs": [], - "stateMutability": "nonpayable" + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" }, { "type": "function", - "name": "isDestChainEnabled", - "inputs": [ + "name": "owner", + "inputs": [], + "outputs": [ { - "name": "_chainId", - "type": "uint64", - "internalType": "uint64" + "name": "", + "type": "address", + "internalType": "address" } ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "pause", + "inputs": [], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "paused", + "inputs": [], "outputs": [ { - "name": "enabled_", + "name": "", "type": "bool", "internalType": "bool" - }, - { - "name": "destBridge_", - "type": "address", - "internalType": "address" } ], "stateMutability": "view" }, { "type": "function", - "name": "isMessageFailed", - "inputs": [ - { - "name": "_message", - "type": "tuple", - "internalType": "struct IBridge.Message", - "components": [ - { - "name": "id", - "type": "uint64", - "internalType": "uint64" - }, - { - "name": "fee", - "type": "uint64", - "internalType": "uint64" - }, - { - "name": "gasLimit", - "type": "uint32", - "internalType": "uint32" - }, - { - "name": "from", - "type": "address", - "internalType": "address" - }, - { - "name": "srcChainId", - "type": "uint64", - "internalType": "uint64" - }, - { - "name": "srcOwner", - "type": "address", - "internalType": "address" - }, - { - "name": "destChainId", - "type": "uint64", - "internalType": "uint64" - }, - { - "name": "destOwner", - "type": "address", - "internalType": "address" - }, - { - "name": "to", - "type": "address", - "internalType": "address" - }, - { - "name": "value", - "type": "uint256", - "internalType": "uint256" - }, - { - "name": "data", - "type": "bytes", - "internalType": "bytes" - } - ] - }, + "name": "pendingOwner", + "inputs": [], + "outputs": [ { - "name": "_proof", - "type": "bytes", - "internalType": "bytes" + "name": "", + "type": "address", + "internalType": "address" } ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "proxiableUUID", + "inputs": [], "outputs": [ { "name": "", - "type": "bool", - "internalType": "bool" + "type": "bytes32", + "internalType": "bytes32" } ], "stateMutability": "view" }, { "type": "function", - "name": "isMessageReceived", - "inputs": [ - { - "name": "_message", - "type": "tuple", - "internalType": "struct IBridge.Message", - "components": [ - { - "name": "id", - "type": "uint64", - "internalType": "uint64" - }, - { - "name": "fee", - "type": "uint64", - "internalType": "uint64" - }, - { - "name": "gasLimit", - "type": "uint32", - "internalType": "uint32" - }, - { - "name": "from", - "type": "address", - "internalType": "address" - }, - { - "name": "srcChainId", - "type": "uint64", - "internalType": "uint64" - }, - { - "name": "srcOwner", - "type": "address", - "internalType": "address" - }, - { - "name": "destChainId", - "type": "uint64", - "internalType": "uint64" - }, - { - "name": "destOwner", - "type": "address", - "internalType": "address" - }, - { - "name": "to", - "type": "address", - "internalType": "address" - }, - { - "name": "value", - "type": "uint256", - "internalType": "uint256" - }, - { - "name": "data", - "type": "bytes", - "internalType": "bytes" - } - ] - }, - { - "name": "_proof", - "type": "bytes", - "internalType": "bytes" - } - ], - "outputs": [ - { - "name": "", - "type": "bool", - "internalType": "bool" - } - ], - "stateMutability": "view" - }, - { - "type": "function", - "name": "isMessageSent", - "inputs": [ - { - "name": "_message", - "type": "tuple", - "internalType": "struct IBridge.Message", - "components": [ - { - "name": "id", - "type": "uint64", - "internalType": "uint64" - }, - { - "name": "fee", - "type": "uint64", - "internalType": "uint64" - }, - { - "name": "gasLimit", - "type": "uint32", - "internalType": "uint32" - }, - { - "name": "from", - "type": "address", - "internalType": "address" - }, - { - "name": "srcChainId", - "type": "uint64", - "internalType": "uint64" - }, - { - "name": "srcOwner", - "type": "address", - "internalType": "address" - }, - { - "name": "destChainId", - "type": "uint64", - "internalType": "uint64" - }, - { - "name": "destOwner", - "type": "address", - "internalType": "address" - }, - { - "name": "to", - "type": "address", - "internalType": "address" - }, - { - "name": "value", - "type": "uint256", - "internalType": "uint256" - }, - { - "name": "data", - "type": "bytes", - "internalType": "bytes" - } - ] - } - ], - "outputs": [ - { - "name": "", - "type": "bool", - "internalType": "bool" - } - ], - "stateMutability": "view" + "name": "renounceOwnership", + "inputs": [], + "outputs": [], + "stateMutability": "nonpayable" }, { "type": "function", - "name": "messageStatus", - "inputs": [ - { - "name": "msgHash", - "type": "bytes32", - "internalType": "bytes32" - } - ], - "outputs": [ - { - "name": "status", - "type": "uint8", - "internalType": "enum IBridge.Status" - } - ], - "stateMutability": "view" + "name": "requestWithdrawal", + "inputs": [], + "outputs": [], + "stateMutability": "nonpayable" }, { "type": "function", - "name": "nextMessageId", + "name": "resolver", "inputs": [], "outputs": [ { "name": "", - "type": "uint64", - "internalType": "uint64" + "type": "address", + "internalType": "address" } ], "stateMutability": "view" }, { "type": "function", - "name": "owner", - "inputs": [], - "outputs": [ + "name": "transferOwnership", + "inputs": [ { - "name": "", + "name": "newOwner", "type": "address", "internalType": "address" } ], - "stateMutability": "view" - }, - { - "type": "function", - "name": "pause", - "inputs": [], "outputs": [], "stateMutability": "nonpayable" }, { "type": "function", - "name": "paused", + "name": "unpause", "inputs": [], - "outputs": [ - { - "name": "", - "type": "bool", - "internalType": "bool" - } - ], - "stateMutability": "view" + "outputs": [], + "stateMutability": "nonpayable" }, { "type": "function", - "name": "pendingOwner", - "inputs": [], - "outputs": [ + "name": "upgradeTo", + "inputs": [ { - "name": "", + "name": "newImplementation", "type": "address", "internalType": "address" } ], - "stateMutability": "view" + "outputs": [], + "stateMutability": "nonpayable" }, { "type": "function", - "name": "processMessage", + "name": "upgradeToAndCall", "inputs": [ { - "name": "_message", - "type": "tuple", - "internalType": "struct IBridge.Message", - "components": [ - { - "name": "id", - "type": "uint64", - "internalType": "uint64" - }, - { - "name": "fee", - "type": "uint64", - "internalType": "uint64" - }, - { - "name": "gasLimit", - "type": "uint32", - "internalType": "uint32" - }, - { - "name": "from", - "type": "address", - "internalType": "address" - }, - { - "name": "srcChainId", - "type": "uint64", - "internalType": "uint64" - }, - { - "name": "srcOwner", - "type": "address", - "internalType": "address" - }, - { - "name": "destChainId", - "type": "uint64", - "internalType": "uint64" - }, - { - "name": "destOwner", - "type": "address", - "internalType": "address" - }, - { - "name": "to", - "type": "address", - "internalType": "address" - }, - { - "name": "value", - "type": "uint256", - "internalType": "uint256" - }, - { - "name": "data", - "type": "bytes", - "internalType": "bytes" - } - ] + "name": "newImplementation", + "type": "address", + "internalType": "address" }, { - "name": "_proof", + "name": "data", "type": "bytes", "internalType": "bytes" } ], - "outputs": [ + "outputs": [], + "stateMutability": "payable" + }, + { + "type": "function", + "name": "withdraw", + "inputs": [ { - "name": "status_", - "type": "uint8", - "internalType": "enum IBridge.Status" + "name": "_to", + "type": "address", + "internalType": "address" }, { - "name": "reason_", - "type": "uint8", - "internalType": "enum IBridge.StatusReason" + "name": "_amount", + "type": "uint256", + "internalType": "uint256" } ], + "outputs": [], "stateMutability": "nonpayable" }, { "type": "function", - "name": "proxiableUUID", + "name": "withdrawalDelay", "inputs": [], "outputs": [ { "name": "", - "type": "bytes32", - "internalType": "bytes32" + "type": "uint48", + "internalType": "uint48" } ], "stateMutability": "view" }, { - "type": "function", - "name": "recallMessage", + "type": "event", + "name": "AdminChanged", "inputs": [ { - "name": "_message", - "type": "tuple", - "internalType": "struct IBridge.Message", - "components": [ - { - "name": "id", - "type": "uint64", - "internalType": "uint64" - }, - { - "name": "fee", - "type": "uint64", - "internalType": "uint64" - }, - { - "name": "gasLimit", - "type": "uint32", - "internalType": "uint32" - }, - { - "name": "from", - "type": "address", - "internalType": "address" - }, - { - "name": "srcChainId", - "type": "uint64", - "internalType": "uint64" - }, - { - "name": "srcOwner", - "type": "address", - "internalType": "address" - }, - { - "name": "destChainId", - "type": "uint64", - "internalType": "uint64" - }, - { - "name": "destOwner", - "type": "address", - "internalType": "address" - }, - { - "name": "to", - "type": "address", - "internalType": "address" - }, - { - "name": "value", - "type": "uint256", - "internalType": "uint256" - }, - { - "name": "data", - "type": "bytes", - "internalType": "bytes" - } - ] + "name": "previousAdmin", + "type": "address", + "indexed": false, + "internalType": "address" }, { - "name": "_proof", - "type": "bytes", - "internalType": "bytes" + "name": "newAdmin", + "type": "address", + "indexed": false, + "internalType": "address" } ], - "outputs": [], - "stateMutability": "nonpayable" - }, - { - "type": "function", - "name": "renounceOwnership", - "inputs": [], - "outputs": [], - "stateMutability": "nonpayable" + "anonymous": false }, { - "type": "function", - "name": "resolver", - "inputs": [], - "outputs": [ + "type": "event", + "name": "BeaconUpgraded", + "inputs": [ { - "name": "", + "name": "beacon", "type": "address", + "indexed": true, "internalType": "address" } ], - "stateMutability": "view" + "anonymous": false }, { - "type": "function", - "name": "retryMessage", + "type": "event", + "name": "BondCredited", "inputs": [ { - "name": "_message", - "type": "tuple", - "internalType": "struct IBridge.Message", - "components": [ - { - "name": "id", - "type": "uint64", - "internalType": "uint64" - }, - { - "name": "fee", - "type": "uint64", - "internalType": "uint64" - }, - { - "name": "gasLimit", - "type": "uint32", - "internalType": "uint32" - }, - { - "name": "from", - "type": "address", - "internalType": "address" - }, - { - "name": "srcChainId", - "type": "uint64", - "internalType": "uint64" - }, - { - "name": "srcOwner", - "type": "address", - "internalType": "address" - }, - { - "name": "destChainId", - "type": "uint64", - "internalType": "uint64" - }, - { - "name": "destOwner", - "type": "address", - "internalType": "address" - }, - { - "name": "to", - "type": "address", - "internalType": "address" - }, - { - "name": "value", - "type": "uint256", - "internalType": "uint256" - }, - { - "name": "data", - "type": "bytes", - "internalType": "bytes" - } - ] + "name": "account", + "type": "address", + "indexed": true, + "internalType": "address" }, { - "name": "_isLastAttempt", - "type": "bool", - "internalType": "bool" + "name": "amount", + "type": "uint256", + "indexed": false, + "internalType": "uint256" } ], - "outputs": [], - "stateMutability": "nonpayable" + "anonymous": false }, { - "type": "function", - "name": "sendMessage", + "type": "event", + "name": "BondDebited", "inputs": [ { - "name": "_message", - "type": "tuple", - "internalType": "struct IBridge.Message", - "components": [ - { - "name": "id", - "type": "uint64", - "internalType": "uint64" - }, - { - "name": "fee", - "type": "uint64", - "internalType": "uint64" - }, - { - "name": "gasLimit", - "type": "uint32", - "internalType": "uint32" - }, - { - "name": "from", - "type": "address", - "internalType": "address" - }, - { - "name": "srcChainId", - "type": "uint64", - "internalType": "uint64" - }, - { - "name": "srcOwner", - "type": "address", - "internalType": "address" - }, - { - "name": "destChainId", - "type": "uint64", - "internalType": "uint64" - }, - { - "name": "destOwner", - "type": "address", - "internalType": "address" - }, - { - "name": "to", - "type": "address", - "internalType": "address" - }, - { - "name": "value", - "type": "uint256", - "internalType": "uint256" - }, - { - "name": "data", - "type": "bytes", - "internalType": "bytes" - } - ] - } - ], - "outputs": [ - { - "name": "msgHash_", - "type": "bytes32", - "internalType": "bytes32" + "name": "account", + "type": "address", + "indexed": true, + "internalType": "address" }, { - "name": "message_", - "type": "tuple", - "internalType": "struct IBridge.Message", - "components": [ - { - "name": "id", - "type": "uint64", - "internalType": "uint64" - }, - { - "name": "fee", - "type": "uint64", - "internalType": "uint64" - }, - { - "name": "gasLimit", - "type": "uint32", - "internalType": "uint32" - }, - { - "name": "from", - "type": "address", - "internalType": "address" - }, - { - "name": "srcChainId", - "type": "uint64", - "internalType": "uint64" - }, - { - "name": "srcOwner", - "type": "address", - "internalType": "address" - }, - { - "name": "destChainId", - "type": "uint64", - "internalType": "uint64" - }, - { - "name": "destOwner", - "type": "address", - "internalType": "address" - }, - { - "name": "to", - "type": "address", - "internalType": "address" - }, - { - "name": "value", - "type": "uint256", - "internalType": "uint256" - }, - { - "name": "data", - "type": "bytes", - "internalType": "bytes" - } - ] + "name": "amount", + "type": "uint256", + "indexed": false, + "internalType": "uint256" } ], - "stateMutability": "payable" + "anonymous": false }, { - "type": "function", - "name": "signalForFailedMessage", + "type": "event", + "name": "BondDeposited", "inputs": [ { - "name": "_msgHash", - "type": "bytes32", - "internalType": "bytes32" - } - ], - "outputs": [ + "name": "account", + "type": "address", + "indexed": true, + "internalType": "address" + }, { - "name": "", - "type": "bytes32", - "internalType": "bytes32" + "name": "amount", + "type": "uint256", + "indexed": false, + "internalType": "uint256" } ], - "stateMutability": "pure" + "anonymous": false }, { - "type": "function", - "name": "signalService", - "inputs": [], - "outputs": [ + "type": "event", + "name": "BondDepositedFor", + "inputs": [ { - "name": "", + "name": "depositor", "type": "address", - "internalType": "contract ISignalService" + "indexed": true, + "internalType": "address" + }, + { + "name": "recipient", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "amount", + "type": "uint256", + "indexed": false, + "internalType": "uint256" } ], - "stateMutability": "view" + "anonymous": false }, { - "type": "function", - "name": "transferOwnership", + "type": "event", + "name": "BondWithdrawn", "inputs": [ { - "name": "newOwner", + "name": "account", "type": "address", + "indexed": true, "internalType": "address" + }, + { + "name": "amount", + "type": "uint256", + "indexed": false, + "internalType": "uint256" } ], - "outputs": [], - "stateMutability": "nonpayable" + "anonymous": false }, { - "type": "function", - "name": "unpause", - "inputs": [], - "outputs": [], - "stateMutability": "nonpayable" + "type": "event", + "name": "Initialized", + "inputs": [ + { + "name": "version", + "type": "uint8", + "indexed": false, + "internalType": "uint8" + } + ], + "anonymous": false }, { - "type": "function", - "name": "upgradeTo", + "type": "event", + "name": "OwnershipTransferStarted", "inputs": [ { - "name": "newImplementation", + "name": "previousOwner", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "newOwner", "type": "address", + "indexed": true, "internalType": "address" } ], - "outputs": [], - "stateMutability": "nonpayable" + "anonymous": false }, { - "type": "function", - "name": "upgradeToAndCall", + "type": "event", + "name": "OwnershipTransferred", "inputs": [ { - "name": "newImplementation", + "name": "previousOwner", "type": "address", + "indexed": true, "internalType": "address" }, { - "name": "data", - "type": "bytes", - "internalType": "bytes" + "name": "newOwner", + "type": "address", + "indexed": true, + "internalType": "address" } ], - "outputs": [], - "stateMutability": "payable" + "anonymous": false }, { "type": "event", - "name": "AdminChanged", + "name": "Paused", "inputs": [ { - "name": "previousAdmin", + "name": "account", "type": "address", "indexed": false, "internalType": "address" - }, + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "Unpaused", + "inputs": [ { - "name": "newAdmin", + "name": "account", "type": "address", "indexed": false, "internalType": "address" @@ -1154,10 +638,10 @@ }, { "type": "event", - "name": "BeaconUpgraded", + "name": "Upgraded", "inputs": [ { - "name": "beacon", + "name": "implementation", "type": "address", "indexed": true, "internalType": "address" @@ -1167,289 +651,32 @@ }, { "type": "event", - "name": "Initialized", + "name": "WithdrawalCancelled", "inputs": [ { - "name": "version", - "type": "uint8", - "indexed": false, - "internalType": "uint8" + "name": "account", + "type": "address", + "indexed": true, + "internalType": "address" } ], "anonymous": false }, { "type": "event", - "name": "MessageProcessed", + "name": "WithdrawalRequested", "inputs": [ { - "name": "msgHash", - "type": "bytes32", + "name": "account", + "type": "address", "indexed": true, - "internalType": "bytes32" + "internalType": "address" }, { - "name": "message", - "type": "tuple", + "name": "withdrawableAt", + "type": "uint256", "indexed": false, - "internalType": "struct IBridge.Message", - "components": [ - { - "name": "id", - "type": "uint64", - "internalType": "uint64" - }, - { - "name": "fee", - "type": "uint64", - "internalType": "uint64" - }, - { - "name": "gasLimit", - "type": "uint32", - "internalType": "uint32" - }, - { - "name": "from", - "type": "address", - "internalType": "address" - }, - { - "name": "srcChainId", - "type": "uint64", - "internalType": "uint64" - }, - { - "name": "srcOwner", - "type": "address", - "internalType": "address" - }, - { - "name": "destChainId", - "type": "uint64", - "internalType": "uint64" - }, - { - "name": "destOwner", - "type": "address", - "internalType": "address" - }, - { - "name": "to", - "type": "address", - "internalType": "address" - }, - { - "name": "value", - "type": "uint256", - "internalType": "uint256" - }, - { - "name": "data", - "type": "bytes", - "internalType": "bytes" - } - ] - }, - { - "name": "stats", - "type": "tuple", - "indexed": false, - "internalType": "struct Bridge.ProcessingStats", - "components": [ - { - "name": "gasUsedInFeeCalc", - "type": "uint32", - "internalType": "uint32" - }, - { - "name": "proofSize", - "type": "uint32", - "internalType": "uint32" - }, - { - "name": "numCacheOps", - "type": "uint32", - "internalType": "uint32" - }, - { - "name": "processedByRelayer", - "type": "bool", - "internalType": "bool" - } - ] - } - ], - "anonymous": false - }, - { - "type": "event", - "name": "MessageSent", - "inputs": [ - { - "name": "msgHash", - "type": "bytes32", - "indexed": true, - "internalType": "bytes32" - }, - { - "name": "message", - "type": "tuple", - "indexed": false, - "internalType": "struct IBridge.Message", - "components": [ - { - "name": "id", - "type": "uint64", - "internalType": "uint64" - }, - { - "name": "fee", - "type": "uint64", - "internalType": "uint64" - }, - { - "name": "gasLimit", - "type": "uint32", - "internalType": "uint32" - }, - { - "name": "from", - "type": "address", - "internalType": "address" - }, - { - "name": "srcChainId", - "type": "uint64", - "internalType": "uint64" - }, - { - "name": "srcOwner", - "type": "address", - "internalType": "address" - }, - { - "name": "destChainId", - "type": "uint64", - "internalType": "uint64" - }, - { - "name": "destOwner", - "type": "address", - "internalType": "address" - }, - { - "name": "to", - "type": "address", - "internalType": "address" - }, - { - "name": "value", - "type": "uint256", - "internalType": "uint256" - }, - { - "name": "data", - "type": "bytes", - "internalType": "bytes" - } - ] - } - ], - "anonymous": false - }, - { - "type": "event", - "name": "MessageStatusChanged", - "inputs": [ - { - "name": "msgHash", - "type": "bytes32", - "indexed": true, - "internalType": "bytes32" - }, - { - "name": "status", - "type": "uint8", - "indexed": false, - "internalType": "enum IBridge.Status" - } - ], - "anonymous": false - }, - { - "type": "event", - "name": "OwnershipTransferStarted", - "inputs": [ - { - "name": "previousOwner", - "type": "address", - "indexed": true, - "internalType": "address" - }, - { - "name": "newOwner", - "type": "address", - "indexed": true, - "internalType": "address" - } - ], - "anonymous": false - }, - { - "type": "event", - "name": "OwnershipTransferred", - "inputs": [ - { - "name": "previousOwner", - "type": "address", - "indexed": true, - "internalType": "address" - }, - { - "name": "newOwner", - "type": "address", - "indexed": true, - "internalType": "address" - } - ], - "anonymous": false - }, - { - "type": "event", - "name": "Paused", - "inputs": [ - { - "name": "account", - "type": "address", - "indexed": false, - "internalType": "address" - } - ], - "anonymous": false - }, - { - "type": "event", - "name": "Unpaused", - "inputs": [ - { - "name": "account", - "type": "address", - "indexed": false, - "internalType": "address" - } - ], - "anonymous": false - }, - { - "type": "event", - "name": "Upgraded", - "inputs": [ - { - "name": "implementation", - "type": "address", - "indexed": true, - "internalType": "address" + "internalType": "uint256" } ], "anonymous": false @@ -1461,77 +688,37 @@ }, { "type": "error", - "name": "B_INSUFFICIENT_GAS", - "inputs": [] - }, - { - "type": "error", - "name": "B_INVALID_CHAINID", - "inputs": [] - }, - { - "type": "error", - "name": "B_INVALID_CONTEXT", - "inputs": [] - }, - { - "type": "error", - "name": "B_INVALID_FEE", - "inputs": [] - }, - { - "type": "error", - "name": "B_INVALID_GAS_LIMIT", - "inputs": [] - }, - { - "type": "error", - "name": "B_INVALID_STATUS", - "inputs": [] - }, - { - "type": "error", - "name": "B_INVALID_VALUE", - "inputs": [] - }, - { - "type": "error", - "name": "B_MESSAGE_NOT_SENT", - "inputs": [] - }, - { - "type": "error", - "name": "B_PERMISSION_DENIED", + "name": "FUNC_NOT_IMPLEMENTED", "inputs": [] }, { "type": "error", - "name": "B_PROOF_TOO_LARGE", + "name": "INVALID_PAUSE_STATUS", "inputs": [] }, { "type": "error", - "name": "B_RETRY_FAILED", + "name": "InsufficientBond", "inputs": [] }, { "type": "error", - "name": "B_SIGNAL_NOT_RECEIVED", + "name": "InvalidRecipient", "inputs": [] }, { "type": "error", - "name": "ETH_TRANSFER_FAILED", + "name": "MustMaintainMinBond", "inputs": [] }, { "type": "error", - "name": "FUNC_NOT_IMPLEMENTED", + "name": "NoBondToWithdraw", "inputs": [] }, { "type": "error", - "name": "INVALID_PAUSE_STATUS", + "name": "NoWithdrawalRequested", "inputs": [] }, { @@ -1541,7 +728,7 @@ }, { "type": "error", - "name": "RESOLVER_NOT_FOUND", + "name": "WithdrawalAlreadyRequested", "inputs": [] }, { @@ -1556,137 +743,137 @@ } ], "bytecode": { - "object": "0x60e060405230608052348015610013575f5ffd5b5060405161379838038061379883398101604081905261003291610151565b8161003b61007a565b6001600160a01b03811661006257604051634b6f57f560e01b815260040160405180910390fd5b6001600160a01b0390811660a0521660c05250610182565b5f54610100900460ff16156100e55760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b5f5460ff90811614610134575f805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b80516001600160a01b038116811461014c575f5ffd5b919050565b5f5f60408385031215610162575f5ffd5b61016b83610136565b915061017960208401610136565b90509250929050565b60805160a05160c05161357c61021c5f395f8181610439015281816107310152818161085901528181610d0401528181610f0a01528181610f530152818161149401528181611514015281816117b7015281816118bb0152818161194e0152611abb01525f818161022f015261252d01525f81816111e9015281816112290152818161130b0152818161134b01526113c2015261357c5ff3fe6080604052600436106101fc575f3560e01c8063715018a611610113578063a730cdfb1161009d578063d0496d6a1161006d578063d0496d6a146105e2578063d1aaa5df1461062a578063e30c39781461064a578063eefbf17e14610667578063f2fde38b146106a5575f5ffd5b8063a730cdfb14610578578063b8acae0e1461058e578063be880c81146105ad578063c012fa77146105c3575f5ffd5b80638abf6077116100e35780638abf6077146104cb5780638da5cb5b146104df5780638e3881a9146104fc578063913b16cb1461053a5780639efc7a2e14610559575f5ffd5b8063715018a61461045b57806379ba50971461046f5780637cbadfaa146104835780638456cb59146104b7575f5ffd5b80633c6cf4731161019457806352d1902d1161016457806352d1902d146103b65780635862f6e1146103ca5780635c975abb146103e957806360620c6b1461040957806362d0945314610428575f5ffd5b80633c6cf473146103305780633f4ba83a1461036b578063422770fa1461037f5780634f1ef286146103a3575f5ffd5b80631bdb0037116101cf5780631bdb00371461029f5780632035065e146102c05780633075db56146102ed5780633659cfe614610311575f5ffd5b80630432873c1461020057806304f3bcec14610221578063069489a21461026c57806319ab453c14610280575b5f5ffd5b34801561020b575f5ffd5b5061021f61021a3660046129c9565b6106c4565b005b34801561022c575f5ffd5b507f00000000000000000000000000000000000000000000000000000000000000005b6040516001600160a01b0390911681526020015b60405180910390f35b348015610277575f5ffd5b5061021f6108fc565b34801561028b575f5ffd5b5061021f61029a366004612a3b565b6109b3565b6102b26102ad366004612a56565b610a79565b604051610263929190612be2565b3480156102cb575f5ffd5b506102df6102da366004612bfa565b610d8b565b604051610263929190612cb7565b3480156102f8575f5ffd5b506103016111c7565b6040519015158152602001610263565b34801561031c575f5ffd5b5061021f61032b366004612a3b565b6111df565b34801561033b575f5ffd5b5061035e61034a366004612ce2565b60fc6020525f908152604090205460ff1681565b6040516102639190612cf9565b348015610376575f5ffd5b5061021f6112a6565b34801561038a575f5ffd5b5061039562030d4081565b604051908152602001610263565b61021f6103b1366004612dcd565b611301565b3480156103c1575f5ffd5b506103956113b6565b3480156103d5575f5ffd5b506103016103e4366004612bfa565b611468565b3480156103f4575f5ffd5b5061030160c954610100900460ff1660021490565b348015610414575f5ffd5b50610301610423366004612a56565b6114e3565b348015610433575f5ffd5b5061024f7f000000000000000000000000000000000000000000000000000000000000000081565b348015610466575f5ffd5b5061021f6115b7565b34801561047a575f5ffd5b5061021f6115c8565b34801561048e575f5ffd5b506104a261049d366004612ce2565b61163f565b60405163ffffffff9091168152602001610263565b3480156104c2575f5ffd5b5061021f61165d565b3480156104d6575f5ffd5b5061024f6116b2565b3480156104ea575f5ffd5b506033546001600160a01b031661024f565b348015610507575f5ffd5b5061051b610516366004612e2f565b6116c0565b6040805192151583526001600160a01b03909116602083015201610263565b348015610545575f5ffd5b5061021f610554366004612a56565b6116ec565b348015610564575f5ffd5b5061021f610573366004612bfa565b61183a565b348015610583575f5ffd5b506104a26201d4c081565b348015610599575f5ffd5b506103016105a8366004612bfa565b611a8f565b3480156105b8575f5ffd5b506104a2620c350081565b3480156105ce575f5ffd5b506103956105dd366004612f48565b611af6565b3480156105ed575f5ffd5b506105f6611b25565b60408051825181526020808401516001600160a01b031690820152918101516001600160401b031690820152606001610263565b348015610635575f5ffd5b50610395610644366004612ce2565b60031890565b348015610655575f5ffd5b506065546001600160a01b031661024f565b348015610672575f5ffd5b5060fb5461068d90600160401b90046001600160401b031681565b6040516001600160401b039091168152602001610263565b3480156106b0575f5ffd5b5061021f6106bf366004612a3b565b611bcc565b6106d460e0830160c08401612e2f565b6106dd81611c3d565b6106ed60a0840160808501612e2f565b6106f681611c66565b6106fe611ca2565b610706611cd4565b6107106002611d03565b5f61071d6105dd86612f79565b905061072a816001611d19565b5f610755867f0000000000000000000000000000000000000000000000000000000000000000611d6b565b156107a0576107998661012001356188b860405180602001604052805f8152508960e00160208101906107889190612a3b565b6001600160a01b0316929190611e62565b905061081a565b6107b06060870160408801612f84565b63ffffffff1615806107bf5750845b80156107ed57506107d7610100870160e08801612a3b565b6001600160a01b0316336001600160a01b031614155b1561080b576040516372b6e1c360e11b815260040160405180910390fd5b61081786835a5f611e9f565b90505b80156108305761082b826002611fc3565b6108ea565b84156108d157610841826003611fc3565b60405163019b28af60e61b81526003831860048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906366ca2bc0906024016020604051808303815f875af11580156108a7573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108cb9190612f9d565b506108ea565b60405163161e3ead60e01b815260040160405180910390fd5b50506108f66001611d03565b50505050565b610904612080565b5f54600290610100900460ff1615801561092457505f5460ff8083169116105b6109495760405162461bcd60e51b815260040161094090612fb4565b60405180910390fd5b5f805460fb805467ffffffffffffffff1916905560ff82815561010083815561ff001991851661ffff19909316831717169091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a150565b5f54610100900460ff16158080156109d157505f54600160ff909116105b806109ea5750303b1580156109ea57505f5460ff166001145b610a065760405162461bcd60e51b815260040161094090612fb4565b5f805460ff191660011790558015610a27575f805461ff0019166101001790555b610a30826120da565b8015610a75575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b60408051610160810182525f8082526020820181905291810182905260608082018390526080820183905260a0820183905260c0820183905260e0820183905261010082018390526101208201839052610140820152610adf60c0840160a08501612a3b565b610ae881612138565b610af9610100850160e08601612a3b565b610b0281612138565b610b1461012086016101008701612a3b565b610b1d81612138565b610b2d60e0870160c08801612e2f565b610b3681611c66565b610b3e611ca2565b610b46611cd4565b610b506002611d03565b610b606060880160408901612f84565b63ffffffff165f03610ba857610b7c6040880160208901612e2f565b6001600160401b031615610ba35760405163c9f5178760e01b815260040160405180910390fd5b610bd0565b610bb18761215f565b5f03610bd0576040516308c2ad5360e01b815260040160405180910390fd5b5f610be461051660e08a0160c08b01612e2f565b50905080610c0557604051631c6c777560e31b815260040160405180910390fd5b34610c1660408a0160208b01612e2f565b610c2e906001600160401b03166101208b0135613016565b14610c4c57604051634ac2abdf60e11b815260040160405180910390fd5b610c5588612f79565b60fb8054919750600160401b9091046001600160401b0316906008610c7983613029565b82546101009290920a6001600160401b03818102199093169183160217909155908116875233606088015246166080870152610cb486611af6565b9650867fe33fd33b4f45b95b1c196242240c5b5233129d724b578f95b66ce8d8aae9351787604051610ce69190613053565b60405180910390a260405163019b28af60e61b8152600481018890527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906366ca2bc0906024016020604051808303815f875af1158015610d52573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d769190612f9d565b5050610d826001611d03565b50505050915091565b5f5f610d95611ca2565b610d9d611cd4565b610da76002611d03565b5f5a905046610dbc60e0880160c08901612e2f565b6001600160401b031614610de357604051631c6c777560e31b815260040160405180910390fd5b610df360a0870160808801612e2f565b6001600160401b03161580610e1f575046610e1460a0880160808901612e2f565b6001600160401b0316145b15610e3d57604051631c6c777560e31b815260040160405180910390fd5b604080516080810182525f808252602082018190529181018290526060810191909152610e71610100880160e08901612a3b565b6001600160a01b0316331480156060830152610ee057610e976060880160408901612f84565b63ffffffff165f03610ebc576040516372b6e1c360e11b815260040160405180910390fd5b62030d40851115610ee057604051631e3b03c960e01b815260040160405180910390fd5b5f610eed6105dd89612f79565b9050610ef9815f611d19565b63ffffffff86166020830152610f417f000000000000000000000000000000000000000000000000000000000000000082610f3a60a08c0160808d01612e2f565b8a8a6121b2565b63ffffffff1660408301525f610f77897f0000000000000000000000000000000000000000000000000000000000000000611d6b565b15610f9057506002945060019350610120880135610fd7565b5f8360600151610fa0575a610fa9565b610fa98a61215f565b9050610fbb8a84838760600151611e9f565b15610fcc57600296505f9550610fd5565b60019650600295505b505b610fe760408a0160208b01612e2f565b6001600160401b0316156111455761100560408a0160208b01612e2f565b611018906001600160401b031682613016565b90508260600151801561103f575061103660608a0160408b01612f84565b63ffffffff1615155b1561114557604083015163ffffffff16614e20025a61107c6110656101408d018d613065565b6020601f909101819004026101a00160041b919050565b63ffffffff9081168701919091036201d4c00181168086525f9183916110a59183919061225d16565b0390505f6110b960608d0160408e01612f84565b63ffffffff166110cf60408e0160208f01612e2f565b6001600160401b03168302816110e7576110e76130ae565b0490505f48830290505f61112b8e60200160208101906111079190612e2f565b6001600160401b0316848410156111235784840160011c611125565b845b90612272565b9586900395905061113f33826188b8612286565b50505050505b61116d816188b861115d6101008d0160e08e01612a3b565b6001600160a01b03169190612286565b6111778287611fc3565b817f8580f507761043ecdd2bdca084d6fb0109150b3d9842d854d34e3dea6d69387d8a856040516111a9929190613246565b60405180910390a2505050506111bf6001611d03565b935093915050565b5f60026111d660c95460ff1690565b60ff1614905090565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036112275760405162461bcd60e51b81526004016109409061329a565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166112596122c9565b6001600160a01b03161461127f5760405162461bcd60e51b8152600401610940906132e6565b611288816122e4565b604080515f808252602082019092526112a3918391906122ec565b50565b6112ae612456565b6112c260c9805461ff001916610100179055565b6040513381527f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa9060200160405180910390a16112ff335f612487565b565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036113495760405162461bcd60e51b81526004016109409061329a565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661137b6122c9565b6001600160a01b0316146113a15760405162461bcd60e51b8152600401610940906132e6565b6113aa826122e4565b610a75828260016122ec565b5f306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146114555760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c00000000000000006064820152608401610940565b505f5160206135005f395f51905f525b90565b5f4661147a60a0860160808701612e2f565b6001600160401b03161461148f57505f6114dc565b6114d97f00000000000000000000000000000000000000000000000000000000000000006114c26106446105dd88612f79565b6114d260e0880160c08901612e2f565b868661248f565b90505b9392505050565b5f466114f560a0840160808501612e2f565b6001600160401b03161461150a57505f919050565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166332676bc6306115466105dd86612f79565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401602060405180830381865afa15801561158d573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115b19190613332565b92915050565b6115bf612080565b6112ff5f612511565b60655433906001600160a01b031681146116365760405162461bcd60e51b815260206004820152602960248201527f4f776e61626c6532537465703a2063616c6c6572206973206e6f7420746865206044820152683732bb9037bbb732b960b91b6064820152608401610940565b6112a381612511565b5f6115b1620c35006101a06020601f8601819004020160041b61334d565b611665611ca2565b60c9805461ff0019166102001790556040513381527f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2589060200160405180910390a16112ff336001612487565b5f6116bb6122c9565b905090565b5f5f6116d7836562726964676560d01b600161252a565b6001600160a01b038116151594909350915050565b6116fc60e0820160c08301612e2f565b61170581611c3d565b61171560a0830160808401612e2f565b61171e81611c66565b611726611ca2565b61172e611cd4565b6117386002611d03565b611749610100840160e08501612a3b565b6001600160a01b0316336001600160a01b03161461177a576040516372b6e1c360e11b815260040160405180910390fd5b5f6117876105dd85612f79565b9050611794816001611d19565b61179f816003611fc3565b60405163019b28af60e61b81526003821860048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906366ca2bc0906024016020604051808303815f875af1158015611805573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118299190612f9d565b50506118356001611d03565b505050565b61184a60a0840160808501612e2f565b61185381611c3d565b61186360e0850160c08601612e2f565b61186c81611c66565b611874611ca2565b61187c611cd4565b6118866002611d03565b5f6118936105dd87612f79565b905061189f815f611d19565b604051631933b5e360e11b8152306004820152602481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906332676bc690604401602060405180830381865afa158015611908573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061192c9190613332565b6119495760405163ab035ad560e01b815260040160405180910390fd5b6119887f00000000000000000000000000000000000000000000000000000000000000006003831861198160e08a0160c08b01612e2f565b88886121b2565b50611994816004611fc3565b6119bd62bc399d60e11b6119ae6080890160608a01612a3b565b6001600160a01b0316906125cc565b15611a61576119dc81306119d760a08a0160808b01612e2f565b61269c565b6119ec6080870160608801612a3b565b6001600160a01b0316630178733a87610120013588846040518463ffffffff1660e01b8152600401611a1f929190613369565b5f604051808303818588803b158015611a36575f5ffd5b505af1158015611a48573d5f5f3e3d5ffd5b5050505050611a5c5f195f1b5f198061269c565b611a7d565b611a7d6101208701356188b861115d60c08a0160a08b01612a3b565b50611a886001611d03565b5050505050565b5f46611aa160e0860160c08701612e2f565b6001600160401b031614611ab657505f6114dc565b6114d97f0000000000000000000000000000000000000000000000000000000000000000611ae66105dd87612f79565b6114d260a0880160808901612e2f565b5f81604051602001611b08919061338a565b604051602081830303815290604052805190602001209050919050565b604080516060810182525f8082526020820181905291810191909152611b9c604080516060810182525f8082526020820181905291810191909152506040805160608101825260fd54815260fe546001600160a01b0381166020830152600160a01b90046001600160401b03169181019190915290565b80519091501580611bae575080515f19145b1561146557604051635ceed17360e01b815260040160405180910390fd5b611bd4612080565b606580546001600160a01b0383166001600160a01b03199091168117909155611c056033546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b46816001600160401b0316146112a357604051631c6c777560e31b815260040160405180910390fd5b6001600160401b0381161580611c84575046816001600160401b0316145b156112a357604051631c6c777560e31b815260040160405180910390fd5b611cb660c954610100900460ff1660021490565b156112ff5760405163bae6e2a960e01b815260040160405180910390fd5b6002611ce260c95460ff1690565b60ff16036112ff5760405163dfc60d8560e01b815260040160405180910390fd5b60c9805460ff191660ff92909216919091179055565b806004811115611d2b57611d2b612c8f565b5f83815260fc602052604090205460ff166004811115611d4d57611d4d612c8f565b14610a75576040516319d893ad60e21b815260040160405180910390fd5b5f80611d7f61012085016101008601612a3b565b6001600160a01b031603611d95575060016115b1565b30611da861012085016101008601612a3b565b6001600160a01b031603611dbe575060016115b1565b6001600160a01b038216611dda61012085016101008601612a3b565b6001600160a01b031603611df0575060016115b1565b6004611e00610140850185613065565b905010158015611e375750637f07c94760e01b611e21610140850185613065565b611e2a916133c0565b6001600160e01b03191614155b80156114dc57506114dc611e5361012085016101008601612a3b565b6001600160a01b03163b151590565b5f6001600160a01b038516611e8a57604051634c67134d60e11b815260040160405180910390fd5b5f5f835160208501878988f195945050505050565b5f30611eb16080870160608801612a3b565b6001600160a01b031603611ec757611ec76133f8565b610120850135158015611ee75750611ee3610140860186613065565b1590505b15611ef457506001611fbb565b825f03611f0257505f611fbb565b611f2684611f166080880160608901612a3b565b6119d760a0890160808a01612e2f565b5f611f3961012087016101008801612a3b565b90506101208601355f611f50610140890189613065565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92018290525084519495509384935083925090506020850186888cf194505a90508515611faa57611faa81886126f1565b611fb65f19808061269c565b505050505b949350505050565b806004811115611fd557611fd5612c8f565b5f83815260fc602052604090205460ff166004811115611ff757611ff7612c8f565b03612015576040516319d893ad60e21b815260040160405180910390fd5b5f82815260fc60205260409020805482919060ff1916600183600481111561203f5761203f612c8f565b0217905550817f6c51882bc2ed67617f77a1e9b9a25d2caad8448647ecb093b357a603b2575634826040516120749190612cf9565b60405180910390a25050565b6033546001600160a01b031633146112ff5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610940565b5f54610100900460ff166121005760405162461bcd60e51b81526004016109409061340c565b612108612705565b6121266001600160a01b038216156121205781612511565b33612511565b5060c9805461ff001916610100179055565b6001600160a01b0381166112a35760405163538ba4f960e01b815260040160405180910390fd5b5f80612179612172610140850185613065565b905061163f565b63ffffffff169050806121aa6121956060860160408701612f84565b63ffffffff168361225d90919063ffffffff16565b039392505050565b5f856001600160a01b031663910af6ed856121d7876562726964676560d01b5f61252a565b8887876040518663ffffffff1660e01b81526004016121fa959493929190613457565b6020604051808303815f875af1925050508015612234575060408051601f3d908101601f1916820190925261223191810190612f9d565b60015b612251576040516314504c7360e31b815260040160405180910390fd5b90505b95945050505050565b5f81831161226b57816114dc565b5090919050565b5f81831161228057826114dc565b50919050565b815f0361229257505050565b6122ac83838360405180602001604052805f815250611e62565b61183557604051634c67134d60e11b815260040160405180910390fd5b5f5160206135005f395f51905f52546001600160a01b031690565b6112a3612080565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff161561231f576118358361272b565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015612379575060408051601f3d908101601f1916820190925261237691810190612f9d565b60015b6123dc5760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b6064820152608401610940565b5f5160206135005f395f51905f52811461244a5760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b6064820152608401610940565b506118358383836127c6565b61246a60c954610100900460ff1660021490565b6112ff5760405163bae6e2a960e01b815260040160405180910390fd5b610a75612080565b5f856001600160a01b031663ce9d0820856124b4876562726964676560d01b5f61252a565b8887876040518663ffffffff1660e01b81526004016124d7959493929190613457565b5f6040518083038186803b1580156124ed575f5ffd5b505afa9250505080156124fe575060015b61250957505f612254565b506001612254565b606580546001600160a01b03191690556112a3816127ea565b5f7f0000000000000000000000000000000000000000000000000000000000000000604051633632b1fb60e11b81526001600160401b03861660048201526024810185905283151560448201526001600160a01b039190911690636c6563f690606401602060405180830381865afa1580156125a8573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114d99190613498565b6040516001600160e01b0319821660248201525f90819081906001600160a01b0386169060440160408051601f198184030181529181526020820180516001600160e01b03166301ffc9a760e01b1790525161262891906134b3565b5f60405180830381855afa9150503d805f8114612660576040519150601f19603f3d011682016040523d82523d5f602084013e612665565b606091505b5091509150818015612678575080516020145b1561269457808060200190518101906126919190613332565b92505b505092915050565b604080516060810182528481526001600160a01b03909316602084018190526001600160401b03909216920182905260fd9290925560fe8054600160a01b9092026001600160e01b0319909216909217179055565b6126fc603f826134ce565b821015610a7557fe5b5f54610100900460ff166112ff5760405162461bcd60e51b81526004016109409061340c565b6001600160a01b0381163b6127985760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610940565b5f5160206135005f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b6127cf8361283b565b5f825111806127db5750805b15611835576108f6838361287a565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b6128448161272b565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b60606114dc83836040518060600160405280602781526020016135206027913960605f5f856001600160a01b0316856040516128b691906134b3565b5f60405180830381855af49150503d805f81146128ee576040519150601f19603f3d011682016040523d82523d5f602084013e6128f3565b606091505b50915091506129048683838761290e565b9695505050505050565b6060831561297c5782515f03612975576001600160a01b0385163b6129755760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610940565b5081611fbb565b611fbb83838151156129915781518083602001fd5b8060405162461bcd60e51b815260040161094091906134ed565b5f6101608284031215612280575f5ffd5b80151581146112a3575f5ffd5b5f5f604083850312156129da575f5ffd5b82356001600160401b038111156129ef575f5ffd5b6129fb858286016129ab565b9250506020830135612a0c816129bc565b809150509250929050565b6001600160a01b03811681146112a3575f5ffd5b8035612a3681612a17565b919050565b5f60208284031215612a4b575f5ffd5b81356114dc81612a17565b5f60208284031215612a66575f5ffd5b81356001600160401b03811115612a7b575f5ffd5b611fbb848285016129ab565b5f5b83811015612aa1578181015183820152602001612a89565b50505f910152565b5f8151808452612ac0816020860160208601612a87565b601f01601f19169290920160200192915050565b80516001600160401b031682525f6020820151612afc60208501826001600160401b03169052565b506040820151612b14604085018263ffffffff169052565b506060820151612b2f60608501826001600160a01b03169052565b506080820151612b4a60808501826001600160401b03169052565b5060a0820151612b6560a08501826001600160a01b03169052565b5060c0820151612b8060c08501826001600160401b03169052565b5060e0820151612b9b60e08501826001600160a01b03169052565b50610100820151612bb86101008501826001600160a01b03169052565b50610120820151610120840152610140820151610160610140850152611fbb610160850182612aa9565b828152604060208201525f6114d96040830184612ad4565b5f5f5f60408486031215612c0c575f5ffd5b83356001600160401b03811115612c21575f5ffd5b612c2d868287016129ab565b93505060208401356001600160401b03811115612c48575f5ffd5b8401601f81018613612c58575f5ffd5b80356001600160401b03811115612c6d575f5ffd5b866020828401011115612c7e575f5ffd5b939660209190910195509293505050565b634e487b7160e01b5f52602160045260245ffd5b60058110612cb357612cb3612c8f565b9052565b60408101612cc58285612ca3565b60048310612cd557612cd5612c8f565b8260208301529392505050565b5f60208284031215612cf2575f5ffd5b5035919050565b602081016115b18284612ca3565b634e487b7160e01b5f52604160045260245ffd5b60405161016081016001600160401b0381118282101715612d3e57612d3e612d07565b60405290565b5f82601f830112612d53575f5ffd5b81356001600160401b03811115612d6c57612d6c612d07565b604051601f8201601f19908116603f011681016001600160401b0381118282101715612d9a57612d9a612d07565b604052818152838201602001851015612db1575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f5f60408385031215612dde575f5ffd5b8235612de981612a17565b915060208301356001600160401b03811115612e03575f5ffd5b612e0f85828601612d44565b9150509250929050565b80356001600160401b0381168114612a36575f5ffd5b5f60208284031215612e3f575f5ffd5b6114dc82612e19565b803563ffffffff81168114612a36575f5ffd5b5f6101608284031215612e6c575f5ffd5b612e74612d1b565b9050612e7f82612e19565b8152612e8d60208301612e19565b6020820152612e9e60408301612e48565b6040820152612eaf60608301612a2b565b6060820152612ec060808301612e19565b6080820152612ed160a08301612a2b565b60a0820152612ee260c08301612e19565b60c0820152612ef360e08301612a2b565b60e0820152612f056101008301612a2b565b61010082015261012082810135908201526101408201356001600160401b03811115612f2f575f5ffd5b612f3b84828501612d44565b6101408301525092915050565b5f60208284031215612f58575f5ffd5b81356001600160401b03811115612f6d575f5ffd5b611fbb84828501612e5b565b5f6115b13683612e5b565b5f60208284031215612f94575f5ffd5b6114dc82612e48565b5f60208284031215612fad575f5ffd5b5051919050565b6020808252602e908201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160408201526d191e481a5b9a5d1a585b1a5e995960921b606082015260800190565b634e487b7160e01b5f52601160045260245ffd5b808201808211156115b1576115b1613002565b5f6001600160401b0382166001600160401b03810361304a5761304a613002565b60010192915050565b602081525f6114dc6020830184612ad4565b5f5f8335601e1984360301811261307a575f5ffd5b8301803591506001600160401b03821115613093575f5ffd5b6020019150368190038213156130a7575f5ffd5b9250929050565b634e487b7160e01b5f52601260045260245ffd5b5f5f8335601e198436030181126130d7575f5ffd5b83016020810192503590506001600160401b038111156130f5575f5ffd5b8036038213156130a7575f5ffd5b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b6131458261313883612e19565b6001600160401b03169052565b5f61315260208301612e19565b6001600160401b0316602084015261316c60408301612e48565b63ffffffff16604084015261318360608301612a2b565b6001600160a01b0316606084015261319d60808301612e19565b6001600160401b031660808401526131b760a08301612a2b565b6001600160a01b031660a08401526131d160c08301612e19565b6001600160401b031660c08401526131eb60e08301612a2b565b6001600160a01b031660e08401526132066101008301612a2b565b6001600160a01b0316610100840152610120828101359084015261322e6101408301836130c2565b61016061014086015261269161016086018284613103565b60a081525f61325860a083018561312b565b905063ffffffff835116602083015263ffffffff602084015116604083015263ffffffff60408401511660608301526060830151151560808301529392505050565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b5f60208284031215613342575f5ffd5b81516114dc816129bc565b63ffffffff81811683821601908111156115b1576115b1613002565b604081525f61337b604083018561312b565b90508260208301529392505050565b60408152600d60408201526c5441494b4f5f4d45535341474560981b6060820152608060208201525f6114dc6080830184612ad4565b80356001600160e01b031981169060048410156133f1576001600160e01b0319600485900360031b81901b82161691505b5092915050565b634e487b7160e01b5f52600160045260245ffd5b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b6001600160401b038616815260018060a01b0385166020820152836040820152608060608201525f61348d608083018486613103565b979650505050505050565b5f602082840312156134a8575f5ffd5b81516114dc81612a17565b5f82516134c4818460208701612a87565b9190910192915050565b5f826134e857634e487b7160e01b5f52601260045260245ffd5b500490565b602081525f6114dc6020830184612aa956fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220d82c8f7c970681ddfa323cbf4b55420679e492c19c2d89df90bab3191259c47f64736f6c634300081e0033", - "sourceMap": "643:25624:9:-:0;;;1088:4:84;1045:48;;3630:189:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3741:9;4375:22:12;:20;:22::i;:::-;-1:-1:-1;;;;;1688:23:13;;1680:54;;;;-1:-1:-1;;;1680:54:13;;;;;;;;;;;;-1:-1:-1;;;;;1744:22:13;;;;;3766:46:9::1;;::::0;-1:-1:-1;643:25624:9;;5939:280:48;6007:13;;;;;;;6006:14;5998:66;;;;-1:-1:-1;;;5998:66:48;;696:2:150;5998:66:48;;;678:21:150;735:2;715:18;;;708:30;774:34;754:18;;;747:62;-1:-1:-1;;;825:18:150;;;818:37;872:19;;5998:66:48;;;;;;;;6078:12;;6094:15;6078:12;;;:31;6074:139;;6125:12;:30;;-1:-1:-1;;6125:30:48;6140:15;6125:30;;;;;;6174:28;;1044:36:150;;;6174:28:48;;1032:2:150;1017:18;6174:28:48;;;;;;;6074:139;5939:280::o;14:177:150:-;93:13;;-1:-1:-1;;;;;135:31:150;;125:42;;115:70;;181:1;178;171:12;115:70;14:177;;;:::o;196:293::-;275:6;283;336:2;324:9;315:7;311:23;307:32;304:52;;;352:1;349;342:12;304:52;375:40;405:9;375:40;:::i;:::-;365:50;;434:49;479:2;468:9;464:18;434:49;:::i;:::-;424:59;;196:293;;;;;:::o;902:184::-;643:25624:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;", + "object": "0x61014060405230608052348015610014575f5ffd5b50604051611f18380380611f188339810160408190526100339161013f565b61003b610068565b6001600160a01b0393841660c0529190921660e0526101009190915265ffffffffffff1661012052610195565b5f54610100900460ff16156100d35760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b5f5460ff90811614610122575f805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b80516001600160a01b038116811461013a575f5ffd5b919050565b5f5f5f5f60808587031215610152575f5ffd5b61015b85610124565b935061016960208601610124565b925060408501519150606085015165ffffffffffff8116811461018a575f5ffd5b939692955090935050565b60805160a05160c05160e0516101005161012051611ce16102375f395f818161048101528181610d700152610e6201525f81816103ea01528181610baa0152610ea301525f818161050901528181610c0f01528181610f49015261142f01525f81816103480152818161085e0152610c8201525f6101cc01525f818161079e015281816107de015281816109460152818161098601526109fd0152611ce15ff3fe6080604052600436106101ba575f3560e01c806379ba5097116100f2578063b6b55f2511610092578063e30c397811610062578063e30c39781461053f578063f2fde38b1461055c578063f3fef3a31461057b578063ffaad6a51461059a575f5ffd5b8063b6b55f25146104ba578063be32d1f4146104d9578063c28f4392146104f8578063dbaf21451461052b575f5ffd5b80638abf6077116100cd5780638abf6077146104205780638da5cb5b14610434578063a116e48614610451578063a7ab696114610470575f5ffd5b806379ba5097146103c5578063831518b7146103d95780638456cb591461040c575f5ffd5b8063391396de1161015d5780634f1ef286116101385780634f1ef2861461036a57806352d1902d1461037d5780635c975abb14610391578063715018a6146103b1575f5ffd5b8063391396de146103045780633f4ba83a14610323578063456cb7c614610337575f5ffd5b8063247ce85b11610198578063247ce85b1461023e5780633075db561461029457806333613cbe146102b85780633659cfe6146102e5575f5ffd5b806304f3bcec146101be57806319ab453c14610209578063226112801461022a575b5f5ffd5b3480156101c9575f5ffd5b507f00000000000000000000000000000000000000000000000000000000000000005b6040516001600160a01b0390911681526020015b60405180910390f35b348015610214575f5ffd5b50610228610223366004611954565b6105b9565b005b348015610235575f5ffd5b506102286106cb565b348015610249575f5ffd5b50610278610258366004611954565b60fb6020525f90815260409020805460019091015465ffffffffffff1682565b6040805192835265ffffffffffff909116602083015201610200565b34801561029f575f5ffd5b506102a861075d565b6040519015158152602001610200565b3480156102c3575f5ffd5b506102d76102d2366004611954565b610775565b604051908152602001610200565b3480156102f0575f5ffd5b506102286102ff366004611954565b610794565b34801561030f575f5ffd5b506102d761031e36600461196d565b61085b565b34801561032e575f5ffd5b506102286108e3565b348015610342575f5ffd5b506101ec7f000000000000000000000000000000000000000000000000000000000000000081565b6102286103783660046119a9565b61093c565b348015610388575f5ffd5b506102d76109f1565b34801561039c575f5ffd5b506102a860c954610100900460ff1660021490565b3480156103bc575f5ffd5b50610228610aa2565b3480156103d0575f5ffd5b50610228610ab3565b3480156103e4575f5ffd5b506102d77f000000000000000000000000000000000000000000000000000000000000000081565b348015610417575f5ffd5b50610228610b2a565b34801561042b575f5ffd5b506101ec610b7f565b34801561043f575f5ffd5b506033546001600160a01b03166101ec565b34801561045c575f5ffd5b506102a861046b36600461196d565b610b8d565b34801561047b575f5ffd5b506104a37f000000000000000000000000000000000000000000000000000000000000000081565b60405165ffffffffffff9091168152602001610200565b3480156104c5575f5ffd5b506102286104d4366004611a6d565b610bf0565b3480156104e4575f5ffd5b506102286104f336600461196d565b610c80565b348015610503575f5ffd5b506101ec7f000000000000000000000000000000000000000000000000000000000000000081565b348015610536575f5ffd5b50610228610cb9565b34801561054a575f5ffd5b506065546001600160a01b03166101ec565b348015610567575f5ffd5b50610228610576366004611954565b610db2565b348015610586575f5ffd5b5061022861059536600461196d565b610e23565b3480156105a5575f5ffd5b506102286105b436600461196d565b610f03565b5f54610100900460ff16158080156105d757505f54600160ff909116105b806105f05750303b1580156105f057505f5460ff166001145b6106585760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b5f805460ff191660011790558015610679575f805461ff0019166101001790555b61068282610fc5565b80156106c7575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b6106d3611023565b6106dd6002611052565b335f90815260fb60205260409020600181015465ffffffffffff16610715576040516387bdc6a960e01b815260040160405180910390fd5b60018101805465ffffffffffff1916905560405133907fc51fdb96728de385ec7859819e3997bc618362ef0dbca0ad051d856866cda3db905f90a25061075b6001611052565b565b5f600261076c60c95460ff1690565b60ff1614905090565b6001600160a01b0381165f90815260fb60205260408120545b92915050565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036107dc5760405162461bcd60e51b815260040161064f90611a84565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661080e611068565b6001600160a01b0316146108345760405162461bcd60e51b815260040161064f90611ad0565b61083d81611083565b604080515f808252602082019092526108589183919061108b565b50565b5f7f0000000000000000000000000000000000000000000000000000000000000000610886816111f5565b610890848461121e565b915081156108dc57836001600160a01b03167f85f32beeaff2d0019a8d196f06790c9a652191759c46643311344fd38920423c836040516108d391815260200190565b60405180910390a25b5092915050565b6108eb611261565b6108ff60c9805461ff001916610100179055565b6040513381527f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa9060200160405180910390a161075b335f611292565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036109845760405162461bcd60e51b815260040161064f90611a84565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166109b6611068565b6001600160a01b0316146109dc5760405162461bcd60e51b815260040161064f90611ad0565b6109e582611083565b6106c78282600161108b565b5f306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610a905760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c0000000000000000606482015260840161064f565b505f516020611c655f395f51905f5290565b610aaa611296565b61075b5f6112f0565b60655433906001600160a01b03168114610b215760405162461bcd60e51b815260206004820152602960248201527f4f776e61626c6532537465703a2063616c6c6572206973206e6f7420746865206044820152683732bb9037bbb732b960b91b606482015260840161064f565b610858816112f0565b610b32611309565b60c9805461ff0019166102001790556040513381527f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2589060200160405180910390a161075b336001611292565b5f610b88611068565b905090565b6001600160a01b0382165f90815260fb60205260408120610bce837f0000000000000000000000000000000000000000000000000000000000000000611b30565b815410801590610be85750600181015465ffffffffffff16155b949350505050565b610bf8611023565b610c026002611052565b610c376001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001633308461133b565b610c4133826113ac565b60405181815233907f8ed8c6869618197b68315ade66e75ed3906c97b111fa3ab81e5760046825c7db9060200160405180910390a26108586001611052565b7f0000000000000000000000000000000000000000000000000000000000000000610caa816111f5565b610cb483836113ac565b505050565b610cc1611023565b610ccb6002611052565b335f90815260fb602052604090208054610cf857604051634555262b60e01b815260040160405180910390fd5b600181015465ffffffffffff1615610d235760405163fb52063b60e01b815260040160405180910390fd5b60018101805465ffffffffffff4281811665ffffffffffff199093169290921790925533917fe670e4e82118d22a1f9ee18920455ebc958bae26a90a05d31d3378788b1b0e4491610d96917f00000000000000000000000000000000000000000000000000000000000000001690611b30565b60405190815260200160405180910390a25061075b6001611052565b610dba611296565b606580546001600160a01b0383166001600160a01b03199091168117909155610deb6033546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b610e2b611023565b610e356002611052565b335f90815260fb60205260409020600181015465ffffffffffff161580610e9a57506001810154610e8f907f00000000000000000000000000000000000000000000000000000000000000009065ffffffffffff16611b43565b65ffffffffffff1642105b15610eed5780547f000000000000000000000000000000000000000000000000000000000000000090610ece908490611b61565b1015610eed576040516321f68cc160e21b815260040160405180910390fd5b610ef8338484611415565b506106c76001611052565b610f0b611023565b610f156002611052565b6001600160a01b038216610f3c57604051634e46966960e11b815260040160405180910390fd5b610f716001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001633308461133b565b610f7b82826113ac565b6040518181526001600160a01b0383169033907fd723e7d201efb4985d2e17282a1a09e756601f0b4a724d36ea60913ecae4ae9a9060200160405180910390a36106c76001611052565b5f54610100900460ff16610feb5760405162461bcd60e51b815260040161064f90611b74565b610ff361149f565b6110116001600160a01b0382161561100b57816112f0565b336112f0565b5060c9805461ff001916610100179055565b600261103160c95460ff1690565b60ff160361075b5760405163dfc60d8560e01b815260040160405180910390fd5b60c9805460ff191660ff92909216919091179055565b5f516020611c655f395f51905f52546001600160a01b031690565b610858611296565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff16156110be57610cb4836114c5565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611118575060408051601f3d908101601f1916820190925261111591810190611bbf565b60015b61117b5760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b606482015260840161064f565b5f516020611c655f395f51905f5281146111e95760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b606482015260840161064f565b50610cb4838383611560565b336001600160a01b03821614610858576040516395383ea160e01b815260040160405180910390fd5b6001600160a01b0382165f90815260fb60205260408120805483106112495780545f825591506108dc565b8054839250611259908390611b61565b905592915050565b61127560c954610100900460ff1660021490565b61075b5760405163bae6e2a960e01b815260040160405180910390fd5b6106c75b6033546001600160a01b0316331461075b5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161064f565b606580546001600160a01b031916905561085881611584565b61131d60c954610100900460ff1660021490565b1561075b5760405163bae6e2a960e01b815260040160405180910390fd5b6040516001600160a01b03808516602483015283166044820152606481018290526113a69085906323b872dd60e01b906084015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b0319909316929092179091526115d5565b50505050565b6001600160a01b0382165f90815260fb6020526040902080546113d0908390611b30565b81556040518281526001600160a01b038416907f6de6fe586196fa05b73b973026c5fda3968a2933989bff3a0b6bd57644fab6069060200160405180910390a2505050565b5f611420848361121e565b90506114566001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001684836116a8565b836001600160a01b03167f0d41118e36df44efb77a471fc49fb9c0be0406d802ef95520e9fbf606e65b4558260405161149191815260200190565b60405180910390a250505050565b5f54610100900460ff1661075b5760405162461bcd60e51b815260040161064f90611b74565b6001600160a01b0381163b6115325760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840161064f565b5f516020611c655f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b611569836116d8565b5f825111806115755750805b15610cb4576113a68383611717565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b5f611629826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166117439092919063ffffffff16565b905080515f14806116495750808060200190518101906116499190611bd6565b610cb45760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b606482015260840161064f565b6040516001600160a01b038316602482015260448101829052610cb490849063a9059cbb60e01b9060640161136f565b6116e1816114c5565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b606061173c8383604051806060016040528060278152602001611c8560279139611751565b9392505050565b6060610be884845f856117c5565b60605f5f856001600160a01b03168560405161176d9190611c17565b5f60405180830381855af49150503d805f81146117a5576040519150601f19603f3d011682016040523d82523d5f602084013e6117aa565b606091505b50915091506117bb8683838761189c565b9695505050505050565b6060824710156118265760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b606482015260840161064f565b5f5f866001600160a01b031685876040516118419190611c17565b5f6040518083038185875af1925050503d805f811461187b576040519150601f19603f3d011682016040523d82523d5f602084013e611880565b606091505b50915091506118918783838761189c565b979650505050505050565b6060831561190a5782515f03611903576001600160a01b0385163b6119035760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161064f565b5081610be8565b610be8838381511561191f5781518083602001fd5b8060405162461bcd60e51b815260040161064f9190611c32565b80356001600160a01b038116811461194f575f5ffd5b919050565b5f60208284031215611964575f5ffd5b61173c82611939565b5f5f6040838503121561197e575f5ffd5b61198783611939565b946020939093013593505050565b634e487b7160e01b5f52604160045260245ffd5b5f5f604083850312156119ba575f5ffd5b6119c383611939565b9150602083013567ffffffffffffffff8111156119de575f5ffd5b8301601f810185136119ee575f5ffd5b803567ffffffffffffffff811115611a0857611a08611995565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715611a3757611a37611995565b604052818152828201602001871015611a4e575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f60208284031215611a7d575f5ffd5b5035919050565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b634e487b7160e01b5f52601160045260245ffd5b8082018082111561078e5761078e611b1c565b65ffffffffffff818116838216019081111561078e5761078e611b1c565b8181038181111561078e5761078e611b1c565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b5f60208284031215611bcf575f5ffd5b5051919050565b5f60208284031215611be6575f5ffd5b8151801515811461173c575f5ffd5b5f5b83811015611c0f578181015183820152602001611bf7565b50505f910152565b5f8251611c28818460208701611bf5565b9190910192915050565b602081525f8251806020840152611c50816040850160208701611bf5565b601f01601f1916919091016040019291505056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212208631ea18b120dd608cae3a5d1f20512dffdc4afab9092db6c85c4d2fb0413eb864736f6c634300081e0033", + "sourceMap": "498:7572:4:-:0;;;1088:4:84;1045:48;;2108:287:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4375:22:12;:20;:22::i;:::-;-1:-1:-1;;;;;2252:24:4;;;;;2286:30;;;;;;2326:18;;;;;2354:34;;;;498:7572;;5939:280:48;6007:13;;;;;;;6006:14;5998:66;;;;-1:-1:-1;;;5998:66:48;;919:2:150;5998:66:48;;;901:21:150;958:2;938:18;;;931:30;997:34;977:18;;;970:62;-1:-1:-1;;;1048:18:150;;;1041:37;1095:19;;5998:66:48;;;;;;;;6078:12;;6094:15;6078:12;;;:31;6074:139;;6125:12;:30;;-1:-1:-1;;6125:30:48;6140:15;6125:30;;;;;;6174:28;;1267:36:150;;;6174:28:48;;1255:2:150;1240:18;6174:28:48;;;;;;;6074:139;5939:280::o;14:177:150:-;93:13;;-1:-1:-1;;;;;135:31:150;;125:42;;115:70;;181:1;178;171:12;115:70;14:177;;;:::o;196:516::-;292:6;300;308;316;369:3;357:9;348:7;344:23;340:33;337:53;;;386:1;383;376:12;337:53;409:40;439:9;409:40;:::i;:::-;399:50;;468:49;513:2;502:9;498:18;468:49;:::i;:::-;458:59;;557:2;546:9;542:18;536:25;526:35;;604:2;593:9;589:18;583:25;648:14;641:5;637:26;630:5;627:37;617:65;;678:1;675;668:12;617:65;196:516;;;;-1:-1:-1;196:516:150;;-1:-1:-1;;196:516:150:o;1125:184::-;498:7572:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;", "linkReferences": {} }, "deployedBytecode": { - "object": "0x6080604052600436106101fc575f3560e01c8063715018a611610113578063a730cdfb1161009d578063d0496d6a1161006d578063d0496d6a146105e2578063d1aaa5df1461062a578063e30c39781461064a578063eefbf17e14610667578063f2fde38b146106a5575f5ffd5b8063a730cdfb14610578578063b8acae0e1461058e578063be880c81146105ad578063c012fa77146105c3575f5ffd5b80638abf6077116100e35780638abf6077146104cb5780638da5cb5b146104df5780638e3881a9146104fc578063913b16cb1461053a5780639efc7a2e14610559575f5ffd5b8063715018a61461045b57806379ba50971461046f5780637cbadfaa146104835780638456cb59146104b7575f5ffd5b80633c6cf4731161019457806352d1902d1161016457806352d1902d146103b65780635862f6e1146103ca5780635c975abb146103e957806360620c6b1461040957806362d0945314610428575f5ffd5b80633c6cf473146103305780633f4ba83a1461036b578063422770fa1461037f5780634f1ef286146103a3575f5ffd5b80631bdb0037116101cf5780631bdb00371461029f5780632035065e146102c05780633075db56146102ed5780633659cfe614610311575f5ffd5b80630432873c1461020057806304f3bcec14610221578063069489a21461026c57806319ab453c14610280575b5f5ffd5b34801561020b575f5ffd5b5061021f61021a3660046129c9565b6106c4565b005b34801561022c575f5ffd5b507f00000000000000000000000000000000000000000000000000000000000000005b6040516001600160a01b0390911681526020015b60405180910390f35b348015610277575f5ffd5b5061021f6108fc565b34801561028b575f5ffd5b5061021f61029a366004612a3b565b6109b3565b6102b26102ad366004612a56565b610a79565b604051610263929190612be2565b3480156102cb575f5ffd5b506102df6102da366004612bfa565b610d8b565b604051610263929190612cb7565b3480156102f8575f5ffd5b506103016111c7565b6040519015158152602001610263565b34801561031c575f5ffd5b5061021f61032b366004612a3b565b6111df565b34801561033b575f5ffd5b5061035e61034a366004612ce2565b60fc6020525f908152604090205460ff1681565b6040516102639190612cf9565b348015610376575f5ffd5b5061021f6112a6565b34801561038a575f5ffd5b5061039562030d4081565b604051908152602001610263565b61021f6103b1366004612dcd565b611301565b3480156103c1575f5ffd5b506103956113b6565b3480156103d5575f5ffd5b506103016103e4366004612bfa565b611468565b3480156103f4575f5ffd5b5061030160c954610100900460ff1660021490565b348015610414575f5ffd5b50610301610423366004612a56565b6114e3565b348015610433575f5ffd5b5061024f7f000000000000000000000000000000000000000000000000000000000000000081565b348015610466575f5ffd5b5061021f6115b7565b34801561047a575f5ffd5b5061021f6115c8565b34801561048e575f5ffd5b506104a261049d366004612ce2565b61163f565b60405163ffffffff9091168152602001610263565b3480156104c2575f5ffd5b5061021f61165d565b3480156104d6575f5ffd5b5061024f6116b2565b3480156104ea575f5ffd5b506033546001600160a01b031661024f565b348015610507575f5ffd5b5061051b610516366004612e2f565b6116c0565b6040805192151583526001600160a01b03909116602083015201610263565b348015610545575f5ffd5b5061021f610554366004612a56565b6116ec565b348015610564575f5ffd5b5061021f610573366004612bfa565b61183a565b348015610583575f5ffd5b506104a26201d4c081565b348015610599575f5ffd5b506103016105a8366004612bfa565b611a8f565b3480156105b8575f5ffd5b506104a2620c350081565b3480156105ce575f5ffd5b506103956105dd366004612f48565b611af6565b3480156105ed575f5ffd5b506105f6611b25565b60408051825181526020808401516001600160a01b031690820152918101516001600160401b031690820152606001610263565b348015610635575f5ffd5b50610395610644366004612ce2565b60031890565b348015610655575f5ffd5b506065546001600160a01b031661024f565b348015610672575f5ffd5b5060fb5461068d90600160401b90046001600160401b031681565b6040516001600160401b039091168152602001610263565b3480156106b0575f5ffd5b5061021f6106bf366004612a3b565b611bcc565b6106d460e0830160c08401612e2f565b6106dd81611c3d565b6106ed60a0840160808501612e2f565b6106f681611c66565b6106fe611ca2565b610706611cd4565b6107106002611d03565b5f61071d6105dd86612f79565b905061072a816001611d19565b5f610755867f0000000000000000000000000000000000000000000000000000000000000000611d6b565b156107a0576107998661012001356188b860405180602001604052805f8152508960e00160208101906107889190612a3b565b6001600160a01b0316929190611e62565b905061081a565b6107b06060870160408801612f84565b63ffffffff1615806107bf5750845b80156107ed57506107d7610100870160e08801612a3b565b6001600160a01b0316336001600160a01b031614155b1561080b576040516372b6e1c360e11b815260040160405180910390fd5b61081786835a5f611e9f565b90505b80156108305761082b826002611fc3565b6108ea565b84156108d157610841826003611fc3565b60405163019b28af60e61b81526003831860048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906366ca2bc0906024016020604051808303815f875af11580156108a7573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108cb9190612f9d565b506108ea565b60405163161e3ead60e01b815260040160405180910390fd5b50506108f66001611d03565b50505050565b610904612080565b5f54600290610100900460ff1615801561092457505f5460ff8083169116105b6109495760405162461bcd60e51b815260040161094090612fb4565b60405180910390fd5b5f805460fb805467ffffffffffffffff1916905560ff82815561010083815561ff001991851661ffff19909316831717169091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a150565b5f54610100900460ff16158080156109d157505f54600160ff909116105b806109ea5750303b1580156109ea57505f5460ff166001145b610a065760405162461bcd60e51b815260040161094090612fb4565b5f805460ff191660011790558015610a27575f805461ff0019166101001790555b610a30826120da565b8015610a75575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b60408051610160810182525f8082526020820181905291810182905260608082018390526080820183905260a0820183905260c0820183905260e0820183905261010082018390526101208201839052610140820152610adf60c0840160a08501612a3b565b610ae881612138565b610af9610100850160e08601612a3b565b610b0281612138565b610b1461012086016101008701612a3b565b610b1d81612138565b610b2d60e0870160c08801612e2f565b610b3681611c66565b610b3e611ca2565b610b46611cd4565b610b506002611d03565b610b606060880160408901612f84565b63ffffffff165f03610ba857610b7c6040880160208901612e2f565b6001600160401b031615610ba35760405163c9f5178760e01b815260040160405180910390fd5b610bd0565b610bb18761215f565b5f03610bd0576040516308c2ad5360e01b815260040160405180910390fd5b5f610be461051660e08a0160c08b01612e2f565b50905080610c0557604051631c6c777560e31b815260040160405180910390fd5b34610c1660408a0160208b01612e2f565b610c2e906001600160401b03166101208b0135613016565b14610c4c57604051634ac2abdf60e11b815260040160405180910390fd5b610c5588612f79565b60fb8054919750600160401b9091046001600160401b0316906008610c7983613029565b82546101009290920a6001600160401b03818102199093169183160217909155908116875233606088015246166080870152610cb486611af6565b9650867fe33fd33b4f45b95b1c196242240c5b5233129d724b578f95b66ce8d8aae9351787604051610ce69190613053565b60405180910390a260405163019b28af60e61b8152600481018890527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906366ca2bc0906024016020604051808303815f875af1158015610d52573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d769190612f9d565b5050610d826001611d03565b50505050915091565b5f5f610d95611ca2565b610d9d611cd4565b610da76002611d03565b5f5a905046610dbc60e0880160c08901612e2f565b6001600160401b031614610de357604051631c6c777560e31b815260040160405180910390fd5b610df360a0870160808801612e2f565b6001600160401b03161580610e1f575046610e1460a0880160808901612e2f565b6001600160401b0316145b15610e3d57604051631c6c777560e31b815260040160405180910390fd5b604080516080810182525f808252602082018190529181018290526060810191909152610e71610100880160e08901612a3b565b6001600160a01b0316331480156060830152610ee057610e976060880160408901612f84565b63ffffffff165f03610ebc576040516372b6e1c360e11b815260040160405180910390fd5b62030d40851115610ee057604051631e3b03c960e01b815260040160405180910390fd5b5f610eed6105dd89612f79565b9050610ef9815f611d19565b63ffffffff86166020830152610f417f000000000000000000000000000000000000000000000000000000000000000082610f3a60a08c0160808d01612e2f565b8a8a6121b2565b63ffffffff1660408301525f610f77897f0000000000000000000000000000000000000000000000000000000000000000611d6b565b15610f9057506002945060019350610120880135610fd7565b5f8360600151610fa0575a610fa9565b610fa98a61215f565b9050610fbb8a84838760600151611e9f565b15610fcc57600296505f9550610fd5565b60019650600295505b505b610fe760408a0160208b01612e2f565b6001600160401b0316156111455761100560408a0160208b01612e2f565b611018906001600160401b031682613016565b90508260600151801561103f575061103660608a0160408b01612f84565b63ffffffff1615155b1561114557604083015163ffffffff16614e20025a61107c6110656101408d018d613065565b6020601f909101819004026101a00160041b919050565b63ffffffff9081168701919091036201d4c00181168086525f9183916110a59183919061225d16565b0390505f6110b960608d0160408e01612f84565b63ffffffff166110cf60408e0160208f01612e2f565b6001600160401b03168302816110e7576110e76130ae565b0490505f48830290505f61112b8e60200160208101906111079190612e2f565b6001600160401b0316848410156111235784840160011c611125565b845b90612272565b9586900395905061113f33826188b8612286565b50505050505b61116d816188b861115d6101008d0160e08e01612a3b565b6001600160a01b03169190612286565b6111778287611fc3565b817f8580f507761043ecdd2bdca084d6fb0109150b3d9842d854d34e3dea6d69387d8a856040516111a9929190613246565b60405180910390a2505050506111bf6001611d03565b935093915050565b5f60026111d660c95460ff1690565b60ff1614905090565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036112275760405162461bcd60e51b81526004016109409061329a565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166112596122c9565b6001600160a01b03161461127f5760405162461bcd60e51b8152600401610940906132e6565b611288816122e4565b604080515f808252602082019092526112a3918391906122ec565b50565b6112ae612456565b6112c260c9805461ff001916610100179055565b6040513381527f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa9060200160405180910390a16112ff335f612487565b565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036113495760405162461bcd60e51b81526004016109409061329a565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661137b6122c9565b6001600160a01b0316146113a15760405162461bcd60e51b8152600401610940906132e6565b6113aa826122e4565b610a75828260016122ec565b5f306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146114555760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c00000000000000006064820152608401610940565b505f5160206135005f395f51905f525b90565b5f4661147a60a0860160808701612e2f565b6001600160401b03161461148f57505f6114dc565b6114d97f00000000000000000000000000000000000000000000000000000000000000006114c26106446105dd88612f79565b6114d260e0880160c08901612e2f565b868661248f565b90505b9392505050565b5f466114f560a0840160808501612e2f565b6001600160401b03161461150a57505f919050565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166332676bc6306115466105dd86612f79565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401602060405180830381865afa15801561158d573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115b19190613332565b92915050565b6115bf612080565b6112ff5f612511565b60655433906001600160a01b031681146116365760405162461bcd60e51b815260206004820152602960248201527f4f776e61626c6532537465703a2063616c6c6572206973206e6f7420746865206044820152683732bb9037bbb732b960b91b6064820152608401610940565b6112a381612511565b5f6115b1620c35006101a06020601f8601819004020160041b61334d565b611665611ca2565b60c9805461ff0019166102001790556040513381527f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2589060200160405180910390a16112ff336001612487565b5f6116bb6122c9565b905090565b5f5f6116d7836562726964676560d01b600161252a565b6001600160a01b038116151594909350915050565b6116fc60e0820160c08301612e2f565b61170581611c3d565b61171560a0830160808401612e2f565b61171e81611c66565b611726611ca2565b61172e611cd4565b6117386002611d03565b611749610100840160e08501612a3b565b6001600160a01b0316336001600160a01b03161461177a576040516372b6e1c360e11b815260040160405180910390fd5b5f6117876105dd85612f79565b9050611794816001611d19565b61179f816003611fc3565b60405163019b28af60e61b81526003821860048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906366ca2bc0906024016020604051808303815f875af1158015611805573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118299190612f9d565b50506118356001611d03565b505050565b61184a60a0840160808501612e2f565b61185381611c3d565b61186360e0850160c08601612e2f565b61186c81611c66565b611874611ca2565b61187c611cd4565b6118866002611d03565b5f6118936105dd87612f79565b905061189f815f611d19565b604051631933b5e360e11b8152306004820152602481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906332676bc690604401602060405180830381865afa158015611908573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061192c9190613332565b6119495760405163ab035ad560e01b815260040160405180910390fd5b6119887f00000000000000000000000000000000000000000000000000000000000000006003831861198160e08a0160c08b01612e2f565b88886121b2565b50611994816004611fc3565b6119bd62bc399d60e11b6119ae6080890160608a01612a3b565b6001600160a01b0316906125cc565b15611a61576119dc81306119d760a08a0160808b01612e2f565b61269c565b6119ec6080870160608801612a3b565b6001600160a01b0316630178733a87610120013588846040518463ffffffff1660e01b8152600401611a1f929190613369565b5f604051808303818588803b158015611a36575f5ffd5b505af1158015611a48573d5f5f3e3d5ffd5b5050505050611a5c5f195f1b5f198061269c565b611a7d565b611a7d6101208701356188b861115d60c08a0160a08b01612a3b565b50611a886001611d03565b5050505050565b5f46611aa160e0860160c08701612e2f565b6001600160401b031614611ab657505f6114dc565b6114d97f0000000000000000000000000000000000000000000000000000000000000000611ae66105dd87612f79565b6114d260a0880160808901612e2f565b5f81604051602001611b08919061338a565b604051602081830303815290604052805190602001209050919050565b604080516060810182525f8082526020820181905291810191909152611b9c604080516060810182525f8082526020820181905291810191909152506040805160608101825260fd54815260fe546001600160a01b0381166020830152600160a01b90046001600160401b03169181019190915290565b80519091501580611bae575080515f19145b1561146557604051635ceed17360e01b815260040160405180910390fd5b611bd4612080565b606580546001600160a01b0383166001600160a01b03199091168117909155611c056033546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b46816001600160401b0316146112a357604051631c6c777560e31b815260040160405180910390fd5b6001600160401b0381161580611c84575046816001600160401b0316145b156112a357604051631c6c777560e31b815260040160405180910390fd5b611cb660c954610100900460ff1660021490565b156112ff5760405163bae6e2a960e01b815260040160405180910390fd5b6002611ce260c95460ff1690565b60ff16036112ff5760405163dfc60d8560e01b815260040160405180910390fd5b60c9805460ff191660ff92909216919091179055565b806004811115611d2b57611d2b612c8f565b5f83815260fc602052604090205460ff166004811115611d4d57611d4d612c8f565b14610a75576040516319d893ad60e21b815260040160405180910390fd5b5f80611d7f61012085016101008601612a3b565b6001600160a01b031603611d95575060016115b1565b30611da861012085016101008601612a3b565b6001600160a01b031603611dbe575060016115b1565b6001600160a01b038216611dda61012085016101008601612a3b565b6001600160a01b031603611df0575060016115b1565b6004611e00610140850185613065565b905010158015611e375750637f07c94760e01b611e21610140850185613065565b611e2a916133c0565b6001600160e01b03191614155b80156114dc57506114dc611e5361012085016101008601612a3b565b6001600160a01b03163b151590565b5f6001600160a01b038516611e8a57604051634c67134d60e11b815260040160405180910390fd5b5f5f835160208501878988f195945050505050565b5f30611eb16080870160608801612a3b565b6001600160a01b031603611ec757611ec76133f8565b610120850135158015611ee75750611ee3610140860186613065565b1590505b15611ef457506001611fbb565b825f03611f0257505f611fbb565b611f2684611f166080880160608901612a3b565b6119d760a0890160808a01612e2f565b5f611f3961012087016101008801612a3b565b90506101208601355f611f50610140890189613065565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92018290525084519495509384935083925090506020850186888cf194505a90508515611faa57611faa81886126f1565b611fb65f19808061269c565b505050505b949350505050565b806004811115611fd557611fd5612c8f565b5f83815260fc602052604090205460ff166004811115611ff757611ff7612c8f565b03612015576040516319d893ad60e21b815260040160405180910390fd5b5f82815260fc60205260409020805482919060ff1916600183600481111561203f5761203f612c8f565b0217905550817f6c51882bc2ed67617f77a1e9b9a25d2caad8448647ecb093b357a603b2575634826040516120749190612cf9565b60405180910390a25050565b6033546001600160a01b031633146112ff5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610940565b5f54610100900460ff166121005760405162461bcd60e51b81526004016109409061340c565b612108612705565b6121266001600160a01b038216156121205781612511565b33612511565b5060c9805461ff001916610100179055565b6001600160a01b0381166112a35760405163538ba4f960e01b815260040160405180910390fd5b5f80612179612172610140850185613065565b905061163f565b63ffffffff169050806121aa6121956060860160408701612f84565b63ffffffff168361225d90919063ffffffff16565b039392505050565b5f856001600160a01b031663910af6ed856121d7876562726964676560d01b5f61252a565b8887876040518663ffffffff1660e01b81526004016121fa959493929190613457565b6020604051808303815f875af1925050508015612234575060408051601f3d908101601f1916820190925261223191810190612f9d565b60015b612251576040516314504c7360e31b815260040160405180910390fd5b90505b95945050505050565b5f81831161226b57816114dc565b5090919050565b5f81831161228057826114dc565b50919050565b815f0361229257505050565b6122ac83838360405180602001604052805f815250611e62565b61183557604051634c67134d60e11b815260040160405180910390fd5b5f5160206135005f395f51905f52546001600160a01b031690565b6112a3612080565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff161561231f576118358361272b565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015612379575060408051601f3d908101601f1916820190925261237691810190612f9d565b60015b6123dc5760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b6064820152608401610940565b5f5160206135005f395f51905f52811461244a5760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b6064820152608401610940565b506118358383836127c6565b61246a60c954610100900460ff1660021490565b6112ff5760405163bae6e2a960e01b815260040160405180910390fd5b610a75612080565b5f856001600160a01b031663ce9d0820856124b4876562726964676560d01b5f61252a565b8887876040518663ffffffff1660e01b81526004016124d7959493929190613457565b5f6040518083038186803b1580156124ed575f5ffd5b505afa9250505080156124fe575060015b61250957505f612254565b506001612254565b606580546001600160a01b03191690556112a3816127ea565b5f7f0000000000000000000000000000000000000000000000000000000000000000604051633632b1fb60e11b81526001600160401b03861660048201526024810185905283151560448201526001600160a01b039190911690636c6563f690606401602060405180830381865afa1580156125a8573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114d99190613498565b6040516001600160e01b0319821660248201525f90819081906001600160a01b0386169060440160408051601f198184030181529181526020820180516001600160e01b03166301ffc9a760e01b1790525161262891906134b3565b5f60405180830381855afa9150503d805f8114612660576040519150601f19603f3d011682016040523d82523d5f602084013e612665565b606091505b5091509150818015612678575080516020145b1561269457808060200190518101906126919190613332565b92505b505092915050565b604080516060810182528481526001600160a01b03909316602084018190526001600160401b03909216920182905260fd9290925560fe8054600160a01b9092026001600160e01b0319909216909217179055565b6126fc603f826134ce565b821015610a7557fe5b5f54610100900460ff166112ff5760405162461bcd60e51b81526004016109409061340c565b6001600160a01b0381163b6127985760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610940565b5f5160206135005f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b6127cf8361283b565b5f825111806127db5750805b15611835576108f6838361287a565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b6128448161272b565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b60606114dc83836040518060600160405280602781526020016135206027913960605f5f856001600160a01b0316856040516128b691906134b3565b5f60405180830381855af49150503d805f81146128ee576040519150601f19603f3d011682016040523d82523d5f602084013e6128f3565b606091505b50915091506129048683838761290e565b9695505050505050565b6060831561297c5782515f03612975576001600160a01b0385163b6129755760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610940565b5081611fbb565b611fbb83838151156129915781518083602001fd5b8060405162461bcd60e51b815260040161094091906134ed565b5f6101608284031215612280575f5ffd5b80151581146112a3575f5ffd5b5f5f604083850312156129da575f5ffd5b82356001600160401b038111156129ef575f5ffd5b6129fb858286016129ab565b9250506020830135612a0c816129bc565b809150509250929050565b6001600160a01b03811681146112a3575f5ffd5b8035612a3681612a17565b919050565b5f60208284031215612a4b575f5ffd5b81356114dc81612a17565b5f60208284031215612a66575f5ffd5b81356001600160401b03811115612a7b575f5ffd5b611fbb848285016129ab565b5f5b83811015612aa1578181015183820152602001612a89565b50505f910152565b5f8151808452612ac0816020860160208601612a87565b601f01601f19169290920160200192915050565b80516001600160401b031682525f6020820151612afc60208501826001600160401b03169052565b506040820151612b14604085018263ffffffff169052565b506060820151612b2f60608501826001600160a01b03169052565b506080820151612b4a60808501826001600160401b03169052565b5060a0820151612b6560a08501826001600160a01b03169052565b5060c0820151612b8060c08501826001600160401b03169052565b5060e0820151612b9b60e08501826001600160a01b03169052565b50610100820151612bb86101008501826001600160a01b03169052565b50610120820151610120840152610140820151610160610140850152611fbb610160850182612aa9565b828152604060208201525f6114d96040830184612ad4565b5f5f5f60408486031215612c0c575f5ffd5b83356001600160401b03811115612c21575f5ffd5b612c2d868287016129ab565b93505060208401356001600160401b03811115612c48575f5ffd5b8401601f81018613612c58575f5ffd5b80356001600160401b03811115612c6d575f5ffd5b866020828401011115612c7e575f5ffd5b939660209190910195509293505050565b634e487b7160e01b5f52602160045260245ffd5b60058110612cb357612cb3612c8f565b9052565b60408101612cc58285612ca3565b60048310612cd557612cd5612c8f565b8260208301529392505050565b5f60208284031215612cf2575f5ffd5b5035919050565b602081016115b18284612ca3565b634e487b7160e01b5f52604160045260245ffd5b60405161016081016001600160401b0381118282101715612d3e57612d3e612d07565b60405290565b5f82601f830112612d53575f5ffd5b81356001600160401b03811115612d6c57612d6c612d07565b604051601f8201601f19908116603f011681016001600160401b0381118282101715612d9a57612d9a612d07565b604052818152838201602001851015612db1575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f5f60408385031215612dde575f5ffd5b8235612de981612a17565b915060208301356001600160401b03811115612e03575f5ffd5b612e0f85828601612d44565b9150509250929050565b80356001600160401b0381168114612a36575f5ffd5b5f60208284031215612e3f575f5ffd5b6114dc82612e19565b803563ffffffff81168114612a36575f5ffd5b5f6101608284031215612e6c575f5ffd5b612e74612d1b565b9050612e7f82612e19565b8152612e8d60208301612e19565b6020820152612e9e60408301612e48565b6040820152612eaf60608301612a2b565b6060820152612ec060808301612e19565b6080820152612ed160a08301612a2b565b60a0820152612ee260c08301612e19565b60c0820152612ef360e08301612a2b565b60e0820152612f056101008301612a2b565b61010082015261012082810135908201526101408201356001600160401b03811115612f2f575f5ffd5b612f3b84828501612d44565b6101408301525092915050565b5f60208284031215612f58575f5ffd5b81356001600160401b03811115612f6d575f5ffd5b611fbb84828501612e5b565b5f6115b13683612e5b565b5f60208284031215612f94575f5ffd5b6114dc82612e48565b5f60208284031215612fad575f5ffd5b5051919050565b6020808252602e908201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160408201526d191e481a5b9a5d1a585b1a5e995960921b606082015260800190565b634e487b7160e01b5f52601160045260245ffd5b808201808211156115b1576115b1613002565b5f6001600160401b0382166001600160401b03810361304a5761304a613002565b60010192915050565b602081525f6114dc6020830184612ad4565b5f5f8335601e1984360301811261307a575f5ffd5b8301803591506001600160401b03821115613093575f5ffd5b6020019150368190038213156130a7575f5ffd5b9250929050565b634e487b7160e01b5f52601260045260245ffd5b5f5f8335601e198436030181126130d7575f5ffd5b83016020810192503590506001600160401b038111156130f5575f5ffd5b8036038213156130a7575f5ffd5b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b6131458261313883612e19565b6001600160401b03169052565b5f61315260208301612e19565b6001600160401b0316602084015261316c60408301612e48565b63ffffffff16604084015261318360608301612a2b565b6001600160a01b0316606084015261319d60808301612e19565b6001600160401b031660808401526131b760a08301612a2b565b6001600160a01b031660a08401526131d160c08301612e19565b6001600160401b031660c08401526131eb60e08301612a2b565b6001600160a01b031660e08401526132066101008301612a2b565b6001600160a01b0316610100840152610120828101359084015261322e6101408301836130c2565b61016061014086015261269161016086018284613103565b60a081525f61325860a083018561312b565b905063ffffffff835116602083015263ffffffff602084015116604083015263ffffffff60408401511660608301526060830151151560808301529392505050565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b5f60208284031215613342575f5ffd5b81516114dc816129bc565b63ffffffff81811683821601908111156115b1576115b1613002565b604081525f61337b604083018561312b565b90508260208301529392505050565b60408152600d60408201526c5441494b4f5f4d45535341474560981b6060820152608060208201525f6114dc6080830184612ad4565b80356001600160e01b031981169060048410156133f1576001600160e01b0319600485900360031b81901b82161691505b5092915050565b634e487b7160e01b5f52600160045260245ffd5b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b6001600160401b038616815260018060a01b0385166020820152836040820152608060608201525f61348d608083018486613103565b979650505050505050565b5f602082840312156134a8575f5ffd5b81516114dc81612a17565b5f82516134c4818460208701612a87565b9190910192915050565b5f826134e857634e487b7160e01b5f52601260045260245ffd5b500490565b602081525f6114dc6020830184612aa956fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220d82c8f7c970681ddfa323cbf4b55420679e492c19c2d89df90bab3191259c47f64736f6c634300081e0033", - "sourceMap": "643:25624:9:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11832:1159;;;;;;;;;;-1:-1:-1;11832:1159:9;;;;;:::i;:::-;;:::i;:::-;;5694:92:12;;;;;;;;;;-1:-1:-1;5769:10:12;5694:92;;;-1:-1:-1;;;;;1061:32:150;;;1043:51;;1031:2;1016:18;5694:92:12;;;;;;;;4320:196:9;;;;;;;;;;;;;:::i;4142:92::-;;;;;;;;;;-1:-1:-1;4142:92:9;;;;;:::i;:::-;;:::i;4550:1319::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;7586:4212::-;;;;;;;;;;-1:-1:-1;7586:4212:9;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;5484:104:12:-;;;;;;;;;;;;;:::i;:::-;;;5930:14:150;;5923:22;5905:41;;5893:2;5878:18;5484:104:12;5765:187:150;3143:195:84;;;;;;;;;;-1:-1:-1;3143:195:84;;;;;:::i;:::-;;:::i;2641:62:9:-;;;;;;;;;;-1:-1:-1;2641:62:9;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;:::i;4911:245:12:-;;;;;;;;;;;;;:::i;1713:57:9:-;;;;;;;;;;;;1763:7;1713:57;;;;;6495:25:150;;;6483:2;6468:18;1713:57:9;6349:177:150;3657:220:84;;;;;;:::i;:::-;;:::i;2762:131::-;;;;;;;;;;;;;:::i;14121:410:9:-;;;;;;;;;;-1:-1:-1;14121:410:9;;;;;:::i;:::-;;:::i;5384:94:12:-;;;;;;;;;;;;5454:8;;;;;:17;:8;650:1;5454:17;;5384:94;13578:250:9;;;;;;;;;;-1:-1:-1;13578:250:9;;;;;:::i;:::-;;:::i;2372:45::-;;;;;;;;;;;;;;;2085:101:43;;;;;;;;;;;;;:::i;2031:212:42:-;;;;;;;;;;;;;:::i;16688:150:9:-;;;;;;;;;;-1:-1:-1;16688:150:9;;;;;:::i;:::-;;:::i;:::-;;;8946:10:150;8934:23;;;8916:42;;8904:2;8889:18;16688:150:9;8772:192:150;4625:241:12;;;;;;;;;;;;;:::i;5162:90::-;;;;;;;;;;;;;:::i;1462:85:43:-;;;;;;;;;;-1:-1:-1;1534:6:43;;-1:-1:-1;;;;;1534:6:43;1462:85;;15412:249:9;;;;;;;;;;-1:-1:-1;15412:249:9;;;;;:::i;:::-;;:::i;:::-;;;;9527:14:150;;9520:22;9502:41;;-1:-1:-1;;;;;9579:32:150;;;9574:2;9559:18;;9552:60;9475:18;15412:249:9;9334:284:150;13025:519:9;;;;;;;;;;-1:-1:-1;13025:519:9;;;;;:::i;:::-;;:::i;5903:1380::-;;;;;;;;;;-1:-1:-1;5903:1380:9;;;;;:::i;:::-;;:::i;1584:45::-;;;;;;;;;;;;1622:7;1584:45;;14835:329;;;;;;;;;;-1:-1:-1;14835:329:9;;;;;:::i;:::-;;:::i;1354:44::-;;;;;;;;;;;;1391:7;1354:44;;15996:148;;;;;;;;;;-1:-1:-1;15996:148:9;;;;;:::i;:::-;;:::i;15737:225::-;;;;;;;;;;;;;:::i;:::-;;;;11466:13:150;;11448:32;;11540:4;11528:17;;;11522:24;-1:-1:-1;;;;;11518:50:150;11496:20;;;11489:80;11617:17;;;11611:24;-1:-1:-1;;;;;11607:49:150;11585:20;;;11578:79;11436:2;11421:18;15737:225:9;11252:411:150;16325:146:9;;;;;;;;;;-1:-1:-1;16325:146:9;;;;;:::i;:::-;16449:13;16422:42;;16325:146;1144:99:42;;;;;;;;;;-1:-1:-1;1223:13:42;;-1:-1:-1;;;;;1223:13:42;1144:99;;2514:27:9;;;;;;;;;;-1:-1:-1;2514:27:9;;;;-1:-1:-1;;;2514:27:9;;-1:-1:-1;;;;;2514:27:9;;;;;;-1:-1:-1;;;;;11830:31:150;;;11812:50;;11800:2;11785:18;2514:27:9;11668:200:150;1436:178:42;;;;;;;;;;-1:-1:-1;1436:178:42;;;;;:::i;:::-;;:::i;11832:1159:9:-;11959:20;;;;;;;;:::i;:::-;3486:25;3502:8;3486:15;:25::i;:::-;11999:19:::1;::::0;;;::::1;::::0;::::1;;:::i;:::-;3581:25;3597:8;3581:15;:25::i;:::-;2739:17:12::2;:15;:17::i;:::-;2345:18:::3;:16;:18::i;:::-;2373:24;650:1;2373:17;:24::i;:::-;12077:15:9::4;12095:21;;12107:8:::0;12095:21:::4;:::i;:::-;12077:39;;12126;12139:7;12148:16;12126:12;:39::i;:::-;12176:14;12204:51;12231:8;12241:13;12204:26;:51::i;:::-;12200:472;;;12283:71;12312:8;:14;;;2230:6;12283:71;;;;;;;;;;;::::0;:8:::4;:18;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;12283:28:9::4;::::0;:71;;:28:::4;:71::i;:::-;12271:83;;12200:472;;;12390:17;::::0;;;::::4;::::0;::::4;;:::i;:::-;:22;;::::0;;:40:::4;;;12416:14;12390:40;12389:78;;;;-1:-1:-1::0;12449:18:9::4;::::0;;;::::4;::::0;::::4;;:::i;:::-;-1:-1:-1::0;;;;;12435:32:9::4;:10;-1:-1:-1::0;;;;;12435:32:9::4;;;12389:78;12385:145;;;12494:21;;-1:-1:-1::0;;;12494:21:9::4;;;;;;;;;;;12385:145;12606:55;12625:8;12635:7;12644:9;12655:5;12606:18;:55::i;:::-;12594:67;;12200:472;12686:9;12682:303;;;12711:42;12732:7;12741:11;12711:20;:42::i;:::-;12682:303;;;12774:14;12770:215;;;12804:44;12825:7;12834:13;12804:20;:44::i;:::-;12863:57;::::0;-1:-1:-1;;;12863:57:9;;16449:13;16422:42;;12863:57:::4;::::0;::::4;6495:25:150::0;12863:13:9::4;-1:-1:-1::0;;;;;12863:24:9::4;::::0;::::4;::::0;6468:18:150;;12863:57:9::4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;12770:215;;;12958:16;;-1:-1:-1::0;;;12958:16:9::4;;;;;;;;;;;12770:215;12067:924;;2418:25:12::3;611:1;2418:17;:25::i;:::-;3521:1:9::1;11832:1159:::0;;;:::o;4320:196::-;1355:13:43;:11;:13::i;:::-;4882::48::1;::::0;4370:1:9::1;::::0;4882:13:48::1;::::0;::::1;;;4881:14;:40:::0;::::1;;;-1:-1:-1::0;4899:12:48::1;::::0;:22:::1;::::0;;::::1;:12:::0;::::1;:22;4881:40;4873:99;;;;-1:-1:-1::0;;;4873:99:48::1;;;;;;;:::i;:::-;;;;;;;;;4982:12;:22:::0;;4444:11:9::2;:15:::0;;-1:-1:-1;;4444:15:9::2;::::0;;4982:22:48::1;4469:15:9::0;;;4982:22:48::1;4494:15:9::0;;;-1:-1:-1;;4982:22:48;;::::1;-1:-1:-1::0;;5014:20:48;;;;;::::1;5055:21;::::0;;;5091:20:::1;::::0;13006:36:150;;;5091:20:48::1;::::0;12994:2:150;12979:18;5091:20:48::1;;;;;;;1378:1:43;4320:196:9:o:0;4142:92::-;3279:19:48;3302:13;;;;;;3301:14;;3347:34;;;;-1:-1:-1;3365:12:48;;3380:1;3365:12;;;;:16;3347:34;3346:108;;;-1:-1:-1;3426:4:48;1713:19:64;:23;;;3387:66:48;;-1:-1:-1;3436:12:48;;;;;:17;3387:66;3325:201;;;;-1:-1:-1;;;3325:201:48;;;;;;;:::i;:::-;3536:12;:16;;-1:-1:-1;;3536:16:48;3551:1;3536:16;;;3562:65;;;;3596:13;:20;;-1:-1:-1;;3596:20:48;;;;;3562:65;4203:24:9::1;4220:6;4203:16;:24::i;:::-;3651:14:48::0;3647:99;;;3697:5;3681:21;;-1:-1:-1;;3681:21:48;;;3721:14;;-1:-1:-1;13006:36:150;;3721:14:48;;12994:2:150;12979:18;3721:14:48;;;;;;;3647:99;3269:483;4142:92:9;:::o;4550:1319::-;-1:-1:-1;;;;;;;;4860:16:9;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4668:17:9;;;;;;;;:::i;:::-;2950:24:12;2968:5;2950:17;:24::i;:::-;4707:18:9::1;::::0;;;::::1;::::0;::::1;;:::i;:::-;2950:24:12;2968:5;2950:17;:24::i;:::-;4747:11:9::2;::::0;;;::::2;::::0;::::2;;:::i;:::-;2950:24:12;2968:5;2950:17;:24::i;:::-;4778:20:9::3;::::0;;;::::3;::::0;::::3;;:::i;:::-;3581:25;3597:8;3581:15;:25::i;:::-;2739:17:12::4;:15;:17::i;:::-;2345:18:::5;:16;:18::i;:::-;2373:24;650:1;2373:17;:24::i;:::-;4921:17:9::6;::::0;;;::::6;::::0;::::6;;:::i;:::-;:22;;4942:1;4921:22:::0;4917:197:::6;;4963:12;::::0;;;::::6;::::0;::::6;;:::i;:::-;-1:-1:-1::0;;;;;4963:17:9::6;::::0;4959:45:::6;;4989:15;;-1:-1:-1::0;;;4989:15:9::6;;;;;;;;;;;4959:45;4917:197;;;5025:29;5045:8;5025:19;:29::i;:::-;5058:1;5025:34:::0;5021:93:::6;;5082:21;;-1:-1:-1::0;;;5082:21:9::6;;;;;;;;;;;5021:93;5179:21;5205:40;5224:20;::::0;;;::::6;::::0;::::6;;:::i;5205:40::-;5178:67;;;5298:16;5293:49;;5323:19;;-1:-1:-1::0;;;5323:19:9::6;;;;;;;;;;;5293:49;5452:9;5436:12;::::0;;;::::6;::::0;::::6;;:::i;:::-;5419:29;::::0;-1:-1:-1;;;;;5419:29:9::6;:14;::::0;::::6;;:29;:::i;:::-;:42;5415:72;;5470:17;;-1:-1:-1::0;;;5470:17:9::6;;;;;;;;;;;5415:72;5498:19;5509:8:::0;5498:19:::6;:::i;:::-;5624:13;:15:::0;;5498:19;;-1:-1:-1;;;;5624:15:9;;::::6;-1:-1:-1::0;;;;;5624:15:9::6;::::0;:13:::6;:15;::::0;::::6;:::i;:::-;::::0;;::::6;::::0;;;::::6;-1:-1:-1::0;;;;;5624:15:9;;::::6;;::::0;;::::6;::::0;;::::6;;;::::0;;;5610:29;;::::6;::::0;;5665:10:::6;5649:13;::::0;::::6;:26:::0;5714:13:::6;5685:43;:19;::::0;::::6;:43:::0;5750:21:::6;5610:29:::0;5750:11:::6;:21::i;:::-;5739:32;;5799:8;5787:31;5809:8;5787:31;;;;;;:::i;:::-;;;;;;;;5828:34;::::0;-1:-1:-1;;;5828:34:9;;::::6;::::0;::::6;6495:25:150::0;;;5828:13:9::6;-1:-1:-1::0;;;;;5828:24:9::6;::::0;::::6;::::0;6468:18:150;;5828:34:9::6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;4907:962;2418:25:12::5;611:1;2418:17;:25::i;:::-;2984:1:::3;::::2;::::1;4550:1319:9::0;;;;:::o;7586:4212::-;7759:14;7775:20;2739:17:12;:15;:17::i;:::-;2345:18:::1;:16;:18::i;:::-;2373:24;650:1;2373:17;:24::i;:::-;7811:16:9::2;7830:9;7811:28:::0;-1:-1:-1;7958:13:9::2;7934:20;::::0;;;::::2;::::0;::::2;;:::i;:::-;-1:-1:-1::0;;;;;7934:37:9::2;;7930:69;;7980:19;;-1:-1:-1::0;;;7980:19:9::2;;;;;;;;;;;7930:69;8093:19;::::0;;;::::2;::::0;::::2;;:::i;:::-;-1:-1:-1::0;;;;;8093:24:9::2;::::0;;:64:::2;;-1:-1:-1::0;8144:13:9::2;8121:19;::::0;;;::::2;::::0;::::2;;:::i;:::-;-1:-1:-1::0;;;;;8121:36:9::2;;8093:64;8089:121;;;8180:19;;-1:-1:-1::0;;;8180:19:9::2;;;;;;;;;;;8089:121;-1:-1:-1::0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8299:18:9::2;::::0;;;::::2;::::0;::::2;;:::i;:::-;-1:-1:-1::0;;;;;8285:32:9::2;:10;:32;::::0;::::2;8258:24;::::0;::::2;:59:::0;8412:196:::2;;8460:17;::::0;;;::::2;::::0;::::2;;:::i;:::-;:22;;8481:1;8460:22:::0;8456:56:::2;;8491:21;;-1:-1:-1::0;;;8491:21:9::2;;;;;;;;;;;8456:56;1763:7;8530:39:::0;::::2;8526:71;;;8578:19;;-1:-1:-1::0;;;8578:19:9::2;;;;;;;;;;;8526:71;8618:15;8636:21;;8648:8:::0;8636:21:::2;:::i;:::-;8618:39;;8668:33;8681:7;8690:10;8668:12;:33::i;:::-;8712:39;::::0;::::2;:15;::::0;::::2;:39:::0;8793:73:::2;8814:13;8829:7:::0;8838:19:::2;::::0;;;::::2;::::0;::::2;;:::i;:::-;8859:6;;8793:20;:73::i;:::-;8761:105;;:17;::::0;::::2;:105:::0;8877:20:::2;8911:51;8938:8:::0;8948:13:::2;8911:26;:51::i;:::-;8907:829;;;-1:-1:-1::0;9214:11:9::2;::::0;-1:-1:-1;9249:34:9::2;::::0;-1:-1:-1;9176:14:9::2;::::0;::::2;;8907:829;;;9314:16;9333:5;:24;;;:68;;9392:9;9333:68;;;9360:29;9380:8;9360:19;:29::i;:::-;9314:87;;9420:73;9439:8;9449:7;9458:8;9468:5;:24;;;9420:18;:73::i;:::-;9416:310;;;9523:11;9513:21;;9562:26;9552:36;;9416:310;;;9637:16;9627:26;;9681:30;9671:40;;9416:310;9300:436;8907:829;9750:12;::::0;;;::::2;::::0;::::2;;:::i;:::-;-1:-1:-1::0;;;;;9750:17:9::2;::::0;9746:1855:::2;;9799:12;::::0;;;::::2;::::0;::::2;;:::i;:::-;9783:28;::::0;-1:-1:-1;;;;;9783:28:9::2;::::0;::::2;:::i;:::-;;;9830:5;:24;;;:50;;;;-1:-1:-1::0;9858:17:9::2;::::0;;;::::2;::::0;::::2;;:::i;:::-;:22;;::::0;::::2;9830:50;9826:1765;;;10616:17;::::0;::::2;::::0;:51:::2;;1906:6;10616:51;11037:9;10964:42;10985:13;;::::0;::::2;:8:::0;:13:::2;:::i;:::-;22623:2:::0;22617;22604:15;;;22603:22;;;:27;22633:3;22603:33;22641:1;22602:40;;;-1:-1:-1;22056:604:9;10964:42:::2;10938:68;::::0;;::::2;::::0;;:108;;;;1622:7:::2;10938:108:::0;10881:187;::::2;::::0;;;:22:::2;::::0;11149:6;;11112:34:::2;::::0;11149:6;;10881:187;11112:10:::2;:34;:::i;:::-;:43;::::0;-1:-1:-1;11177:14:9::2;11222:17;::::0;;;::::2;::::0;::::2;;:::i;:::-;11194:45;;11207:12;::::0;;;::::2;::::0;::::2;;:::i;:::-;-1:-1:-1::0;;;;;11194:25:9::2;:10;:25;:45;;;;;:::i;:::-;;11177:62;;11261:15;11292:13;11279:10;:26;11261:44;;11327:11;11365:72;11424:8;:12;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;11365:72:9::2;11377:6;11366:7;:17;;:52;;11396:16:::0;;::::2;11417:1;11395:23;11366:52;;;11386:6;11366:52;11365:58:::0;::::2;:72::i;:::-;11460:19:::0;;;::::2;::::0;11327:110;-1:-1:-1;11501:57:9::2;:10;11327:110:::0;2230:6:::2;11501:29;:57::i;:::-;9900:1677;;;;;9826:1765;11611:74;11649:12:::0;2230:6:::2;11611:18;::::0;;;::::2;::::0;::::2;;:::i;:::-;-1:-1:-1::0;;;;;11611:37:9::2;::::0;:74;:37:::2;:74::i;:::-;11696:38;11717:7;11726;11696:20;:38::i;:::-;11766:7;11749:42;11775:8;11785:5;11749:42;;;;;;;:::i;:::-;;;;;;;;7801:3997;;;;2418:25:12::1;611:1;2418:17;:25::i;:::-;7586:4212:9::0;;;;;;:::o;5484:104:12:-;5531:4;650:1;5554:18;6882:9;;;;;6786:112;5554:18;:27;;;5547:34;;5484:104;:::o;3143:195:84:-;-1:-1:-1;;;;;1654:6:84;1637:23;1645:4;1637:23;1629:80;;;;-1:-1:-1;;;1629:80:84;;;;;;;:::i;:::-;1751:6;-1:-1:-1;;;;;1727:30:84;:20;:18;:20::i;:::-;-1:-1:-1;;;;;1727:30:84;;1719:87;;;;-1:-1:-1;;;1719:87:84;;;;;;;:::i;:::-;3224:36:::1;3242:17;3224;:36::i;:::-;3311:12;::::0;;3321:1:::1;3311:12:::0;;;::::1;::::0;::::1;::::0;;;3270:61:::1;::::0;3292:17;;3311:12;3270:21:::1;:61::i;:::-;3143:195:::0;:::o;4911:245:12:-;2575:14;:12;:14::i;:::-;4958:10:::1;6435:8:::0;:17;;-1:-1:-1;;6435:17:12;;;;;6388:71;4958:10:::1;4983:20;::::0;4992:10:::1;1043:51:150::0;;4983:20:12::1;::::0;1031:2:150;1016:18;4983:20:12::1;;;;;;;5115:34;5131:10;5143:5;5115:15;:34::i;:::-;4911:245::o:0;3657:220:84:-;-1:-1:-1;;;;;1654:6:84;1637:23;1645:4;1637:23;1629:80;;;;-1:-1:-1;;;1629:80:84;;;;;;;:::i;:::-;1751:6;-1:-1:-1;;;;;1727:30:84;:20;:18;:20::i;:::-;-1:-1:-1;;;;;1727:30:84;;1719:87;;;;-1:-1:-1;;;1719:87:84;;;;;;;:::i;:::-;3772:36:::1;3790:17;3772;:36::i;:::-;3818:52;3840:17;3859:4;3865;3818:21;:52::i;2762:131::-:0;2840:7;2080:4;-1:-1:-1;;;;;2089:6:84;2072:23;;2064:92;;;;-1:-1:-1;;;2064:92:84;;18600:2:150;2064:92:84;;;18582:21:150;18639:2;18619:18;;;18612:30;18678:34;18658:18;;;18651:62;18749:26;18729:18;;;18722:54;18793:19;;2064:92:84;18398:420:150;2064:92:84;-1:-1:-1;;;;;;;;;;;;2166:1:84::1;2762:131:::0;:::o;14121:410:9:-;14265:4;14312:13;14289:19;;;;;;;;:::i;:::-;-1:-1:-1;;;;;14289:36:9;;14285:54;;-1:-1:-1;14334:5:9;14327:12;;14285:54;14357:167;14388:13;14415:45;14438:21;;14450:8;14438:21;:::i;14415:45::-;14474:20;;;;;;;;:::i;:::-;14508:6;;14357:17;:167::i;:::-;14350:174;;14121:410;;;;;;:::o;13578:250::-;13651:4;13694:13;13671:19;;;;;;;;:::i;:::-;-1:-1:-1;;;;;13671:36:9;;13667:54;;-1:-1:-1;13716:5:9;;13578:250;-1:-1:-1;13578:250:9:o;13667:54::-;-1:-1:-1;;;;;13738:13:9;:26;;13781:4;13797:21;;13809:8;13797:21;:::i;:::-;13738:83;;-1:-1:-1;;;;;;13738:83:9;;;;;;;-1:-1:-1;;;;;19015:32:150;;;13738:83:9;;;18997:51:150;19064:18;;;19057:34;18970:18;;13738:83:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13731:90;13578:250;-1:-1:-1;;13578:250:9:o;2085:101:43:-;1355:13;:11;:13::i;:::-;2149:30:::1;2176:1;2149:18;:30::i;2031:212:42:-:0;1223:13;;965:10:65;;-1:-1:-1;;;;;1223:13:42;2130:24;;2122:78;;;;-1:-1:-1;;;2122:78:42;;19554:2:150;2122:78:42;;;19536:21:150;19593:2;19573:18;;;19566:30;19632:34;19612:18;;;19605:62;-1:-1:-1;;;19683:18:150;;;19676:39;19732:19;;2122:78:42;19352:405:150;2122:78:42;2210:26;2229:6;2210:18;:26::i;16688:150:9:-;16760:6;16785:46;1391:7;22633:3;22623:2;22617;22604:15;;22603:22;;;:27;:33;22641:1;22602:40;16785:46;:::i;4625:241:12:-;2739:17;:15;:17::i;:::-;6359:8;:16;;-1:-1:-1;;6359:16:12;;;;;4696:18:::1;::::0;4703:10:::1;1043:51:150::0;;4696:18:12::1;::::0;1031:2:150;1016:18;4696::12::1;;;;;;;4826:33;4842:10;4854:4;4826:15;:33::i;5162:90::-:0;5199:7;5225:20;:18;:20::i;:::-;5218:27;;5162:90;:::o;15412:249:9:-;15502:13;15517:19;15566:42;15574:8;-1:-1:-1;;;15603:4:9;15566:7;:42::i;:::-;-1:-1:-1;;;;;15629:25:9;;;;;15552:56;;-1:-1:-1;15412:249:9;-1:-1:-1;;15412:249:9:o;13025:519::-;13108:20;;;;;;;;:::i;:::-;3486:25;3502:8;3486:15;:25::i;:::-;13148:19:::1;::::0;;;::::1;::::0;::::1;;:::i;:::-;3581:25;3597:8;3581:15;:25::i;:::-;2739:17:12::2;:15;:17::i;:::-;2345:18:::3;:16;:18::i;:::-;2373:24;650:1;2373:17;:24::i;:::-;13244:18:9::4;::::0;;;::::4;::::0;::::4;;:::i;:::-;-1:-1:-1::0;;;;;13230:32:9::4;:10;-1:-1:-1::0;;;;;13230:32:9::4;;13226:91;;13285:21;;-1:-1:-1::0;;;13285:21:9::4;;;;;;;;;;;13226:91;13327:15;13345:21;;13357:8:::0;13345:21:::4;:::i;:::-;13327:39;;13376;13389:7;13398:16;13376:12;:39::i;:::-;13426:44;13447:7;13456:13;13426:20;:44::i;:::-;13480:57;::::0;-1:-1:-1;;;13480:57:9;;16449:13;16422:42;;13480:57:::4;::::0;::::4;6495:25:150::0;13480:13:9::4;-1:-1:-1::0;;;;;13480:24:9::4;::::0;::::4;::::0;6468:18:150;;13480:57:9::4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;13216:328;2418:25:12::3;611:1;2418:17;:25::i;:::-;3521:1:9::1;13025:519:::0;;:::o;5903:1380::-;6033:19;;;;;;;;:::i;:::-;3486:25;3502:8;3486:15;:25::i;:::-;6072:20:::1;::::0;;;::::1;::::0;::::1;;:::i;:::-;3581:25;3597:8;3581:15;:25::i;:::-;2739:17:12::2;:15;:17::i;:::-;2345:18:::3;:16;:18::i;:::-;2373:24;650:1;2373:17;:24::i;:::-;6151:15:9::4;6169:21;;6181:8:::0;6169:21:::4;:::i;:::-;6151:39;;6200:33;6213:7;6222:10;6200:12;:33::i;:::-;6249:50;::::0;-1:-1:-1;;;6249:50:9;;6284:4:::4;6249:50;::::0;::::4;18997:51:150::0;19064:18;;;19057:34;;;6249:13:9::4;-1:-1:-1::0;;;;;6249:26:9::4;::::0;::::4;::::0;18970:18:150;;6249:50:9::4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6244:109;;6322:20;;-1:-1:-1::0;;;6322:20:9::4;;;;;;;;;;;6244:109;6363:120;6397:13;16449::::0;16422:42;;6445:20:::4;::::0;;;::::4;::::0;::::4;;:::i;:::-;6467:6;;6363:20;:120::i;:::-;;6494:46;6515:7;6524:15;6494:20;:46::i;:::-;6670:68;-1:-1:-1::0;;;6670:13:9::4;::::0;;;::::4;::::0;::::4;;:::i;:::-;-1:-1:-1::0;;;;;6670:31:9::4;::::0;::::4;:68::i;:::-;6666:611;;;6754:58;6768:7:::0;6785:4:::4;6792:19;::::0;;;::::4;::::0;::::4;;:::i;:::-;6754:13;:58::i;:::-;6875:13;::::0;;;::::4;::::0;::::4;;:::i;:::-;-1:-1:-1::0;;;;;6857:63:9::4;;6929:8;:14;;;6946:8;6956:7;6857:107;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7040:120;-1:-1:-1::0;;7071:21:9::4;;-1:-1:-1::0;;2348:17:9;7040:13:::4;:120::i;:::-;6666:611;;;7191:75;7228:14;::::0;::::4;;2230:6;7191:17;::::0;;;::::4;::::0;::::4;;:::i;:75::-;6141:1142;2418:25:12::3;611:1;2418:17;:25::i;:::-;3521:1:9::1;5903:1380:::0;;;;:::o;14835:329::-;14981:4;15029:13;15005:20;;;;;;;;:::i;:::-;-1:-1:-1;;;;;15005:37:9;;15001:55;;-1:-1:-1;15051:5:9;15044:12;;15001:55;15073:84;15091:13;15106:21;;15118:8;15106:21;:::i;:::-;15129:19;;;;;;;;:::i;15996:148::-;16063:7;16127:8;16099:37;;;;;;;;:::i;:::-;;;;;;;;;;;;;16089:48;;;;;;16082:55;;15996:148;;;:::o;15737:225::-;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;15817:14:9;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;20226:12:9;;;;;;;;20233:5;20226:12;;;;;-1:-1:-1;;;;;20226:12:9;;;;;;-1:-1:-1;;;20226:12:9;;-1:-1:-1;;;;;20226:12:9;;;;;;;;;20145:100;15817:14;15845:12;;15810:21;;-1:-1:-1;15845:17:9;;:58;;-1:-1:-1;15866:12:9;;-1:-1:-1;;15866:37:9;15845:58;15841:115;;;15926:19;;-1:-1:-1;;;15926:19:9;;;;;;;;;;;1436:178:42;1355:13:43;:11;:13::i;:::-;1525::42::1;:24:::0;;-1:-1:-1;;;;;1525:24:42;::::1;-1:-1:-1::0;;;;;;1525:24:42;;::::1;::::0;::::1;::::0;;;1589:7:::1;1534:6:43::0;;-1:-1:-1;;;;;1534:6:43;;1462:85;1589:7:42::1;-1:-1:-1::0;;;;;1564:43:42::1;;;;;;;;;;;1436:178:::0;:::o;25982:130:9:-;26064:13;26052:8;-1:-1:-1;;;;;26052:25:9;;26048:57;;26086:19;;-1:-1:-1;;;26086:19:9;;;;;;;;;;;26118:147;-1:-1:-1;;;;;26188:13:9;;;;:42;;;26217:13;26205:8;-1:-1:-1;;;;;26205:25:9;;26188:42;26184:74;;;26239:19;;-1:-1:-1;;;26239:19:9;;;;;;;;;;;7435:99:12;7494:8;5454;;;;;:17;:8;650:1;5454:17;;5384:94;7494:8;7493:9;7485:42;;;;-1:-1:-1;;;7485:42:12;;;;;;;;;;;7216:112;650:1;7275:18;6882:9;;;;;6786:112;7275:18;:27;;;7267:54;;;;-1:-1:-1;;;7267:54:12;;;;;;;;;;;6653:97;6723:9;:20;;-1:-1:-1;;6723:20:12;;;;;;;;;;;;6653:97::o;21073:167:9:-;21191:15;21164:42;;;;;;;;:::i;:::-;:23;;;;:13;:23;;;;;;;;:42;;;;;;;;:::i;:::-;;21160:73;;21215:18;;-1:-1:-1;;;21215:18:9;;;;;;;;;;;21246:521;21408:4;;21432:11;;;;;;;;:::i;:::-;-1:-1:-1;;;;;21432:25:9;;21428:42;;-1:-1:-1;21466:4:9;21459:11;;21428:42;21507:4;21484:11;;;;;;;;:::i;:::-;-1:-1:-1;;;;;21484:28:9;;21480:45;;-1:-1:-1;21521:4:9;21514:11;;21480:45;-1:-1:-1;;;;;21539:38:9;;:11;;;;;;;;:::i;:::-;-1:-1:-1;;;;;21539:38:9;;21535:55;;-1:-1:-1;21586:4:9;21579:11;;21535:55;21632:1;21608:13;;;;:8;:13;:::i;:::-;:20;;:25;;:112;;;;-1:-1:-1;;;;21656:13:9;;;;:8;:13;:::i;:::-;21649:21;;;:::i;:::-;-1:-1:-1;;;;;;21649:71:9;;;21608:112;:152;;;;-1:-1:-1;21736:24:9;:11;;;;;;;;:::i;:::-;-1:-1:-1;;;;;21736:22:9;1713:19:64;:23;;;1423:320;810:850:19;974:13;-1:-1:-1;;;;;1058:17:19;;1050:49;;;;-1:-1:-1;;;1050:49:19;;;;;;;;;;;;1619:1;1590;1553:9;1547:16;1515:4;1504:9;1500:20;1460:7;1426:3;1392:9;1370:274;1358:286;810:850;-1:-1:-1;;;;;810:850:19:o;17315:949:9:-;17509:13;17570:4;17545:13;;;;;;;;:::i;:::-;-1:-1:-1;;;;;17545:30:9;;17538:38;;;;:::i;:::-;17591:14;;;;:19;:48;;;;-1:-1:-1;17614:13:9;;;;:8;:13;:::i;:::-;:25;;-1:-1:-1;17591:48:9;17587:65;;;-1:-1:-1;17648:4:9;17641:11;;17587:65;17667:9;17680:1;17667:14;17663:32;;-1:-1:-1;17690:5:9;17683:12;;17663:32;17706:59;17720:8;17730:13;;;;;;;;:::i;:::-;17745:19;;;;;;;;:::i;17706:59::-;17776:10;17789:11;;;;;;;;:::i;:::-;17776:24;-1:-1:-1;17826:14:9;;;;17810:13;17870;;;;17826:8;17870:13;:::i;:::-;17850:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;17998:11:9;;17850:33;;-1:-1:-1;17850:33:9;;;-1:-1:-1;17850:33:9;;-1:-1:-1;17998:11:9;-1:-1:-1;17991:4:9;17981:15;;17974:5;17970:2;17959:9;17954:62;17942:74;;18040:5;18029:16;;18069:24;18065:93;;;18109:38;18128:7;18137:9;18109:18;:38::i;:::-;18167:90;-1:-1:-1;;2348:17:9;;18167:13;:90::i;:::-;17528:736;;;;17315:949;;;;;;;:::o;18568:251::-;18681:7;18654:34;;;;;;;;:::i;:::-;:23;;;;:13;:23;;;;;;;;:34;;;;;;;;:::i;:::-;;18650:65;;18697:18;;-1:-1:-1;;;18697:18:9;;;;;;;;;;;18650:65;18725:23;;;;:13;:23;;;;;:33;;18751:7;;18725:23;-1:-1:-1;;18725:33:9;;18751:7;18725:33;;;;;;;;:::i;:::-;;;;;;18794:8;18773:39;18804:7;18773:39;;;;;;:::i;:::-;;;;;;;;18568:251;;:::o;1620:130:43:-;1534:6;;-1:-1:-1;;;;;1534:6:43;965:10:65;1683:23:43;1675:68;;;;-1:-1:-1;;;1675:68:43;;21454:2:150;1675:68:43;;;21436:21:150;;;21473:18;;;21466:30;21532:34;21512:18;;;21505:62;21584:18;;1675:68:43;21252:356:150;6100:208:12;5374:13:48;;;;;;;5366:69;;;;-1:-1:-1;;;5366:69:48;;;;;;;:::i;:::-;6186:16:12::1;:14;:16::i;:::-;6212:62;-1:-1:-1::0;;;;;6231:20:12;::::1;::::0;:42:::1;;6267:6;6212:18;:62::i;6231:42::-;6254:10;6212:18;:62::i;:::-;-1:-1:-1::0;6284:8:12::1;:17:::0;;-1:-1:-1;;6284:17:12::1;;;::::0;;6100:208::o;7540:116::-;-1:-1:-1;;;;;7613:19:12;;7605:44;;;;-1:-1:-1;;;7605:44:12;;;;;;;;;;;21773:277:9;21851:7;;21895:43;21917:13;;;;:8;:13;:::i;:::-;:20;;21895:21;:43::i;:::-;21870:68;;;-1:-1:-1;21870:68:9;21979:37;21998:17;;;;;;;;:::i;:::-;21979:37;;:14;:18;;:37;;;;:::i;:::-;:54;;21773:277;-1:-1:-1;;;21773:277:9:o;19512:536::-;19701:19;19740:14;-1:-1:-1;;;;;19740:34:9;;19788:8;19798:43;19806:8;-1:-1:-1;;;19835:5:9;19798:7;:43::i;:::-;19843:7;19852:6;;19740:128;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;-1:-1:-1;19740:128:9;;;;;;;;-1:-1:-1;;19740:128:9;;;;;;;;;;;;:::i;:::-;;;19736:306;;20008:23;;-1:-1:-1;;;20008:23:9;;;;;;;;;;;19736:306;19957:11;-1:-1:-1;19736:306:9;19512:536;;;;;;;:::o;731:110:22:-;791:7;822:2;817;:7;:17;;832:2;817:17;;;-1:-1:-1;827:2:22;;731:110;-1:-1:-1;731:110:22:o;416:::-;476:7;507:2;502;:7;:17;;517:2;502:17;;;-1:-1:-1;512:2:22;416:110;-1:-1:-1;416:110:22:o;1939:207:19:-;2039:7;2050:1;2039:12;2035:25;;1939:207;;;:::o;2035:25::-;2077:38;2087:3;2092:7;2101:9;2077:38;;;;;;;;;;;;:9;:38::i;:::-;2069:70;;;;-1:-1:-1;;;2069:70:19;;;;;;;;;;;1175:140:80;-1:-1:-1;;;;;;;;;;;1254:54:80;-1:-1:-1;;;;;1254:54:80;;1175:140::o;6465:75:12:-;1355:13:43;:11;:13::i;2494:922:80:-;689:66;2910:48;;;2906:504;;;2974:37;2993:17;2974:18;:37::i;2906:504::-;3064:17;-1:-1:-1;;;;;3046:50:80;;:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3046:52:80;;;;;;;;-1:-1:-1;;3046:52:80;;;;;;;;;;;;:::i;:::-;;;3042:291;;3262:56;;-1:-1:-1;;;3262:56:80;;22929:2:150;3262:56:80;;;22911:21:150;22968:2;22948:18;;;22941:30;23007:34;22987:18;;;22980:62;-1:-1:-1;;;23058:18:150;;;23051:44;23112:19;;3262:56:80;22727:410:150;3042:291:80;-1:-1:-1;;;;;;;;;;;3148:28:80;;3140:82;;;;-1:-1:-1;;;3140:82:80;;23344:2:150;3140:82:80;;;23326:21:150;23383:2;23363:18;;;23356:30;23422:34;23402:18;;;23395:62;-1:-1:-1;;;23473:18:150;;;23466:39;23522:19;;3140:82:80;23142:405:150;3140:82:80;3099:138;3346:53;3364:17;3383:4;3389:9;3346:17;:53::i;7334:95:12:-;7389:8;5454;;;;;:17;:8;650:1;5454:17;;5384:94;7389:8;7381:41;;;;-1:-1:-1;;;7381:41:12;;;;;;;;;;;6546:70;1355:13:43;:11;:13::i;20628:439:9:-;20827:4;20851:14;-1:-1:-1;;;;;20851:35:9;;20900:8;20910:43;20918:8;-1:-1:-1;;;20947:5:9;20910:7;:43::i;:::-;20955:7;20964:6;;20851:129;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20847:214;;-1:-1:-1;21045:5:9;21038:12;;20847:214;-1:-1:-1;21002:4:9;20995:11;;1798:153:42;1887:13;1880:20;;-1:-1:-1;;;;;;1880:20:42;;;1910:34;1935:8;1910:24;:34::i;2232:252:13:-;2382:7;5769:10:12;2412:65:13;;-1:-1:-1;;;2412:65:13;;-1:-1:-1;;;;;23765:31:150;;2412:65:13;;;23747:50:150;23813:18;;;23806:34;;;23883:14;;23876:22;23856:18;;;23849:50;-1:-1:-1;;;;;2412:29:13;;;;;;;23720:18:150;;2412:65:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;2485:392:19:-;2710:57;;-1:-1:-1;;;;;;24328:33:150;;2710:57:19;;;24310:52:150;2617:12:19;;;;;;-1:-1:-1;;;;;2693:16:19;;;24283:18:150;;2710:57:19;;;-1:-1:-1;;2710:57:19;;;;;;;;;;;;;;-1:-1:-1;;;;;2710:57:19;-1:-1:-1;;;2710:57:19;;;2693:75;;;2710:57;2693:75;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2645:123;;;;2782:7;:28;;;;;2793:4;:11;2808:2;2793:17;2782:28;2778:93;;;2847:4;2836:24;;;;;;;;;;;;:::i;:::-;2826:34;;2778:93;2635:242;;2485:392;;;;:::o;18998:155:9:-;19109:37;;;;;;;;;;;-1:-1:-1;;;;;19109:37:9;;;;;;;;;-1:-1:-1;;;;;19109:37:9;;;;;;;;19101:5;:45;;;;;;;-1:-1:-1;;;19101:45:9;;;-1:-1:-1;;;;;;19101:45:9;;;;;;;;;18998:155::o;23684:2292::-;25512:18;25528:2;25512:13;:18;:::i;:::-;25501:8;:29;25497:473;;;25937:9;747:59:65;5374:13:48;;;;;;;5366:69;;;;-1:-1:-1;;;5366:69:48;;;;;;;:::i;1406:259:80:-;-1:-1:-1;;;;;1713:19:64;;;1479:95:80;;;;-1:-1:-1;;;1479:95:80;;25089:2:150;1479:95:80;;;25071:21:150;25128:2;25108:18;;;25101:30;25167:34;25147:18;;;25140:62;-1:-1:-1;;;25218:18:150;;;25211:43;25271:19;;1479:95:80;24887:409:150;1479:95:80;-1:-1:-1;;;;;;;;;;;1584:74:80;;-1:-1:-1;;;;;;1584:74:80;-1:-1:-1;;;;;1584:74:80;;;;;;;;;;1406:259::o;2057:265::-;2165:29;2176:17;2165:10;:29::i;:::-;2222:1;2208:4;:11;:15;:28;;;;2227:9;2208:28;2204:112;;;2252:53;2281:17;2300:4;2252:28;:53::i;2687:187:43:-;2779:6;;;-1:-1:-1;;;;;2795:17:43;;;-1:-1:-1;;;;;;2795:17:43;;;;;;;2827:40;;2779:6;;;2795:17;2779:6;;2827:40;;2760:16;;2827:40;2750:124;2687:187;:::o;1771:152:80:-;1837:37;1856:17;1837:18;:37::i;:::-;1889:27;;-1:-1:-1;;;;;1889:27:80;;;;;;;;1771:152;:::o;6674:198:94:-;6757:12;6788:77;6809:6;6817:4;6788:77;;;;;;;;;;;;;;;;;7199:12;7224;7238:23;7265:6;-1:-1:-1;;;;;7265:19:94;7285:4;7265:25;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7223:67;;;;7307:69;7334:6;7342:7;7351:10;7363:12;7307:26;:69::i;:::-;7300:76;7058:325;-1:-1:-1;;;;;;7058:325:94:o;7671:628::-;7851:12;7879:7;7875:418;;;7906:10;:17;7927:1;7906:22;7902:286;;-1:-1:-1;;;;;1713:19:64;;;8113:60:94;;;;-1:-1:-1;;;8113:60:94;;25503:2:150;8113:60:94;;;25485:21:150;25542:2;25522:18;;;25515:30;25581:31;25561:18;;;25554:59;25630:18;;8113:60:94;25301:353:150;8113:60:94;-1:-1:-1;8208:10:94;8201:17;;7875:418;8249:33;8257:10;8269:12;8980:17;;:21;8976:379;;9208:10;9202:17;9264:15;9251:10;9247:2;9243:19;9236:44;8976:379;9331:12;9324:20;;-1:-1:-1;;;9324:20:94;;;;;;;;:::i;14:156:150:-;74:5;119:3;110:6;105:3;101:16;97:26;94:46;;;136:1;133;126:12;175:118;261:5;254:13;247:21;240:5;237:32;227:60;;283:1;280;273:12;298:485;390:6;398;451:2;439:9;430:7;426:23;422:32;419:52;;;467:1;464;457:12;419:52;507:9;494:23;-1:-1:-1;;;;;532:6:150;529:30;526:50;;;572:1;569;562:12;526:50;595:67;654:7;645:6;634:9;630:22;595:67;:::i;:::-;585:77;;;712:2;701:9;697:18;684:32;725:28;747:5;725:28;:::i;:::-;772:5;762:15;;;298:485;;;;;:::o;1105:131::-;-1:-1:-1;;;;;1180:31:150;;1170:42;;1160:70;;1226:1;1223;1216:12;1241:134;1309:20;;1338:31;1309:20;1338:31;:::i;:::-;1241:134;;;:::o;1380:247::-;1439:6;1492:2;1480:9;1471:7;1467:23;1463:32;1460:52;;;1508:1;1505;1498:12;1460:52;1547:9;1534:23;1566:31;1591:5;1566:31;:::i;1632:356::-;1718:6;1771:2;1759:9;1750:7;1746:23;1742:32;1739:52;;;1787:1;1784;1777:12;1739:52;1827:9;1814:23;-1:-1:-1;;;;;1852:6:150;1849:30;1846:50;;;1892:1;1889;1882:12;1846:50;1915:67;1974:7;1965:6;1954:9;1950:22;1915:67;:::i;2199:250::-;2284:1;2294:113;2308:6;2305:1;2302:13;2294:113;;;2384:11;;;2378:18;2365:11;;;2358:39;2330:2;2323:10;2294:113;;;-1:-1:-1;;2441:1:150;2423:16;;2416:27;2199:250::o;2454:270::-;2495:3;2533:5;2527:12;2560:6;2555:3;2548:19;2576:76;2645:6;2638:4;2633:3;2629:14;2622:4;2615:5;2611:16;2576:76;:::i;:::-;2706:2;2685:15;-1:-1:-1;;2681:29:150;2672:39;;;;2713:4;2668:50;;2454:270;-1:-1:-1;;2454:270:150:o;2729:1233::-;2815:12;;-1:-1:-1;;;;;2058:30:150;2046:43;;2779:3;2879:4;2872:5;2868:16;2862:23;2894:47;2935:4;2930:3;2926:14;2912:12;-1:-1:-1;;;;;2058:30:150;2046:43;;1993:102;2894:47;;2989:4;2982:5;2978:16;2972:23;3004:49;3047:4;3042:3;3038:14;3022;2176:10;2165:22;2153:35;;2100:94;3004:49;;3101:4;3094:5;3090:16;3084:23;3116:50;3160:4;3155:3;3151:14;3135;-1:-1:-1;;;;;854:31:150;842:44;;788:104;3116:50;;3214:4;3207:5;3203:16;3197:23;3229:49;3272:4;3267:3;3263:14;3247;-1:-1:-1;;;;;2058:30:150;2046:43;;1993:102;3229:49;;3326:4;3319:5;3315:16;3309:23;3341:50;3385:4;3380:3;3376:14;3360;-1:-1:-1;;;;;854:31:150;842:44;;788:104;3341:50;;3439:4;3432:5;3428:16;3422:23;3454:49;3497:4;3492:3;3488:14;3472;-1:-1:-1;;;;;2058:30:150;2046:43;;1993:102;3454:49;;3551:4;3544:5;3540:16;3534:23;3566:50;3610:4;3605:3;3601:14;3585;-1:-1:-1;;;;;854:31:150;842:44;;788:104;3566:50;;3664:6;3657:5;3653:18;3647:25;3681:52;3725:6;3720:3;3716:16;3700:14;-1:-1:-1;;;;;854:31:150;842:44;;788:104;3681:52;;3784:6;3777:5;3773:18;3767:25;3758:6;3753:3;3749:16;3742:51;3841:6;3834:5;3830:18;3824:25;3883:6;3874;3869:3;3865:16;3858:32;3906:50;3948:6;3943:3;3939:16;3923:14;3906:50;:::i;3967:329::-;4174:6;4163:9;4156:25;4217:2;4212;4201:9;4197:18;4190:30;4137:4;4237:53;4286:2;4275:9;4271:18;4263:6;4237:53;:::i;4301:836::-;4407:6;4415;4423;4476:2;4464:9;4455:7;4451:23;4447:32;4444:52;;;4492:1;4489;4482:12;4444:52;4532:9;4519:23;-1:-1:-1;;;;;4557:6:150;4554:30;4551:50;;;4597:1;4594;4587:12;4551:50;4620:67;4679:7;4670:6;4659:9;4655:22;4620:67;:::i;:::-;4610:77;;;4740:2;4729:9;4725:18;4712:32;-1:-1:-1;;;;;4759:8:150;4756:32;4753:52;;;4801:1;4798;4791:12;4753:52;4824:24;;4879:4;4871:13;;4867:27;-1:-1:-1;4857:55:150;;4908:1;4905;4898:12;4857:55;4948:2;4935:16;-1:-1:-1;;;;;4966:6:150;4963:30;4960:50;;;5006:1;5003;4996:12;4960:50;5051:7;5046:2;5037:6;5033:2;5029:15;5025:24;5022:37;5019:57;;;5072:1;5069;5062:12;5019:57;4301:836;;5103:2;5095:11;;;;;-1:-1:-1;5125:6:150;;-1:-1:-1;;;4301:836:150:o;5142:127::-;5203:10;5198:3;5194:20;5191:1;5184:31;5234:4;5231:1;5224:15;5258:4;5255:1;5248:15;5274:137;5352:1;5345:5;5342:12;5332:46;;5358:18;;:::i;:::-;5387;;5274:137::o;5416:344::-;5602:2;5587:18;;5614:41;5591:9;5637:6;5614:41;:::i;:::-;5685:1;5677:6;5674:13;5664:47;;5691:18;;:::i;:::-;5747:6;5742:2;5731:9;5727:18;5720:34;5416:344;;;;;:::o;5957:180::-;6016:6;6069:2;6057:9;6048:7;6044:23;6040:32;6037:52;;;6085:1;6082;6075:12;6037:52;-1:-1:-1;6108:23:150;;5957:180;-1:-1:-1;5957:180:150:o;6142:202::-;6285:2;6270:18;;6297:41;6274:9;6320:6;6297:41;:::i;6531:127::-;6592:10;6587:3;6583:20;6580:1;6573:31;6623:4;6620:1;6613:15;6647:4;6644:1;6637:15;6663:250;6730:2;6724:9;6772:6;6760:19;;-1:-1:-1;;;;;6794:34:150;;6830:22;;;6791:62;6788:88;;;6856:18;;:::i;:::-;6892:2;6885:22;6663:250;:::o;6918:745::-;6960:5;7013:3;7006:4;6998:6;6994:17;6990:27;6980:55;;7031:1;7028;7021:12;6980:55;7071:6;7058:20;-1:-1:-1;;;;;7093:6:150;7090:30;7087:56;;;7123:18;;:::i;:::-;7192:2;7186:9;7284:2;7246:17;;-1:-1:-1;;7242:31:150;;;7275:2;7238:40;7234:54;7222:67;;-1:-1:-1;;;;;7304:34:150;;7340:22;;;7301:62;7298:88;;;7366:18;;:::i;:::-;7402:2;7395:22;7426;;;7467:19;;;7488:4;7463:30;7460:39;-1:-1:-1;7457:59:150;;;7512:1;7509;7502:12;7457:59;7576:6;7569:4;7561:6;7557:17;7550:4;7542:6;7538:17;7525:58;7631:1;7603:19;;;7624:4;7599:30;7592:41;;;;7607:6;6918:745;-1:-1:-1;;;6918:745:150:o;7668:455::-;7745:6;7753;7806:2;7794:9;7785:7;7781:23;7777:32;7774:52;;;7822:1;7819;7812:12;7774:52;7861:9;7848:23;7880:31;7905:5;7880:31;:::i;:::-;7930:5;-1:-1:-1;7986:2:150;7971:18;;7958:32;-1:-1:-1;;;;;8002:30:150;;7999:50;;;8045:1;8042;8035:12;7999:50;8068:49;8109:7;8100:6;8089:9;8085:22;8068:49;:::i;:::-;8058:59;;;7668:455;;;;;:::o;8969:171::-;9036:20;;-1:-1:-1;;;;;9085:30:150;;9075:41;;9065:69;;9130:1;9127;9120:12;9145:184;9203:6;9256:2;9244:9;9235:7;9231:23;9227:32;9224:52;;;9272:1;9269;9262:12;9224:52;9295:28;9313:9;9295:28;:::i;9623:163::-;9690:20;;9750:10;9739:22;;9729:33;;9719:61;;9776:1;9773;9766:12;9791:1106;9845:5;9893:6;9881:9;9876:3;9872:19;9868:32;9865:52;;;9913:1;9910;9903:12;9865:52;9935:17;;:::i;:::-;9926:26;;9975:28;9993:9;9975:28;:::i;:::-;9968:5;9961:43;10036:37;10069:2;10058:9;10054:18;10036:37;:::i;:::-;10031:2;10024:5;10020:14;10013:61;10106:37;10139:2;10128:9;10124:18;10106:37;:::i;:::-;10101:2;10094:5;10090:14;10083:61;10176:38;10210:2;10199:9;10195:18;10176:38;:::i;:::-;10171:2;10164:5;10160:14;10153:62;10248:38;10281:3;10270:9;10266:19;10248:38;:::i;:::-;10242:3;10235:5;10231:15;10224:63;10320:39;10354:3;10343:9;10339:19;10320:39;:::i;:::-;10314:3;10307:5;10303:15;10296:64;10393:38;10426:3;10415:9;10411:19;10393:38;:::i;:::-;10387:3;10380:5;10376:15;10369:63;10465:39;10499:3;10488:9;10484:19;10465:39;:::i;:::-;10459:3;10452:5;10448:15;10441:64;10538:39;10572:3;10561:9;10557:19;10538:39;:::i;:::-;10532:3;10521:15;;10514:64;10651:3;10636:19;;;10623:33;10672:15;;;10665:32;10748:3;10733:19;;10720:33;-1:-1:-1;;;;;10765:30:150;;10762:50;;;10808:1;10805;10798:12;10762:50;10845:45;10886:3;10877:6;10866:9;10862:22;10845:45;:::i;:::-;10839:3;10832:5;10828:15;10821:70;;9791:1106;;;;:::o;10902:345::-;10986:6;11039:2;11027:9;11018:7;11014:23;11010:32;11007:52;;;11055:1;11052;11045:12;11007:52;11095:9;11082:23;-1:-1:-1;;;;;11120:6:150;11117:30;11114:50;;;11160:1;11157;11150:12;11114:50;11183:58;11233:7;11224:6;11213:9;11209:22;11183:58;:::i;11873:193::-;11975:9;12012:48;12045:14;12038:5;12012:48;:::i;12071:184::-;12129:6;12182:2;12170:9;12161:7;12157:23;12153:32;12150:52;;;12198:1;12195;12188:12;12150:52;12221:28;12239:9;12221:28;:::i;12260:184::-;12330:6;12383:2;12371:9;12362:7;12358:23;12354:32;12351:52;;;12399:1;12396;12389:12;12351:52;-1:-1:-1;12422:16:150;;12260:184;-1:-1:-1;12260:184:150:o;12449:410::-;12651:2;12633:21;;;12690:2;12670:18;;;12663:30;12729:34;12724:2;12709:18;;12702:62;-1:-1:-1;;;12795:2:150;12780:18;;12773:44;12849:3;12834:19;;12449:410::o;13252:127::-;13313:10;13308:3;13304:20;13301:1;13294:31;13344:4;13341:1;13334:15;13368:4;13365:1;13358:15;13384:125;13449:9;;;13470:10;;;13467:36;;;13483:18;;:::i;13514:204::-;13552:3;-1:-1:-1;;;;;13589:5:150;13585:30;-1:-1:-1;;;;;13630:7:150;13627:31;13624:57;;13661:18;;:::i;:::-;13710:1;13697:15;;13514:204;-1:-1:-1;;13514:204:150:o;13723:258::-;13902:2;13891:9;13884:21;13865:4;13922:53;13971:2;13960:9;13956:18;13948:6;13922:53;:::i;13986:521::-;14063:4;14069:6;14129:11;14116:25;14223:2;14219:7;14208:8;14192:14;14188:29;14184:43;14164:18;14160:68;14150:96;;14242:1;14239;14232:12;14150:96;14269:33;;14321:20;;;-1:-1:-1;;;;;;14353:30:150;;14350:50;;;14396:1;14393;14386:12;14350:50;14429:4;14417:17;;-1:-1:-1;14460:14:150;14456:27;;;14446:38;;14443:58;;;14497:1;14494;14487:12;14443:58;13986:521;;;;;:::o;14512:127::-;14573:10;14568:3;14564:20;14561:1;14554:31;14604:4;14601:1;14594:15;14628:4;14625:1;14618:15;14644:500;14702:5;14709:6;14769:3;14756:17;14855:2;14851:7;14840:8;14824:14;14820:29;14816:43;14796:18;14792:68;14782:96;;14874:1;14871;14864:12;14782:96;14902:33;;15006:4;14993:18;;;-1:-1:-1;14954:21:150;;-1:-1:-1;;;;;;15023:30:150;;15020:50;;;15066:1;15063;15056:12;15020:50;15113:6;15097:14;15093:27;15086:5;15082:39;15079:59;;;15134:1;15131;15124:12;15149:266;15237:6;15232:3;15225:19;15289:6;15282:5;15275:4;15270:3;15266:14;15253:43;-1:-1:-1;15341:1:150;15316:16;;;15334:4;15312:27;;;15305:38;;;;15397:2;15376:15;;;-1:-1:-1;;15372:29:150;15363:39;;;15359:50;;15149:266::o;15420:1482::-;15497:48;15541:3;15515:24;15533:5;15515:24;:::i;:::-;-1:-1:-1;;;;;2058:30:150;2046:43;;1993:102;15497:48;15479:3;15574:35;15603:4;15596:5;15592:16;15574:35;:::i;:::-;-1:-1:-1;;;;;2058:30:150;15659:4;15650:14;;2046:43;15696:35;15725:4;15714:16;;15696:35;:::i;:::-;2176:10;2165:22;15783:4;15774:14;;2153:35;15820:36;15850:4;15839:16;;15820:36;:::i;:::-;-1:-1:-1;;;;;854:31:150;15909:4;15900:14;;842:44;15946:35;15975:4;15964:16;;15946:35;:::i;:::-;-1:-1:-1;;;;;2058:30:150;16033:4;16024:14;;2046:43;16070:36;16100:4;16089:16;;16070:36;:::i;:::-;-1:-1:-1;;;;;854:31:150;16159:4;16150:14;;842:44;16196:35;16225:4;16214:16;;16196:35;:::i;:::-;-1:-1:-1;;;;;2058:30:150;16283:4;16274:14;;2046:43;16320:36;16350:4;16339:16;;16320:36;:::i;:::-;-1:-1:-1;;;;;854:31:150;16409:4;16400:14;;842:44;16446:38;16476:6;16465:18;;16446:38;:::i;:::-;-1:-1:-1;;;;;854:31:150;16537:6;16528:16;;842:44;16614:6;16603:18;;;16590:32;16638:16;;;16631:33;16709:57;16758:6;16747:18;;16603;16709:57;:::i;:::-;16800:6;16791;16786:3;16782:16;16775:32;16823:73;16888:6;16883:3;16879:16;16865:12;16849:14;16823:73;:::i;16907:660::-;17182:3;17171:9;17164:22;17145:4;17203:63;17261:3;17250:9;17246:19;17238:6;17203:63;:::i;:::-;17195:71;;17321:10;17312:6;17306:13;17302:30;17297:2;17286:9;17282:18;17275:58;17397:10;17391:2;17383:6;17379:15;17373:22;17369:39;17364:2;17353:9;17349:18;17342:67;17473:10;17467:2;17459:6;17455:15;17449:22;17445:39;17440:2;17429:9;17425:18;17418:67;17554:2;17546:6;17542:15;17536:22;17529:30;17522:38;17516:3;17505:9;17501:19;17494:67;16907:660;;;;;:::o;17572:408::-;17774:2;17756:21;;;17813:2;17793:18;;;17786:30;17852:34;17847:2;17832:18;;17825:62;-1:-1:-1;;;17918:2:150;17903:18;;17896:42;17970:3;17955:19;;17572:408::o;17985:::-;18187:2;18169:21;;;18226:2;18206:18;;;18199:30;18265:34;18260:2;18245:18;;18238:62;-1:-1:-1;;;18331:2:150;18316:18;;18309:42;18383:3;18368:19;;17985:408::o;19102:245::-;19169:6;19222:2;19210:9;19201:7;19197:23;19193:32;19190:52;;;19238:1;19235;19228:12;19190:52;19270:9;19264:16;19289:28;19311:5;19289:28;:::i;19762:167::-;19857:10;19830:18;;;19850;;;19826:43;;19881:19;;19878:45;;;19903:18;;:::i;19934:340::-;20143:2;20132:9;20125:21;20106:4;20163:62;20221:2;20210:9;20206:18;20198:6;20163:62;:::i;:::-;20155:70;;20261:6;20256:2;20245:9;20241:18;20234:34;19934:340;;;;;:::o;20279:493::-;20559:2;20548:9;20541:21;20598:2;20593;20582:9;20578:18;20571:30;-1:-1:-1;;;20632:2:150;20621:9;20617:18;20610:43;20691:3;20684:4;20673:9;20669:20;20662:33;20522:4;20712:54;20761:3;20750:9;20746:19;20738:6;20712:54;:::i;20777:338::-;20897:19;;-1:-1:-1;;;;;;20934:29:150;;;20983:1;20975:10;;20972:137;;;-1:-1:-1;;;;;;21044:1:150;21040:11;;;21037:1;21033:19;21029:46;;;21021:55;;21017:82;;-1:-1:-1;20972:137:150;;20777:338;;;;:::o;21120:127::-;21181:10;21176:3;21172:20;21169:1;21162:31;21212:4;21209:1;21202:15;21236:4;21233:1;21226:15;21613:407;21815:2;21797:21;;;21854:2;21834:18;;;21827:30;21893:34;21888:2;21873:18;;21866:62;-1:-1:-1;;;21959:2:150;21944:18;;21937:41;22010:3;21995:19;;21613:407::o;22025:508::-;-1:-1:-1;;;;;22268:6:150;22264:31;22253:9;22246:50;22361:1;22357;22352:3;22348:11;22344:19;22336:6;22332:32;22327:2;22316:9;22312:18;22305:60;22401:6;22396:2;22385:9;22381:18;22374:34;22444:3;22439:2;22428:9;22424:18;22417:31;22227:4;22465:62;22522:3;22511:9;22507:19;22499:6;22491;22465:62;:::i;:::-;22457:70;22025:508;-1:-1:-1;;;;;;;22025:508:150:o;23910:251::-;23980:6;24033:2;24021:9;24012:7;24008:23;24004:32;24001:52;;;24049:1;24046;24039:12;24001:52;24081:9;24075:16;24100:31;24125:5;24100:31;:::i;24373:287::-;24502:3;24540:6;24534:13;24556:66;24615:6;24610:3;24603:4;24595:6;24591:17;24556:66;:::i;:::-;24638:16;;;;;24373:287;-1:-1:-1;;24373:287:150:o;24665:217::-;24705:1;24731;24721:132;;24775:10;24770:3;24766:20;24763:1;24756:31;24810:4;24807:1;24800:15;24838:4;24835:1;24828:15;24721:132;-1:-1:-1;24867:9:150;;24665:217::o;25659:219::-;25808:2;25797:9;25790:21;25771:4;25828:44;25868:2;25857:9;25853:18;25845:6;25828:44;:::i", + "object": "0x6080604052600436106101ba575f3560e01c806379ba5097116100f2578063b6b55f2511610092578063e30c397811610062578063e30c39781461053f578063f2fde38b1461055c578063f3fef3a31461057b578063ffaad6a51461059a575f5ffd5b8063b6b55f25146104ba578063be32d1f4146104d9578063c28f4392146104f8578063dbaf21451461052b575f5ffd5b80638abf6077116100cd5780638abf6077146104205780638da5cb5b14610434578063a116e48614610451578063a7ab696114610470575f5ffd5b806379ba5097146103c5578063831518b7146103d95780638456cb591461040c575f5ffd5b8063391396de1161015d5780634f1ef286116101385780634f1ef2861461036a57806352d1902d1461037d5780635c975abb14610391578063715018a6146103b1575f5ffd5b8063391396de146103045780633f4ba83a14610323578063456cb7c614610337575f5ffd5b8063247ce85b11610198578063247ce85b1461023e5780633075db561461029457806333613cbe146102b85780633659cfe6146102e5575f5ffd5b806304f3bcec146101be57806319ab453c14610209578063226112801461022a575b5f5ffd5b3480156101c9575f5ffd5b507f00000000000000000000000000000000000000000000000000000000000000005b6040516001600160a01b0390911681526020015b60405180910390f35b348015610214575f5ffd5b50610228610223366004611954565b6105b9565b005b348015610235575f5ffd5b506102286106cb565b348015610249575f5ffd5b50610278610258366004611954565b60fb6020525f90815260409020805460019091015465ffffffffffff1682565b6040805192835265ffffffffffff909116602083015201610200565b34801561029f575f5ffd5b506102a861075d565b6040519015158152602001610200565b3480156102c3575f5ffd5b506102d76102d2366004611954565b610775565b604051908152602001610200565b3480156102f0575f5ffd5b506102286102ff366004611954565b610794565b34801561030f575f5ffd5b506102d761031e36600461196d565b61085b565b34801561032e575f5ffd5b506102286108e3565b348015610342575f5ffd5b506101ec7f000000000000000000000000000000000000000000000000000000000000000081565b6102286103783660046119a9565b61093c565b348015610388575f5ffd5b506102d76109f1565b34801561039c575f5ffd5b506102a860c954610100900460ff1660021490565b3480156103bc575f5ffd5b50610228610aa2565b3480156103d0575f5ffd5b50610228610ab3565b3480156103e4575f5ffd5b506102d77f000000000000000000000000000000000000000000000000000000000000000081565b348015610417575f5ffd5b50610228610b2a565b34801561042b575f5ffd5b506101ec610b7f565b34801561043f575f5ffd5b506033546001600160a01b03166101ec565b34801561045c575f5ffd5b506102a861046b36600461196d565b610b8d565b34801561047b575f5ffd5b506104a37f000000000000000000000000000000000000000000000000000000000000000081565b60405165ffffffffffff9091168152602001610200565b3480156104c5575f5ffd5b506102286104d4366004611a6d565b610bf0565b3480156104e4575f5ffd5b506102286104f336600461196d565b610c80565b348015610503575f5ffd5b506101ec7f000000000000000000000000000000000000000000000000000000000000000081565b348015610536575f5ffd5b50610228610cb9565b34801561054a575f5ffd5b506065546001600160a01b03166101ec565b348015610567575f5ffd5b50610228610576366004611954565b610db2565b348015610586575f5ffd5b5061022861059536600461196d565b610e23565b3480156105a5575f5ffd5b506102286105b436600461196d565b610f03565b5f54610100900460ff16158080156105d757505f54600160ff909116105b806105f05750303b1580156105f057505f5460ff166001145b6106585760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b5f805460ff191660011790558015610679575f805461ff0019166101001790555b61068282610fc5565b80156106c7575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b6106d3611023565b6106dd6002611052565b335f90815260fb60205260409020600181015465ffffffffffff16610715576040516387bdc6a960e01b815260040160405180910390fd5b60018101805465ffffffffffff1916905560405133907fc51fdb96728de385ec7859819e3997bc618362ef0dbca0ad051d856866cda3db905f90a25061075b6001611052565b565b5f600261076c60c95460ff1690565b60ff1614905090565b6001600160a01b0381165f90815260fb60205260408120545b92915050565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036107dc5760405162461bcd60e51b815260040161064f90611a84565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661080e611068565b6001600160a01b0316146108345760405162461bcd60e51b815260040161064f90611ad0565b61083d81611083565b604080515f808252602082019092526108589183919061108b565b50565b5f7f0000000000000000000000000000000000000000000000000000000000000000610886816111f5565b610890848461121e565b915081156108dc57836001600160a01b03167f85f32beeaff2d0019a8d196f06790c9a652191759c46643311344fd38920423c836040516108d391815260200190565b60405180910390a25b5092915050565b6108eb611261565b6108ff60c9805461ff001916610100179055565b6040513381527f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa9060200160405180910390a161075b335f611292565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036109845760405162461bcd60e51b815260040161064f90611a84565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166109b6611068565b6001600160a01b0316146109dc5760405162461bcd60e51b815260040161064f90611ad0565b6109e582611083565b6106c78282600161108b565b5f306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610a905760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c0000000000000000606482015260840161064f565b505f516020611c655f395f51905f5290565b610aaa611296565b61075b5f6112f0565b60655433906001600160a01b03168114610b215760405162461bcd60e51b815260206004820152602960248201527f4f776e61626c6532537465703a2063616c6c6572206973206e6f7420746865206044820152683732bb9037bbb732b960b91b606482015260840161064f565b610858816112f0565b610b32611309565b60c9805461ff0019166102001790556040513381527f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2589060200160405180910390a161075b336001611292565b5f610b88611068565b905090565b6001600160a01b0382165f90815260fb60205260408120610bce837f0000000000000000000000000000000000000000000000000000000000000000611b30565b815410801590610be85750600181015465ffffffffffff16155b949350505050565b610bf8611023565b610c026002611052565b610c376001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001633308461133b565b610c4133826113ac565b60405181815233907f8ed8c6869618197b68315ade66e75ed3906c97b111fa3ab81e5760046825c7db9060200160405180910390a26108586001611052565b7f0000000000000000000000000000000000000000000000000000000000000000610caa816111f5565b610cb483836113ac565b505050565b610cc1611023565b610ccb6002611052565b335f90815260fb602052604090208054610cf857604051634555262b60e01b815260040160405180910390fd5b600181015465ffffffffffff1615610d235760405163fb52063b60e01b815260040160405180910390fd5b60018101805465ffffffffffff4281811665ffffffffffff199093169290921790925533917fe670e4e82118d22a1f9ee18920455ebc958bae26a90a05d31d3378788b1b0e4491610d96917f00000000000000000000000000000000000000000000000000000000000000001690611b30565b60405190815260200160405180910390a25061075b6001611052565b610dba611296565b606580546001600160a01b0383166001600160a01b03199091168117909155610deb6033546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b610e2b611023565b610e356002611052565b335f90815260fb60205260409020600181015465ffffffffffff161580610e9a57506001810154610e8f907f00000000000000000000000000000000000000000000000000000000000000009065ffffffffffff16611b43565b65ffffffffffff1642105b15610eed5780547f000000000000000000000000000000000000000000000000000000000000000090610ece908490611b61565b1015610eed576040516321f68cc160e21b815260040160405180910390fd5b610ef8338484611415565b506106c76001611052565b610f0b611023565b610f156002611052565b6001600160a01b038216610f3c57604051634e46966960e11b815260040160405180910390fd5b610f716001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001633308461133b565b610f7b82826113ac565b6040518181526001600160a01b0383169033907fd723e7d201efb4985d2e17282a1a09e756601f0b4a724d36ea60913ecae4ae9a9060200160405180910390a36106c76001611052565b5f54610100900460ff16610feb5760405162461bcd60e51b815260040161064f90611b74565b610ff361149f565b6110116001600160a01b0382161561100b57816112f0565b336112f0565b5060c9805461ff001916610100179055565b600261103160c95460ff1690565b60ff160361075b5760405163dfc60d8560e01b815260040160405180910390fd5b60c9805460ff191660ff92909216919091179055565b5f516020611c655f395f51905f52546001600160a01b031690565b610858611296565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff16156110be57610cb4836114c5565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611118575060408051601f3d908101601f1916820190925261111591810190611bbf565b60015b61117b5760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b606482015260840161064f565b5f516020611c655f395f51905f5281146111e95760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b606482015260840161064f565b50610cb4838383611560565b336001600160a01b03821614610858576040516395383ea160e01b815260040160405180910390fd5b6001600160a01b0382165f90815260fb60205260408120805483106112495780545f825591506108dc565b8054839250611259908390611b61565b905592915050565b61127560c954610100900460ff1660021490565b61075b5760405163bae6e2a960e01b815260040160405180910390fd5b6106c75b6033546001600160a01b0316331461075b5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161064f565b606580546001600160a01b031916905561085881611584565b61131d60c954610100900460ff1660021490565b1561075b5760405163bae6e2a960e01b815260040160405180910390fd5b6040516001600160a01b03808516602483015283166044820152606481018290526113a69085906323b872dd60e01b906084015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b0319909316929092179091526115d5565b50505050565b6001600160a01b0382165f90815260fb6020526040902080546113d0908390611b30565b81556040518281526001600160a01b038416907f6de6fe586196fa05b73b973026c5fda3968a2933989bff3a0b6bd57644fab6069060200160405180910390a2505050565b5f611420848361121e565b90506114566001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001684836116a8565b836001600160a01b03167f0d41118e36df44efb77a471fc49fb9c0be0406d802ef95520e9fbf606e65b4558260405161149191815260200190565b60405180910390a250505050565b5f54610100900460ff1661075b5760405162461bcd60e51b815260040161064f90611b74565b6001600160a01b0381163b6115325760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840161064f565b5f516020611c655f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b611569836116d8565b5f825111806115755750805b15610cb4576113a68383611717565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b5f611629826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166117439092919063ffffffff16565b905080515f14806116495750808060200190518101906116499190611bd6565b610cb45760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b606482015260840161064f565b6040516001600160a01b038316602482015260448101829052610cb490849063a9059cbb60e01b9060640161136f565b6116e1816114c5565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b606061173c8383604051806060016040528060278152602001611c8560279139611751565b9392505050565b6060610be884845f856117c5565b60605f5f856001600160a01b03168560405161176d9190611c17565b5f60405180830381855af49150503d805f81146117a5576040519150601f19603f3d011682016040523d82523d5f602084013e6117aa565b606091505b50915091506117bb8683838761189c565b9695505050505050565b6060824710156118265760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b606482015260840161064f565b5f5f866001600160a01b031685876040516118419190611c17565b5f6040518083038185875af1925050503d805f811461187b576040519150601f19603f3d011682016040523d82523d5f602084013e611880565b606091505b50915091506118918783838761189c565b979650505050505050565b6060831561190a5782515f03611903576001600160a01b0385163b6119035760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161064f565b5081610be8565b610be8838381511561191f5781518083602001fd5b8060405162461bcd60e51b815260040161064f9190611c32565b80356001600160a01b038116811461194f575f5ffd5b919050565b5f60208284031215611964575f5ffd5b61173c82611939565b5f5f6040838503121561197e575f5ffd5b61198783611939565b946020939093013593505050565b634e487b7160e01b5f52604160045260245ffd5b5f5f604083850312156119ba575f5ffd5b6119c383611939565b9150602083013567ffffffffffffffff8111156119de575f5ffd5b8301601f810185136119ee575f5ffd5b803567ffffffffffffffff811115611a0857611a08611995565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715611a3757611a37611995565b604052818152828201602001871015611a4e575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f60208284031215611a7d575f5ffd5b5035919050565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b634e487b7160e01b5f52601160045260245ffd5b8082018082111561078e5761078e611b1c565b65ffffffffffff818116838216019081111561078e5761078e611b1c565b8181038181111561078e5761078e611b1c565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b5f60208284031215611bcf575f5ffd5b5051919050565b5f60208284031215611be6575f5ffd5b8151801515811461173c575f5ffd5b5f5b83811015611c0f578181015183820152602001611bf7565b50505f910152565b5f8251611c28818460208701611bf5565b9190910192915050565b602081525f8251806020840152611c50816040850160208701611bf5565b601f01601f1916919091016040019291505056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212208631ea18b120dd608cae3a5d1f20512dffdc4afab9092db6c85c4d2fb0413eb864736f6c634300081e0033", + "sourceMap": "498:7572:4:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5694:92:12;;;;;;;;;;-1:-1:-1;5769:10:12;5694:92;;;-1:-1:-1;;;;;178:32:150;;;160:51;;148:2;133:18;5694:92:12;;;;;;;;2503::4;;;;;;;;;;-1:-1:-1;2503:92:4;;;;;:::i;:::-;;:::i;:::-;;4893:267;;;;;;;;;;;;;:::i;1506:49::-;;;;;;;;;;-1:-1:-1;1506:49:4;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;763:25:150;;;836:14;824:27;;;819:2;804:18;;797:55;736:18;1506:49:4;591:267:150;5484:104:12;;;;;;;;;;;;;:::i;:::-;;;1028:14:150;;1021:22;1003:41;;991:2;976:18;5484:104:12;863:187:150;3335:123:4;;;;;;;;;;-1:-1:-1;3335:123:4;;;;;:::i;:::-;;:::i;:::-;;;1201:25:150;;;1189:2;1174:18;3335:123:4;1055:177:150;3143:195:84;;;;;;;;;;-1:-1:-1;3143:195:84;;;;;:::i;:::-;;:::i;2803:326:4:-;;;;;;;;;;-1:-1:-1;2803:326:4;;;;;:::i;:::-;;:::i;4911:245:12:-;;;;;;;;;;;;;:::i;858:35:4:-;;;;;;;;;;;;;;;3657:220:84;;;;;;:::i;:::-;;:::i;2762:131::-;;;;;;;;;;;;;:::i;5384:94:12:-;;;;;;;;;;;;5454:8;;;;;:17;:8;650:1;5454:17;;5384:94;2085:101:43;;;;;;;;;;;;;:::i;2031:212:42:-;;;;;;;;;;;;;:::i;1020:32:4:-;;;;;;;;;;;;;;;4625:241:12;;;;;;;;;;;;;:::i;5162:90::-;;;;;;;;;;;;;:::i;1462:85:43:-;;;;;;;;;;-1:-1:-1;1534:6:43;;-1:-1:-1;;;;;1534:6:43;1462:85;;4132:296:4;;;;;;;;;;-1:-1:-1;4132:296:4;;;;;:::i;:::-;;:::i;1421:39::-;;;;;;;;;;;;;;;;;;3053:14:150;3041:27;;;3023:46;;3011:2;2996:18;1421:39:4;2879:196:150;3497:228:4;;;;;;;;;;-1:-1:-1;3497:228:4;;;;;:::i;:::-;;:::i;3168:128::-;;;;;;;;;;-1:-1:-1;3168:128:4;;;;;:::i;:::-;;:::i;942:33::-;;;;;;;;;;;;;;;4467:387;;;;;;;;;;;;;:::i;1144:99:42:-;;;;;;;;;;-1:-1:-1;1223:13:42;;-1:-1:-1;;;;;1223:13:42;1144:99;;1436:178;;;;;;;;;;-1:-1:-1;1436:178:42;;;;;:::i;:::-;;:::i;5199:534:4:-;;;;;;;;;;-1:-1:-1;5199:534:4;;;;;:::i;:::-;;:::i;3764:329::-;;;;;;;;;;-1:-1:-1;3764:329:4;;;;;:::i;:::-;;:::i;2503:92::-;3279:19:48;3302:13;;;;;;3301:14;;3347:34;;;;-1:-1:-1;3365:12:48;;3380:1;3365:12;;;;:16;3347:34;3346:108;;;-1:-1:-1;3426:4:48;1713:19:64;:23;;;3387:66:48;;-1:-1:-1;3436:12:48;;;;;:17;3387:66;3325:201;;;;-1:-1:-1;;;3325:201:48;;3737:2:150;3325:201:48;;;3719:21:150;3776:2;3756:18;;;3749:30;3815:34;3795:18;;;3788:62;-1:-1:-1;;;3866:18:150;;;3859:44;3920:19;;3325:201:48;;;;;;;;;3536:12;:16;;-1:-1:-1;;3536:16:48;3551:1;3536:16;;;3562:65;;;;3596:13;:20;;-1:-1:-1;;3596:20:48;;;;;3562:65;2564:24:4::1;2581:6;2564:16;:24::i;:::-;3651:14:48::0;3647:99;;;3697:5;3681:21;;-1:-1:-1;;3681:21:48;;;3721:14;;-1:-1:-1;4102:36:150;;3721:14:48;;4090:2:150;4075:18;3721:14:48;;;;;;;3647:99;3269:483;2503:92:4;:::o;4893:267::-;2345:18:12;:16;:18::i;:::-;2373:24;650:1;2373:17;:24::i;:::-;4979:10:4::1;4953:18;4974:16:::0;;;:4:::1;:16;::::0;;;;5008:27:::1;::::0;::::1;::::0;::::1;;5000:65;;;;-1:-1:-1::0;;;5000:65:4::1;;;;;;;;;;;;5076:27;::::0;::::1;:31:::0;;-1:-1:-1;;5076:31:4::1;::::0;;5122::::1;::::0;5142:10:::1;::::0;5122:31:::1;::::0;5106:1:::1;::::0;5122:31:::1;4943:217;2418:25:12::0;611:1;2418:17;:25::i;:::-;4893:267:4:o;5484:104:12:-;5531:4;650:1;5554:18;6882:9;;;;;6786:112;5554:18;:27;;;5547:34;;5484:104;:::o;3335:123:4:-;-1:-1:-1;;;;;7683:14:4;;3400:7;7683:14;;;:4;:14;;;;;:22;3426:25;3419:32;3335:123;-1:-1:-1;;3335:123:4:o;3143:195:84:-;-1:-1:-1;;;;;1654:6:84;1637:23;1645:4;1637:23;1629:80;;;;-1:-1:-1;;;1629:80:84;;;;;;;:::i;:::-;1751:6;-1:-1:-1;;;;;1727:30:84;:20;:18;:20::i;:::-;-1:-1:-1;;;;;1727:30:84;;1719:87;;;;-1:-1:-1;;;1719:87:84;;;;;;;:::i;:::-;3224:36:::1;3242:17;3224;:36::i;:::-;3311:12;::::0;;3321:1:::1;3311:12:::0;;;::::1;::::0;::::1;::::0;;;3270:61:::1;::::0;3292:17;;3311:12;3270:21:::1;:61::i;:::-;3143:195:::0;:::o;2803:326:4:-;2940:22;2911:10;3925:17:12;3936:5;3925:10;:17::i;:::-;2995:27:4::1;3006:8;3016:5;2995:10;:27::i;:::-;2978:44:::0;-1:-1:-1;3036:18:4;;3032:91:::1;;3087:8;-1:-1:-1::0;;;;;3075:37:4::1;;3097:14;3075:37;;;;1201:25:150::0;;1189:2;1174:18;;1055:177;3075:37:4::1;;;;;;;;3032:91;2803:326:::0;;;;;:::o;4911:245:12:-;2575:14;:12;:14::i;:::-;4958:10:::1;6435:8:::0;:17;;-1:-1:-1;;6435:17:12;;;;;6388:71;4958:10:::1;4983:20;::::0;4992:10:::1;160:51:150::0;;4983:20:12::1;::::0;148:2:150;133:18;4983:20:12::1;;;;;;;5115:34;5131:10;5143:5;5115:15;:34::i;3657:220:84:-:0;-1:-1:-1;;;;;1654:6:84;1637:23;1645:4;1637:23;1629:80;;;;-1:-1:-1;;;1629:80:84;;;;;;;:::i;:::-;1751:6;-1:-1:-1;;;;;1727:30:84;:20;:18;:20::i;:::-;-1:-1:-1;;;;;1727:30:84;;1719:87;;;;-1:-1:-1;;;1719:87:84;;;;;;;:::i;:::-;3772:36:::1;3790:17;3772;:36::i;:::-;3818:52;3840:17;3859:4;3865;3818:21;:52::i;2762:131::-:0;2840:7;2080:4;-1:-1:-1;;;;;2089:6:84;2072:23;;2064:92;;;;-1:-1:-1;;;2064:92:84;;5177:2:150;2064:92:84;;;5159:21:150;5216:2;5196:18;;;5189:30;5255:34;5235:18;;;5228:62;5326:26;5306:18;;;5299:54;5370:19;;2064:92:84;4975:420:150;2064:92:84;-1:-1:-1;;;;;;;;;;;;2762:131:84;:::o;2085:101:43:-;1355:13;:11;:13::i;:::-;2149:30:::1;2176:1;2149:18;:30::i;2031:212:42:-:0;1223:13;;965:10:65;;-1:-1:-1;;;;;1223:13:42;2130:24;;2122:78;;;;-1:-1:-1;;;2122:78:42;;5602:2:150;2122:78:42;;;5584:21:150;5641:2;5621:18;;;5614:30;5680:34;5660:18;;;5653:62;-1:-1:-1;;;5731:18:150;;;5724:39;5780:19;;2122:78:42;5400:405:150;2122:78:42;2210:26;2229:6;2210:18;:26::i;4625:241:12:-;2739:17;:15;:17::i;:::-;6359:8;:16;;-1:-1:-1;;6359:16:12;;;;;4696:18:::1;::::0;4703:10:::1;160:51:150::0;;4696:18:12::1;::::0;148:2:150;133:18;4696::12::1;;;;;;;4826:33;4842:10;4854:4;4826:15;:33::i;5162:90::-:0;5199:7;5225:20;:18;:20::i;:::-;5218:27;;5162:90;:::o;4132:296:4:-;-1:-1:-1;;;;;4312:14:4;;4271:4;4312:14;;;:4;:14;;;;;4360:25;4370:15;4360:7;:25;:::i;:::-;4343:13;;:42;;;;:78;;-1:-1:-1;4389:27:4;;;;;;:32;4343:78;4336:85;4132:296;-1:-1:-1;;;;4132:296:4:o;3497:228::-;2345:18:12;:16;:18::i;:::-;2373:24;650:1;2373:17;:24::i;:::-;3563:62:4::1;-1:-1:-1::0;;;;;3563:9:4::1;:26;3590:10;3610:4;3617:7:::0;3563:26:::1;:62::i;:::-;3636:32;3648:10;3660:7;3636:11;:32::i;:::-;3684:34;::::0;1201:25:150;;;3698:10:4::1;::::0;3684:34:::1;::::0;1189:2:150;1174:18;3684:34:4::1;;;;;;;2418:25:12::0;611:1;2418:17;:25::i;3168:128:4:-;3239:10;3925:17:12;3936:5;3925:10;:17::i;:::-;3261:28:4::1;3273:8;3283:5;3261:11;:28::i;:::-;3168:128:::0;;;:::o;4467:387::-;2345:18:12;:16;:18::i;:::-;2373:24;650:1;2373:17;:24::i;:::-;4554:10:4::1;4528:18;4549:16:::0;;;:4:::1;:16;::::0;;;;4583:13;;4575:46:::1;;;;-1:-1:-1::0;;;4575:46:4::1;;;;;;;;;;;;4639:27;::::0;::::1;::::0;::::1;;:32:::0;4631:71:::1;;;;-1:-1:-1::0;;;4631:71:4::1;;;;;;;;;;;;4713:27;::::0;::::1;:53:::0;;::::1;4750:15;4713:53:::0;;::::1;-1:-1:-1::0;;4713:53:4;;::::1;::::0;;;::::1;::::0;;;4801:10:::1;::::0;4781:66:::1;::::0;4813:33:::1;::::0;4831:15:::1;4813:33;::::0;::::1;:::i;:::-;4781:66;::::0;1201:25:150;;;1189:2;1174:18;4781:66:4::1;;;;;;;4518:336;2418:25:12::0;611:1;2418:17;:25::i;1436:178:42:-;1355:13:43;:11;:13::i;:::-;1525::42::1;:24:::0;;-1:-1:-1;;;;;1525:24:42;::::1;-1:-1:-1::0;;;;;;1525:24:42;;::::1;::::0;::::1;::::0;;;1589:7:::1;1534:6:43::0;;-1:-1:-1;;;;;1534:6:43;;1462:85;1589:7:42::1;-1:-1:-1::0;;;;;1564:43:42::1;;;;;;;;;;;1436:178:::0;:::o;5199:534:4:-;2345:18:12;:16;:18::i;:::-;2373:24;650:1;2373:17;:24::i;:::-;5305:10:4::1;5279:18;5300:16:::0;;;:4:::1;:16;::::0;;;;5344:27:::1;::::0;::::1;::::0;::::1;;:32:::0;;:115:::1;;-1:-1:-1::0;5414:27:4::1;::::0;::::1;::::0;:45:::1;::::0;5444:15:::1;::::0;5414:27:::1;;:45;:::i;:::-;5396:63;;:15;:63;5344:115;5327:354;;;5612:13:::0;;5639:7:::1;::::0;5612:23:::1;::::0;5628:7;;5612:23:::1;:::i;:::-;:34;;5604:66;;;;-1:-1:-1::0;;;5604:66:4::1;;;;;;;;;;;;5691:35;5701:10;5713:3;5718:7;5691:9;:35::i;:::-;5269:464;2418:25:12::0;611:1;2418:17;:25::i;3764:329:4:-;2345:18:12;:16;:18::i;:::-;2373:24;650:1;2373:17;:24::i;:::-;-1:-1:-1;;;;;3860:24:4;::::1;3852:53;;;;-1:-1:-1::0;;;3852:53:4::1;;;;;;;;;;;;3916:62;-1:-1:-1::0;;;;;3916:9:4::1;:26;3943:10;3963:4;3970:7:::0;3916:26:::1;:62::i;:::-;3989:32;4001:10;4013:7;3989:11;:32::i;:::-;4037:49;::::0;1201:25:150;;;-1:-1:-1;;;;;4037:49:4;::::1;::::0;4054:10:::1;::::0;4037:49:::1;::::0;1189:2:150;1174:18;4037:49:4::1;;;;;;;2418:25:12::0;611:1;2418:17;:25::i;6100:208::-;5374:13:48;;;;;;;5366:69;;;;-1:-1:-1;;;5366:69:48;;;;;;;:::i;:::-;6186:16:12::1;:14;:16::i;:::-;6212:62;-1:-1:-1::0;;;;;6231:20:12;::::1;::::0;:42:::1;;6267:6;6212:18;:62::i;6231:42::-;6254:10;6212:18;:62::i;:::-;-1:-1:-1::0;6284:8:12::1;:17:::0;;-1:-1:-1;;6284:17:12::1;;;::::0;;6100:208::o;7216:112::-;650:1;7275:18;6882:9;;;;;6786:112;7275:18;:27;;;7267:54;;;;-1:-1:-1;;;7267:54:12;;;;;;;;;;;6653:97;6723:9;:20;;-1:-1:-1;;6723:20:12;;;;;;;;;;;;6653:97::o;1175:140:80:-;-1:-1:-1;;;;;;;;;;;1254:54:80;-1:-1:-1;;;;;1254:54:80;;1175:140::o;6465:75:12:-;1355:13:43;:11;:13::i;2494:922:80:-;689:66;2910:48;;;2906:504;;;2974:37;2993:17;2974:18;:37::i;2906:504::-;3064:17;-1:-1:-1;;;;;3046:50:80;;:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3046:52:80;;;;;;;;-1:-1:-1;;3046:52:80;;;;;;;;;;;;:::i;:::-;;;3042:291;;3262:56;;-1:-1:-1;;;3262:56:80;;7192:2:150;3262:56:80;;;7174:21:150;7231:2;7211:18;;;7204:30;7270:34;7250:18;;;7243:62;-1:-1:-1;;;7321:18:150;;;7314:44;7375:19;;3262:56:80;6990:410:150;3042:291:80;-1:-1:-1;;;;;;;;;;;3148:28:80;;3140:82;;;;-1:-1:-1;;;3140:82:80;;7607:2:150;3140:82:80;;;7589:21:150;7646:2;7626:18;;;7619:30;7685:34;7665:18;;;7658:62;-1:-1:-1;;;7736:18:150;;;7729:39;7785:19;;3140:82:80;7405:405:150;3140:82:80;3099:138;3346:53;3364:17;3383:4;3389:9;3346:17;:53::i;8056:110:12:-;8122:10;-1:-1:-1;;;;;8122:19:12;;;8114:45;;;;-1:-1:-1;;;8114:45:12;;;;;;;;;;;6144:411:4;-1:-1:-1;;;;;6310:14:4;;6253:20;6310:14;;;:4;:14;;;;;6339:13;;:22;-1:-1:-1;6335:214:4;;6392:13;;;6419:17;;6392:13;-1:-1:-1;6335:214:4;;;6517:13;;6482:5;;-1:-1:-1;6517:21:4;;6482:5;;6517:21;:::i;:::-;6501:37;;6144:411;;-1:-1:-1;;6144:411:4:o;7334:95:12:-;7389:8;5454;;;;;:17;:8;650:1;5454:17;;5384:94;7389:8;7381:41;;;;-1:-1:-1;;;7381:41:12;;;;;;;;;;;6546:70;1355:13:43;1620:130;1534:6;;-1:-1:-1;;;;;1534:6:43;965:10:65;1683:23:43;1675:68;;;;-1:-1:-1;;;1675:68:43;;8017:2:150;1675:68:43;;;7999:21:150;;;8036:18;;;8029:30;8095:34;8075:18;;;8068:62;8147:18;;1675:68:43;7815:356:150;1798:153:42;1887:13;1880:20;;-1:-1:-1;;;;;;1880:20:42;;;1910:34;1935:8;1910:24;:34::i;7435:99:12:-;7494:8;5454;;;;;:17;:8;650:1;5454:17;;5384:94;7494:8;7493:9;7485:42;;;;-1:-1:-1;;;7485:42:12;;;;;;;;;;;1355:203:91;1482:68;;-1:-1:-1;;;;;8396:32:150;;;1482:68:91;;;8378:51:150;8465:32;;8445:18;;;8438:60;8514:18;;;8507:34;;;1455:96:91;;1475:5;;-1:-1:-1;;;1505:27:91;8351:18:150;;1482:68:91;;;;-1:-1:-1;;1482:68:91;;;;;;;;;;;;;;-1:-1:-1;;;;;1482:68:91;-1:-1:-1;;;;;;1482:68:91;;;;;;;;;;1455:19;:96::i;:::-;1355:203;;;;:::o;6735:206:4:-;-1:-1:-1;;;;;6829:14:4;;6808:18;6829:14;;;:4;:14;;;;;6869:13;;:21;;6885:5;;6869:21;:::i;:::-;6853:37;;6905:29;;1201:25:150;;;-1:-1:-1;;;;;6905:29:4;;;;;1189:2:150;1174:18;6905:29:4;;;;;;;6798:143;6735:206;;:::o;7183:224::-;7266:15;7284:26;7295:5;7302:7;7284:10;:26::i;:::-;7266:44;-1:-1:-1;7320:36:4;-1:-1:-1;;;;;7320:9:4;:22;7343:3;7266:44;7320:22;:36::i;:::-;7385:5;-1:-1:-1;;;;;7371:29:4;;7392:7;7371:29;;;;1201:25:150;;1189:2;1174:18;;1055:177;7371:29:4;;;;;;;;7256:151;7183:224;;;:::o;747:59:65:-;5374:13:48;;;;;;;5366:69;;;;-1:-1:-1;;;5366:69:48;;;;;;;:::i;1406:259:80:-;-1:-1:-1;;;;;1713:19:64;;;1479:95:80;;;;-1:-1:-1;;;1479:95:80;;8754:2:150;1479:95:80;;;8736:21:150;8793:2;8773:18;;;8766:30;8832:34;8812:18;;;8805:62;-1:-1:-1;;;8883:18:150;;;8876:43;8936:19;;1479:95:80;8552:409:150;1479:95:80;-1:-1:-1;;;;;;;;;;;1584:74:80;;-1:-1:-1;;;;;;1584:74:80;-1:-1:-1;;;;;1584:74:80;;;;;;;;;;1406:259::o;2057:265::-;2165:29;2176:17;2165:10;:29::i;:::-;2222:1;2208:4;:11;:15;:28;;;;2227:9;2208:28;2204:112;;;2252:53;2281:17;2300:4;2252:28;:53::i;2687:187:43:-;2779:6;;;-1:-1:-1;;;;;2795:17:43;;;-1:-1:-1;;;;;;2795:17:43;;;;;;;2827:40;;2779:6;;;2795:17;2779:6;;2827:40;;2760:16;;2827:40;2750:124;2687:187;:::o;5196:642:91:-;5615:23;5641:69;5669:4;5641:69;;;;;;;;;;;;;;;;;5649:5;-1:-1:-1;;;;;5641:27:91;;;:69;;;;;:::i;:::-;5615:95;;5728:10;:17;5749:1;5728:22;:56;;;;5765:10;5754:30;;;;;;;;;;;;:::i;:::-;5720:111;;;;-1:-1:-1;;;5720:111:91;;9450:2:150;5720:111:91;;;9432:21:150;9489:2;9469:18;;;9462:30;9528:34;9508:18;;;9501:62;-1:-1:-1;;;9579:18:150;;;9572:40;9629:19;;5720:111:91;9248:406:150;941:175:91;1050:58;;-1:-1:-1;;;;;9851:32:150;;1050:58:91;;;9833:51:150;9900:18;;;9893:34;;;1023:86:91;;1043:5;;-1:-1:-1;;;1073:23:91;9806:18:150;;1050:58:91;9659:274:150;1771:152:80;1837:37;1856:17;1837:18;:37::i;:::-;1889:27;;-1:-1:-1;;;;;1889:27:80;;;;;;;;1771:152;:::o;6674:198:94:-;6757:12;6788:77;6809:6;6817:4;6788:77;;;;;;;;;;;;;;;;;:20;:77::i;:::-;6781:84;6674:198;-1:-1:-1;;;6674:198:94:o;4108:223::-;4241:12;4272:52;4294:6;4302:4;4308:1;4311:12;4272:21;:52::i;7058:325::-;7199:12;7224;7238:23;7265:6;-1:-1:-1;;;;;7265:19:94;7285:4;7265:25;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7223:67;;;;7307:69;7334:6;7342:7;7351:10;7363:12;7307:26;:69::i;:::-;7300:76;7058:325;-1:-1:-1;;;;;;7058:325:94:o;5165:446::-;5330:12;5387:5;5362:21;:30;;5354:81;;;;-1:-1:-1;;;5354:81:94;;10687:2:150;5354:81:94;;;10669:21:150;10726:2;10706:18;;;10699:30;10765:34;10745:18;;;10738:62;-1:-1:-1;;;10816:18:150;;;10809:36;10862:19;;5354:81:94;10485:402:150;5354:81:94;5446:12;5460:23;5487:6;-1:-1:-1;;;;;5487:11:94;5506:5;5513:4;5487:31;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5445:73;;;;5535:69;5562:6;5570:7;5579:10;5591:12;5535:26;:69::i;:::-;5528:76;5165:446;-1:-1:-1;;;;;;;5165:446:94:o;7671:628::-;7851:12;7879:7;7875:418;;;7906:10;:17;7927:1;7906:22;7902:286;;-1:-1:-1;;;;;1713:19:64;;;8113:60:94;;;;-1:-1:-1;;;8113:60:94;;11094:2:150;8113:60:94;;;11076:21:150;11133:2;11113:18;;;11106:30;11172:31;11152:18;;;11145:59;11221:18;;8113:60:94;10892:353:150;8113:60:94;-1:-1:-1;8208:10:94;8201:17;;7875:418;8249:33;8257:10;8269:12;8980:17;;:21;8976:379;;9208:10;9202:17;9264:15;9251:10;9247:2;9243:19;9236:44;8976:379;9331:12;9324:20;;-1:-1:-1;;;9324:20:94;;;;;;;;:::i;222:173:150:-;290:20;;-1:-1:-1;;;;;339:31:150;;329:42;;319:70;;385:1;382;375:12;319:70;222:173;;;:::o;400:186::-;459:6;512:2;500:9;491:7;487:23;483:32;480:52;;;528:1;525;518:12;480:52;551:29;570:9;551:29;:::i;1237:300::-;1305:6;1313;1366:2;1354:9;1345:7;1341:23;1337:32;1334:52;;;1382:1;1379;1372:12;1334:52;1405:29;1424:9;1405:29;:::i;:::-;1395:39;1503:2;1488:18;;;;1475:32;;-1:-1:-1;;;1237:300:150:o;1542:127::-;1603:10;1598:3;1594:20;1591:1;1584:31;1634:4;1631:1;1624:15;1658:4;1655:1;1648:15;1674:1018;1751:6;1759;1812:2;1800:9;1791:7;1787:23;1783:32;1780:52;;;1828:1;1825;1818:12;1780:52;1851:29;1870:9;1851:29;:::i;:::-;1841:39;;1931:2;1920:9;1916:18;1903:32;1958:18;1950:6;1947:30;1944:50;;;1990:1;1987;1980:12;1944:50;2013:22;;2066:4;2058:13;;2054:27;-1:-1:-1;2044:55:150;;2095:1;2092;2085:12;2044:55;2135:2;2122:16;2161:18;2153:6;2150:30;2147:56;;;2183:18;;:::i;:::-;2232:2;2226:9;2324:2;2286:17;;-1:-1:-1;;2282:31:150;;;2315:2;2278:40;2274:54;2262:67;;2359:18;2344:34;;2380:22;;;2341:62;2338:88;;;2406:18;;:::i;:::-;2442:2;2435:22;2466;;;2507:15;;;2524:2;2503:24;2500:37;-1:-1:-1;2497:57:150;;;2550:1;2547;2540:12;2497:57;2606:6;2601:2;2597;2593:11;2588:2;2580:6;2576:15;2563:50;2659:1;2654:2;2645:6;2637;2633:19;2629:28;2622:39;2680:6;2670:16;;;;;1674:1018;;;;;:::o;3080:226::-;3139:6;3192:2;3180:9;3171:7;3167:23;3163:32;3160:52;;;3208:1;3205;3198:12;3160:52;-1:-1:-1;3253:23:150;;3080:226;-1:-1:-1;3080:226:150:o;4149:408::-;4351:2;4333:21;;;4390:2;4370:18;;;4363:30;4429:34;4424:2;4409:18;;4402:62;-1:-1:-1;;;4495:2:150;4480:18;;4473:42;4547:3;4532:19;;4149:408::o;4562:::-;4764:2;4746:21;;;4803:2;4783:18;;;4776:30;4842:34;4837:2;4822:18;;4815:62;-1:-1:-1;;;4908:2:150;4893:18;;4886:42;4960:3;4945:19;;4562:408::o;5810:127::-;5871:10;5866:3;5862:20;5859:1;5852:31;5902:4;5899:1;5892:15;5926:4;5923:1;5916:15;5942:125;6007:9;;;6028:10;;;6025:36;;;6041:18;;:::i;6072:179::-;6171:14;6140:22;;;6164;;;6136:51;;6199:23;;6196:49;;;6225:18;;:::i;6256:128::-;6323:9;;;6344:11;;;6341:37;;;6358:18;;:::i;6389:407::-;6591:2;6573:21;;;6630:2;6610:18;;;6603:30;6669:34;6664:2;6649:18;;6642:62;-1:-1:-1;;;6735:2:150;6720:18;;6713:41;6786:3;6771:19;;6389:407::o;6801:184::-;6871:6;6924:2;6912:9;6903:7;6899:23;6895:32;6892:52;;;6940:1;6937;6930:12;6892:52;-1:-1:-1;6963:16:150;;6801:184;-1:-1:-1;6801:184:150:o;8966:277::-;9033:6;9086:2;9074:9;9065:7;9061:23;9057:32;9054:52;;;9102:1;9099;9092:12;9054:52;9134:9;9128:16;9187:5;9180:13;9173:21;9166:5;9163:32;9153:60;;9209:1;9206;9199:12;9938:250;10023:1;10033:113;10047:6;10044:1;10041:13;10033:113;;;10123:11;;;10117:18;10104:11;;;10097:39;10069:2;10062:10;10033:113;;;-1:-1:-1;;10180:1:150;10162:16;;10155:27;9938:250::o;10193:287::-;10322:3;10360:6;10354:13;10376:66;10435:6;10430:3;10423:4;10415:6;10411:17;10376:66;:::i;:::-;10458:16;;;;;10193:287;-1:-1:-1;;10193:287:150:o;11250:396::-;11399:2;11388:9;11381:21;11362:4;11431:6;11425:13;11474:6;11469:2;11458:9;11454:18;11447:34;11490:79;11562:6;11557:2;11546:9;11542:18;11537:2;11529:6;11525:15;11490:79;:::i;:::-;11630:2;11609:15;-1:-1:-1;;11605:29:150;11590:45;;;;11637:2;11586:54;;11250:396;-1:-1:-1;;11250:396:150:o", "linkReferences": {}, "immutableReferences": { - "20913": [ + "1526": [ { - "start": 4585, + "start": 840, "length": 32 }, { - "start": 4649, + "start": 2142, "length": 32 }, { - "start": 4875, + "start": 3202, "length": 32 - }, + } + ], + "1530": [ { - "start": 4939, + "start": 1289, "length": 32 }, { - "start": 5058, + "start": 3087, "length": 32 - } - ], - "2530": [ + }, { - "start": 1081, + "start": 3913, "length": 32 }, { - "start": 1841, + "start": 5167, "length": 32 - }, + } + ], + "1533": [ { - "start": 2137, + "start": 1002, "length": 32 }, { - "start": 3332, + "start": 2986, "length": 32 }, { - "start": 3850, + "start": 3747, "length": 32 - }, + } + ], + "1536": [ { - "start": 3923, + "start": 1153, "length": 32 }, { - "start": 5268, + "start": 3440, "length": 32 }, { - "start": 5396, + "start": 3682, + "length": 32 + } + ], + "20913": [ + { + "start": 1950, "length": 32 }, { - "start": 6071, + "start": 2014, "length": 32 }, { - "start": 6331, + "start": 2374, "length": 32 }, { - "start": 6478, + "start": 2438, "length": 32 }, { - "start": 6843, + "start": 2557, "length": 32 } ], "4312": [ { - "start": 559, - "length": 32 - }, - { - "start": 9517, + "start": 460, "length": 32 } ] } }, "methodIdentifiers": { - "GAS_OVERHEAD()": "a730cdfb", - "GAS_RESERVE()": "be880c81", - "RELAYER_MAX_PROOF_BYTES()": "422770fa", "acceptOwnership()": "79ba5097", - "context()": "d0496d6a", - "failMessage((uint64,uint64,uint32,address,uint64,address,uint64,address,address,uint256,bytes))": "913b16cb", - "getMessageMinGasLimit(uint256)": "7cbadfaa", - "hashMessage((uint64,uint64,uint32,address,uint64,address,uint64,address,address,uint256,bytes))": "c012fa77", + "authorized()": "456cb7c6", + "bond(address)": "247ce85b", + "bondToken()": "c28f4392", + "cancelWithdrawal()": "22611280", + "creditBond(address,uint256)": "be32d1f4", + "debitBond(address,uint256)": "391396de", + "deposit(uint256)": "b6b55f25", + "depositTo(address,uint256)": "ffaad6a5", + "getBondBalance(address)": "33613cbe", + "hasSufficientBond(address,uint256)": "a116e486", "impl()": "8abf6077", "inNonReentrant()": "3075db56", "init(address)": "19ab453c", - "init2()": "069489a2", - "isDestChainEnabled(uint64)": "8e3881a9", - "isMessageFailed((uint64,uint64,uint32,address,uint64,address,uint64,address,address,uint256,bytes),bytes)": "5862f6e1", - "isMessageReceived((uint64,uint64,uint32,address,uint64,address,uint64,address,address,uint256,bytes),bytes)": "b8acae0e", - "isMessageSent((uint64,uint64,uint32,address,uint64,address,uint64,address,address,uint256,bytes))": "60620c6b", - "messageStatus(bytes32)": "3c6cf473", - "nextMessageId()": "eefbf17e", + "minBond()": "831518b7", "owner()": "8da5cb5b", "pause()": "8456cb59", "paused()": "5c975abb", "pendingOwner()": "e30c3978", - "processMessage((uint64,uint64,uint32,address,uint64,address,uint64,address,address,uint256,bytes),bytes)": "2035065e", "proxiableUUID()": "52d1902d", - "recallMessage((uint64,uint64,uint32,address,uint64,address,uint64,address,address,uint256,bytes),bytes)": "9efc7a2e", "renounceOwnership()": "715018a6", + "requestWithdrawal()": "dbaf2145", "resolver()": "04f3bcec", - "retryMessage((uint64,uint64,uint32,address,uint64,address,uint64,address,address,uint256,bytes),bool)": "0432873c", - "sendMessage((uint64,uint64,uint32,address,uint64,address,uint64,address,address,uint256,bytes))": "1bdb0037", - "signalForFailedMessage(bytes32)": "d1aaa5df", - "signalService()": "62d09453", "transferOwnership(address)": "f2fde38b", "unpause()": "3f4ba83a", "upgradeTo(address)": "3659cfe6", - "upgradeToAndCall(address,bytes)": "4f1ef286" + "upgradeToAndCall(address,bytes)": "4f1ef286", + "withdraw(address,uint256)": "f3fef3a3", + "withdrawalDelay()": "a7ab6961" }, - "rawMetadata": "{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_resolver\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_signalService\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"ACCESS_DENIED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"B_INSUFFICIENT_GAS\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"B_INVALID_CHAINID\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"B_INVALID_CONTEXT\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"B_INVALID_FEE\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"B_INVALID_GAS_LIMIT\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"B_INVALID_STATUS\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"B_INVALID_VALUE\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"B_MESSAGE_NOT_SENT\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"B_PERMISSION_DENIED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"B_PROOF_TOO_LARGE\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"B_RETRY_FAILED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"B_SIGNAL_NOT_RECEIVED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ETH_TRANSFER_FAILED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FUNC_NOT_IMPLEMENTED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"INVALID_PAUSE_STATUS\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"REENTRANT_CALL\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"RESOLVER_NOT_FOUND\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZERO_ADDRESS\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZERO_VALUE\",\"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\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"msgHash\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"uint64\",\"name\":\"id\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"fee\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"gasLimit\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"srcChainId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"srcOwner\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"destChainId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"destOwner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"indexed\":false,\"internalType\":\"struct IBridge.Message\",\"name\":\"message\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"gasUsedInFeeCalc\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"proofSize\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"numCacheOps\",\"type\":\"uint32\"},{\"internalType\":\"bool\",\"name\":\"processedByRelayer\",\"type\":\"bool\"}],\"indexed\":false,\"internalType\":\"struct Bridge.ProcessingStats\",\"name\":\"stats\",\"type\":\"tuple\"}],\"name\":\"MessageProcessed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"msgHash\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"uint64\",\"name\":\"id\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"fee\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"gasLimit\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"srcChainId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"srcOwner\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"destChainId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"destOwner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"indexed\":false,\"internalType\":\"struct IBridge.Message\",\"name\":\"message\",\"type\":\"tuple\"}],\"name\":\"MessageSent\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"msgHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"enum IBridge.Status\",\"name\":\"status\",\"type\":\"uint8\"}],\"name\":\"MessageStatusChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferStarted\",\"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\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Paused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Unpaused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"GAS_OVERHEAD\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"GAS_RESERVE\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"RELAYER_MAX_PROOF_BYTES\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"acceptOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"context\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"msgHash\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"srcChainId\",\"type\":\"uint64\"}],\"internalType\":\"struct IBridge.Context\",\"name\":\"ctx_\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"id\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"fee\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"gasLimit\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"srcChainId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"srcOwner\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"destChainId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"destOwner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"internalType\":\"struct IBridge.Message\",\"name\":\"_message\",\"type\":\"tuple\"}],\"name\":\"failMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"dataLength\",\"type\":\"uint256\"}],\"name\":\"getMessageMinGasLimit\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"id\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"fee\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"gasLimit\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"srcChainId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"srcOwner\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"destChainId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"destOwner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"internalType\":\"struct IBridge.Message\",\"name\":\"_message\",\"type\":\"tuple\"}],\"name\":\"hashMessage\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"impl\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"inNonReentrant\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_owner\",\"type\":\"address\"}],\"name\":\"init\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"init2\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"_chainId\",\"type\":\"uint64\"}],\"name\":\"isDestChainEnabled\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"enabled_\",\"type\":\"bool\"},{\"internalType\":\"address\",\"name\":\"destBridge_\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"id\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"fee\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"gasLimit\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"srcChainId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"srcOwner\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"destChainId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"destOwner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"internalType\":\"struct IBridge.Message\",\"name\":\"_message\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"_proof\",\"type\":\"bytes\"}],\"name\":\"isMessageFailed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"id\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"fee\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"gasLimit\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"srcChainId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"srcOwner\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"destChainId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"destOwner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"internalType\":\"struct IBridge.Message\",\"name\":\"_message\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"_proof\",\"type\":\"bytes\"}],\"name\":\"isMessageReceived\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"id\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"fee\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"gasLimit\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"srcChainId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"srcOwner\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"destChainId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"destOwner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"internalType\":\"struct IBridge.Message\",\"name\":\"_message\",\"type\":\"tuple\"}],\"name\":\"isMessageSent\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"msgHash\",\"type\":\"bytes32\"}],\"name\":\"messageStatus\",\"outputs\":[{\"internalType\":\"enum IBridge.Status\",\"name\":\"status\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"nextMessageId\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"paused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pendingOwner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"id\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"fee\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"gasLimit\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"srcChainId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"srcOwner\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"destChainId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"destOwner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"internalType\":\"struct IBridge.Message\",\"name\":\"_message\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"_proof\",\"type\":\"bytes\"}],\"name\":\"processMessage\",\"outputs\":[{\"internalType\":\"enum IBridge.Status\",\"name\":\"status_\",\"type\":\"uint8\"},{\"internalType\":\"enum IBridge.StatusReason\",\"name\":\"reason_\",\"type\":\"uint8\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"proxiableUUID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"id\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"fee\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"gasLimit\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"srcChainId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"srcOwner\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"destChainId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"destOwner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"internalType\":\"struct IBridge.Message\",\"name\":\"_message\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"_proof\",\"type\":\"bytes\"}],\"name\":\"recallMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"resolver\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"id\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"fee\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"gasLimit\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"srcChainId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"srcOwner\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"destChainId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"destOwner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"internalType\":\"struct IBridge.Message\",\"name\":\"_message\",\"type\":\"tuple\"},{\"internalType\":\"bool\",\"name\":\"_isLastAttempt\",\"type\":\"bool\"}],\"name\":\"retryMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"id\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"fee\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"gasLimit\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"srcChainId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"srcOwner\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"destChainId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"destOwner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"internalType\":\"struct IBridge.Message\",\"name\":\"_message\",\"type\":\"tuple\"}],\"name\":\"sendMessage\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"msgHash_\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"uint64\",\"name\":\"id\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"fee\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"gasLimit\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"srcChainId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"srcOwner\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"destChainId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"destOwner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"internalType\":\"struct IBridge.Message\",\"name\":\"message_\",\"type\":\"tuple\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_msgHash\",\"type\":\"bytes32\"}],\"name\":\"signalForFailedMessage\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"signalService\",\"outputs\":[{\"internalType\":\"contract ISignalService\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"unpause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"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\"}],\"devdoc\":{\"custom:security-contact\":\"security@taiko.xyz\",\"details\":\"Labeled in address resolver as \\\"bridge\\\". Additionally, the code hash for the same address on L1 and L2 may be different.\",\"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.\"},\"MessageProcessed(bytes32,(uint64,uint64,uint32,address,uint64,address,uint64,address,address,uint256,bytes),(uint32,uint32,uint32,bool))\":{\"details\":\"A debug event for fine-tuning gas related constants in the future.\"},\"MessageSent(bytes32,(uint64,uint64,uint32,address,uint64,address,uint64,address,address,uint256,bytes))\":{\"params\":{\"message\":\"The message.\",\"msgHash\":\"The hash of the message.\"}},\"MessageStatusChanged(bytes32,uint8)\":{\"params\":{\"msgHash\":\"The hash of the message.\",\"status\":\"The new status of the message.\"}},\"Paused(address)\":{\"params\":{\"account\":\"The account that paused the contract.\"}},\"Unpaused(address)\":{\"params\":{\"account\":\"The account that unpaused the contract.\"}},\"Upgraded(address)\":{\"details\":\"Emitted when the implementation is upgraded.\"}},\"kind\":\"dev\",\"methods\":{\"acceptOwnership()\":{\"details\":\"The new owner accepts the ownership transfer.\"},\"context()\":{\"returns\":{\"ctx_\":\"The context of the current bridge operation.\"}},\"failMessage((uint64,uint64,uint32,address,uint64,address,uint64,address,address,uint256,bytes))\":{\"details\":\"This function can only be called by `message.destOwner`.\",\"params\":{\"_message\":\"The message to fail. message.\"}},\"getMessageMinGasLimit(uint256)\":{\"params\":{\"dataLength\":\"The length of message.data.\"},\"returns\":{\"_0\":\"The minimal gas limit required for sending this message.\"}},\"hashMessage((uint64,uint64,uint32,address,uint64,address,uint64,address,address,uint256,bytes))\":{\"params\":{\"_message\":\"The message struct variable to be hashed.\"},\"returns\":{\"_0\":\"The message's hash.\"}},\"init(address)\":{\"params\":{\"_owner\":\"The owner of this contract. msg.sender will be used if this value is zero.\"}},\"isDestChainEnabled(uint64)\":{\"params\":{\"_chainId\":\"The destination chain ID.\"},\"returns\":{\"destBridge_\":\"The bridge of the destination chain.\",\"enabled_\":\"True if the destination chain is enabled.\"}},\"isMessageFailed((uint64,uint64,uint32,address,uint64,address,uint64,address,address,uint256,bytes),bytes)\":{\"params\":{\"_message\":\"The message.\",\"_proof\":\"The merkle inclusion proof.\"},\"returns\":{\"_0\":\"true if the message has failed, false otherwise.\"}},\"isMessageReceived((uint64,uint64,uint32,address,uint64,address,uint64,address,address,uint256,bytes),bytes)\":{\"params\":{\"_message\":\"The message.\",\"_proof\":\"The merkle inclusion proof.\"},\"returns\":{\"_0\":\"true if the message has been received, false otherwise.\"}},\"isMessageSent((uint64,uint64,uint32,address,uint64,address,uint64,address,address,uint256,bytes))\":{\"params\":{\"_message\":\"The message.\"},\"returns\":{\"_0\":\"true if the message was sent.\"}},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"paused()\":{\"returns\":{\"_0\":\"true if paused, false otherwise.\"}},\"pendingOwner()\":{\"details\":\"Returns the address of the pending owner.\"},\"processMessage((uint64,uint64,uint32,address,uint64,address,uint64,address,address,uint256,bytes),bytes)\":{\"details\":\"To ensure successful execution, we recommend this transaction's gas limit not to be smaller than: `(message.gasLimit - GAS_RESERVE) * 64 / 63 + GAS_RESERVE`, Or we can use a simplified rule: `tx.gaslimit = message.gaslimit * 102%`.\",\"params\":{\"_message\":\"The message to be processed.\",\"_proof\":\"The merkle inclusion proof.\"},\"returns\":{\"status_\":\"The message's status after processing and the reason for the change.\"}},\"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.\"},\"recallMessage((uint64,uint64,uint32,address,uint64,address,uint64,address,address,uint256,bytes),bytes)\":{\"details\":\"Verifies via proof that the message was marked FAILED on the destination chain's Bridge, then releases the associated Ether or tokens on the source chain.\",\"params\":{\"_message\":\"The message whose associated Ether should be released.\",\"_proof\":\"The merkle inclusion proof.\"}},\"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.\"},\"resolver()\":{\"returns\":{\"_0\":\"The address of this contract.\"}},\"retryMessage((uint64,uint64,uint32,address,uint64,address,uint64,address,address,uint256,bytes),bool)\":{\"details\":\"This function can be called by any address, including the `message.destOwner`. It attempts to invoke the messageCall and updates the message status accordingly.\",\"params\":{\"_isLastAttempt\":\"Specifies if this is the last attempt to retry the message.\",\"_message\":\"The message to retry.\"}},\"sendMessage((uint64,uint64,uint32,address,uint64,address,uint64,address,address,uint256,bytes))\":{\"params\":{\"_message\":\"The message to be sent.\"},\"returns\":{\"message_\":\"The updated message sent.\",\"msgHash_\":\"The hash of the sent message.\"}},\"signalForFailedMessage(bytes32)\":{\"params\":{\"_msgHash\":\"The message hash.\"},\"returns\":{\"_0\":\"The failed representation of it as bytes32.\"}},\"transferOwnership(address)\":{\"details\":\"Starts the ownership transfer of the contract to a new account. Replaces the pending transfer if there is one. Can only be called by the current owner.\"},\"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.\"}},\"stateVariables\":{\"GAS_OVERHEAD\":{\"details\":\"The gas overhead for both receiving and invoking a message, as well as the proof calldata cost. This value should be fine-tuned with production data.\"},\"GAS_RESERVE\":{\"details\":\"The amount of gas that will be deducted from message.gasLimit before calculating the invocation gas limit. This value should be fine-tuned with production data.\"},\"RELAYER_MAX_PROOF_BYTES\":{\"details\":\"The max proof size for a message to be processable by a relayer.\"},\"_GAS_REFUND_PER_CACHE_OPERATION\":{\"details\":\"The amount of gas not to charge fee per cache operation.\"},\"_PLACEHOLDER\":{\"details\":\"Place holder value when not using transient storage\"},\"_SEND_ETHER_GAS_LIMIT\":{\"details\":\"Gas limit for sending Ether.\"},\"__ctx\":{\"details\":\"Slots 3 and 4\"},\"__reserved1\":{\"details\":\"Slot 1.\"},\"__reserved2\":{\"details\":\"Slot 5.\"},\"__reserved3\":{\"details\":\"Slot 6.\"},\"messageStatus\":{\"details\":\"Slot 2.\"},\"nextMessageId\":{\"return\":\"A unique id\",\"returns\":{\"_0\":\"A unique id\"}}},\"title\":\"Bridge\",\"version\":1},\"userdoc\":{\"events\":{\"MessageSent(bytes32,(uint64,uint64,uint32,address,uint64,address,uint64,address,address,uint256,bytes))\":{\"notice\":\"Emitted when a message is sent.\"},\"MessageStatusChanged(bytes32,uint8)\":{\"notice\":\"Emitted when the status of a message changes.\"},\"Paused(address)\":{\"notice\":\"Emitted when the contract is paused.\"},\"Unpaused(address)\":{\"notice\":\"Emitted when the contract is unpaused.\"}},\"kind\":\"user\",\"methods\":{\"context()\":{\"notice\":\"Gets the current context.\"},\"failMessage((uint64,uint64,uint32,address,uint64,address,uint64,address,address,uint256,bytes))\":{\"notice\":\"Mark a message as failed if the message is currently retriable.\"},\"getMessageMinGasLimit(uint256)\":{\"notice\":\"Returns the minimal gas limit required for sending a given message.\"},\"hashMessage((uint64,uint64,uint32,address,uint64,address,uint64,address,address,uint256,bytes))\":{\"notice\":\"Hash the message\"},\"init(address)\":{\"notice\":\"Initializes the contract.\"},\"init2()\":{\"notice\":\"This function shall be called by previously deployed contracts.\"},\"isDestChainEnabled(uint64)\":{\"notice\":\"Checks if the destination chain is enabled.\"},\"isMessageFailed((uint64,uint64,uint32,address,uint64,address,uint64,address,address,uint256,bytes),bytes)\":{\"notice\":\"Checks if a msgHash has failed on its destination chain. This is the 'readonly' version of proveMessageFailed.\"},\"isMessageReceived((uint64,uint64,uint32,address,uint64,address,uint64,address,address,uint256,bytes),bytes)\":{\"notice\":\"Checks if a msgHash has been received on its source chain. This is the 'readonly' version of proveMessageReceived.\"},\"isMessageSent((uint64,uint64,uint32,address,uint64,address,uint64,address,address,uint256,bytes))\":{\"notice\":\"Checks if the message was sent.\"},\"messageStatus(bytes32)\":{\"notice\":\"Mapping to store the status of a message from its hash.\"},\"nextMessageId()\":{\"notice\":\"Returns the unique id of the next bridge message\"},\"pause()\":{\"notice\":\"Pauses the contract.\"},\"paused()\":{\"notice\":\"Returns true if the contract is paused, and false otherwise.\"},\"processMessage((uint64,uint64,uint32,address,uint64,address,uint64,address,address,uint256,bytes),bytes)\":{\"notice\":\"Processes a bridge message on the destination chain. This function is callable by any address, including the `message.destOwner`.\"},\"recallMessage((uint64,uint64,uint32,address,uint64,address,uint64,address,address,uint256,bytes),bytes)\":{\"notice\":\"Recalls a message on its source chain after it has failed on the destination chain, releasing associated assets on the source chain.\"},\"resolver()\":{\"notice\":\"Returns the address of this contract.\"},\"retryMessage((uint64,uint64,uint32,address,uint64,address,uint64,address,address,uint256,bytes),bool)\":{\"notice\":\"Retries to invoke the messageCall after releasing associated Ether and tokens.\"},\"sendMessage((uint64,uint64,uint32,address,uint64,address,uint64,address,address,uint256,bytes))\":{\"notice\":\"Sends a message to the destination chain and takes custody of Ether required in this contract.\"},\"signalForFailedMessage(bytes32)\":{\"notice\":\"Returns a signal representing a failed/recalled message.\"},\"unpause()\":{\"notice\":\"Unpauses the contract.\"}},\"notice\":\"See the documentation for {IBridge}.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/shared/bridge/Bridge.sol\":\"Bridge\"},\"evmVersion\":\"shanghai\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@eth-fabric/urc/=node_modules/urc/src/\",\":@openzeppelin-upgrades/contracts/=node_modules/@openzeppelin/contracts-upgradeable/\",\":@openzeppelin/=node_modules/@openzeppelin/\",\":@optimism/=node_modules/optimism/\",\":@p256-verifier/contracts/=node_modules/p256-verifier/src/\",\":@risc0/contracts/=node_modules/risc0-ethereum/contracts/src/\",\":@solady/=node_modules/solady/\",\":@sp1-contracts/=node_modules/sp1-contracts/contracts/\",\":ds-test/=node_modules/ds-test/\",\":forge-std/=node_modules/forge-std/\",\":openzeppelin/=node_modules/@openzeppelin/\",\":optimism/=node_modules/optimism/\",\":p256-verifier/=node_modules/p256-verifier/\",\":risc0-ethereum/=node_modules/risc0-ethereum/\",\":script/=script/\",\":solady/src/=node_modules/solady/src/\",\":solady/utils/=node_modules/solady/src/utils/\",\":sp1-contracts/=node_modules/sp1-contracts/\",\":src/=contracts/\",\":test/=test/\",\":urc/=node_modules/urc/\"]},\"sources\":{\"contracts/shared/bridge/Bridge.sol\":{\"keccak256\":\"0x58d4c542b77fe23d3078c3b9de781db54f1f318ed817d18af39cf915c3100c1e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7482d1d403d37f1a925b5ae979cdb7fba1463b87cfa882cafa54454f9868283d\",\"dweb:/ipfs/QmdhKFvapFkQD11AanqR1v28CRC8ZrMRu4dnVw8QoqGqNR\"]},\"contracts/shared/bridge/IBridge.sol\":{\"keccak256\":\"0x6b200a3471c7d1e2150c7a2f07f9fc4e619b93c72e61a937ecaf2f659f17a6e1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://51633f9d1c2799a6943d94324c7a4630adfbf46aad0639670870835a08ea563e\",\"dweb:/ipfs/Qmbt7P6LSkvgKomUkD5E85128t35kc6QUPXCWSEGrG5n9W\"]},\"contracts/shared/common/EssentialContract.sol\":{\"keccak256\":\"0x23f5e92e919911e82b308b25cf5c06050fd7c7799d44156d8492c2879a12c0a6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://800f8bc7c8a362c8c684906e20c060d893cd4e8badf74cf12026e0cc159c846f\",\"dweb:/ipfs/QmPbre9Skvfz5K7TWVHYTGGnec99VMnY9EUFbB6VqMsd9C\"]},\"contracts/shared/common/EssentialResolverContract.sol\":{\"keccak256\":\"0x5736a30fa45c48e3ff6d53170d980942ad42b788de81f5542a66397fb572b457\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://06d2dcf4d83335d05a12272507991ca23d23ed5a893fd2f97e75324135858ed2\",\"dweb:/ipfs/QmfWRCDnq6TXg8uwv2odpeLFguRSeLKuhL3VPMmGyyh9Eh\"]},\"contracts/shared/common/IResolver.sol\":{\"keccak256\":\"0x01273635aa0be2ad8d6218ad520f824f2003eab82be1d14c46da58f2516a48dd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://122dd3456077cf0be42bb974954c9918dca296415b076faeba0336ecee33de8e\",\"dweb:/ipfs/QmSr4WQEFDJwqyqpextmY8Fp3b7Z96SBHgAEKsvXe6dEZV\"]},\"contracts/shared/libs/LibAddress.sol\":{\"keccak256\":\"0x06e39ae119af22feb19ebf8cbd9ee8514118b84388ef93c4650779fd10da8538\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e0284aa60ade3d0f87134e6f39c181cca41c345af766b2f8f72c6de50ccf9841\",\"dweb:/ipfs/QmYNcjXmgVVPForNL34yrcZ97H2hKef4jL1DaQy6oNFhmY\"]},\"contracts/shared/libs/LibMath.sol\":{\"keccak256\":\"0x3e2ce1ccb5a4d94c6f97e09ebdb1e731c0bae466981be52147f15063b3742d69\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3530b4db00c1f357562d2dbab8978613c09b30ce1a6312de864399c7af82f9c7\",\"dweb:/ipfs/Qmbp9HeWwPAx5Krcjuu8UCJB3so6rZu4TUTPD6vRKDDBjg\"]},\"contracts/shared/libs/LibNames.sol\":{\"keccak256\":\"0x1227d014ad714497f4779b334da558a7da409860a6139b8ba88e53044bf8fb17\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f743c99518df4f1b1a8cdcbcdcc9a60357b81684e40f68573d4b9eef230d67ee\",\"dweb:/ipfs/QmapJMW5WhFjg8FK598gRitW3EwzkRn6TQ9fLuGjoMcaMP\"]},\"contracts/shared/libs/LibNetwork.sol\":{\"keccak256\":\"0xb5c6769cffcf864f725f8a76f98806f668f94a516125b854faa983b29d8f91ee\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://de4a9c2ae643272308f42ec150bae3b2a88145357e78eac074e8f68ff3d04595\",\"dweb:/ipfs/QmWNdKbTUvpR33nDunSjzKtR3ZQPPkFDD538fqhr9m6VY1\"]},\"contracts/shared/signal/ICheckpointStore.sol\":{\"keccak256\":\"0x82d7e6a1a6297ee7126ab7a83039900e453f76c9a0dff367be5699c742312067\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1db8501e9b6cadfdefd1ca1bb0cc9d241c9643abab73ec68d12e17aa8e543679\",\"dweb:/ipfs/QmVMFkLduiSeYoZ3NynDNoAcxZi53Lt6Gct7TtXXTyY4LE\"]},\"contracts/shared/signal/ISignalService.sol\":{\"keccak256\":\"0xda39e5766d2a3cc48e19aa0bd8c1235dd7e44bf6df18f0025999e08e25ad0639\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://71d6bb884be8db07e4b89f792aa8e3ad69c1045912be23cfb114935572fe6274\",\"dweb:/ipfs/QmZBuTtCSs4HtKVWo1zsKdU2WndsVDKX8H9VBwyCYbCGeN\"]},\"node_modules/@openzeppelin/contracts-upgradeable/access/Ownable2StepUpgradeable.sol\":{\"keccak256\":\"0x9140dabc466abab21b48b72dbda26736b1183a310d0e677d3719d201df026510\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://75267b14b60dc216d01d596a4008189a6c44d3314e53eded0edb1e757d95be16\",\"dweb:/ipfs/QmQoMaxTRT6V7uQj9USfdQH9jh1crywB9auVjThzUSAbG2\"]},\"node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol\":{\"keccak256\":\"0x359a1ab89b46b9aba7bcad3fb651924baf4893d15153049b9976b0fc9be1358e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e89863421b4014b96a4b62be76eb3b9f0a8afe9684664a6f389124c0964bfe5c\",\"dweb:/ipfs/Qmbk7xr1irpDuU1WdxXgxELBXxs61rHhCgod7heVcvFx16\"]},\"node_modules/@openzeppelin/contracts-upgradeable/governance/utils/IVotesUpgradeable.sol\":{\"keccak256\":\"0x2d600bbef9320309cd2a86c1d087eb9d6dbcc00430713ee54bbc5c5a2a11ba31\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://52a5380b861d676adef15f33f8f643e236a1acb2d9456beb4065307eaa22bc2a\",\"dweb:/ipfs/QmdwSfxrafQubVvCoQCU5T7bbPR8JDWU1WotSDXSiUdm33\"]},\"node_modules/@openzeppelin/contracts-upgradeable/interfaces/IERC5267Upgradeable.sol\":{\"keccak256\":\"0xe562dab443278837fa50faddb76743399e942181881db8dccaea3bd1712994db\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://79ebe0e661396045cefe94f4256398cf632756d779a6871319db374c9eb128c9\",\"dweb:/ipfs/QmfCTCivb9fFhyCX8hzushzcKunvKL2N9RDsnRNdvbd11M\"]},\"node_modules/@openzeppelin/contracts-upgradeable/interfaces/IERC5805Upgradeable.sol\":{\"keccak256\":\"0x19848eec9045c8b91f1ab6b1853966443e3e36bcbc307593ed37a9f0df179d69\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a07972c1330ee99a5d051b393260e01412ac4c14c7bc4d75d80b7cce291a6412\",\"dweb:/ipfs/QmQx1ZiAo4AbSobN41c1xUEtyX1QejydWCmY7Sj3H5aDNv\"]},\"node_modules/@openzeppelin/contracts-upgradeable/interfaces/IERC6372Upgradeable.sol\":{\"keccak256\":\"0x3026befd6d69d1b46960bdc35a2ad37c0e1352f26983ee3728dd61fd32aa308a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c2001b7209fd4920ec7674f194db7fe163dfea7a7af2dd25fe6c0e5a94dc595c\",\"dweb:/ipfs/QmXX2zTFyiNWoDxivV3trKcKWifAENMqNAB34NgjWq5feX\"]},\"node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x89be10e757d242e9b18d5a32c9fbe2019f6d63052bbe46397a430a1d60d7f794\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f103ee2e4aecd37aac6ceefe670709cdd7613dee25fa2d4d9feaf7fc0aaa155e\",\"dweb:/ipfs/QmRiNZLoJk5k3HPMYGPGjZFd2ke1ZxjhJZkM45Ec9GH9hv\"]},\"node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol\":{\"keccak256\":\"0xa9311aeb22f459e57d4dac77ee76cf43fb28ad3215278456211b5852b0e9e970\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ebdf0d3e42bd25223e45a213311d6d7e177d56a2c541a78b58c0c9d10bbdfbf9\",\"dweb:/ipfs/QmfMyehJ6pxHrh7yL4793J6i7dofXnS2zH3cTtC8JdQMV9\"]},\"node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol\":{\"keccak256\":\"0x0e1f0f5f62f67a881cd1a9597acbc0a5e4071f3c2c10449a183b922ae7272e3f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c25f742ff154998d19a669e2508c3597b363e123ce9144cd0fcf6521229f401f\",\"dweb:/ipfs/QmQXRuFzStEWqeEPbhQU6cAg9PaSowxJVo4PDKyRod7dco\"]},\"node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/extensions/ERC20PermitUpgradeable.sol\":{\"keccak256\":\"0x3d159b9049d4ef465c1fb41f7ff7620f18f52bf6f8f3018bae4ed95c2df537d3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://38f7cfa624d878eec3c97e30dac64c6c00a79c65aa2799cebbf683e74488cd27\",\"dweb:/ipfs/QmdtMH3xSGXNqvBcndsxWCUfmjta6kebnUYwKasJZucTfP\"]},\"node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/extensions/ERC20VotesUpgradeable.sol\":{\"keccak256\":\"0x82d5c2e8d5c7209f5cd2e7a40807ba264cb8bc577db1b121eda5f14f62d609c2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://024b99222ec16e75ff1b719c8f0dacf2d8e26250b3c076bd184ac1dadae47492\",\"dweb:/ipfs/QmP11f3Dumw3CYg4ZtBLJrh8juULgodSuQfCqqgX5DqpJE\"]},\"node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/extensions/IERC20MetadataUpgradeable.sol\":{\"keccak256\":\"0x605434219ebbe4653f703640f06969faa5a1d78f0bfef878e5ddbb1ca369ceeb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4c9c634f99dd02d73ce7498b03a6305e251c05eeebb71457306561c1fab0fa7d\",\"dweb:/ipfs/QmbYRBbZHy8YoaQKXdPryiL3CSS7uUaRfRYi1TUj9cTqJQ\"]},\"node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/extensions/IERC20PermitUpgradeable.sol\":{\"keccak256\":\"0x07e881de3b9f6d2c07909f193f24b96c7fe4ea60013260f3f25aecd8bab3c2f8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1fed09b97ccb0ff9ba9b6a94224f1d489026bf6b4b7279bfe64fb6e8749dee4d\",\"dweb:/ipfs/QmcRAzaSP1UnGr4vrGkfJmB2L9aiTYoXfV1Lg9gqrVRWn8\"]},\"node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol\":{\"keccak256\":\"0x9c80f545915582e63fe206c6ce27cbe85a86fc10b9cd2a0e8c9488fb7c2ee422\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://310136ad60820af4177a11a61d77a3686faf5fca4942b600e08fc940db38396b\",\"dweb:/ipfs/QmbCzMNSTL7Zi7M4UCSqBrkHtp4jjxUnGbkneCZKdR1qeq\"]},\"node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0x75097e35253e7fb282ee4d7f27a80eaacfa759923185bf17302a89cbc059c5ef\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8b06267c5f80bad727af3e48b1382333d591dad51376399ef2f6b0ee6d58bf95\",\"dweb:/ipfs/QmdU5La1agcQvghnfMpWZGDPz2TUDTCxUwTLKmuMRXBpAx\"]},\"node_modules/@openzeppelin/contracts-upgradeable/utils/CountersUpgradeable.sol\":{\"keccak256\":\"0x798741e231b22b81e2dd2eddaaf8832dee4baf5cd8e2dbaa5c1dd12a1c053c4d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c41e8a7a906b8f362c8b760a44edadc61782008ea2ecf377ac5b5325bf6c3912\",\"dweb:/ipfs/QmcXr19zuH3YLzD6RZNE6UTzvsKSckdxZQnagPoDGkCHu2\"]},\"node_modules/@openzeppelin/contracts-upgradeable/utils/StringsUpgradeable.sol\":{\"keccak256\":\"0xb96dc79b65b7c37937919dcdb356a969ce0aa2e8338322bf4dc027a3c9c9a7eb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f8613145881436fc0480fff22da4868d611e2b0c0c3da083334eb4362ce1945a\",\"dweb:/ipfs/QmPqpP3YeRbBdTJRe6Gv2eGsUaANf4J6RwTNRW36iYahfV\"]},\"node_modules/@openzeppelin/contracts-upgradeable/utils/cryptography/ECDSAUpgradeable.sol\":{\"keccak256\":\"0xa014f65d84b02827055d99993ccdbfb4b56b2c9e91eb278d82a93330659d06e4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://50a7e716a74f3d48a7f549086faa94afcd58b9f18ac8e9f74af4571f3a1d8d5c\",\"dweb:/ipfs/QmTkDNWkq5o9Cv2jS7s6JvSmsPBkeunZhPe7Z2njGL31wo\"]},\"node_modules/@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol\":{\"keccak256\":\"0x7077d7f3369b21f286840c0d69b09a8a6d3d6e522fff67bfc240fd0a6cdf178c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0f59e7a19530bd6ee236285f9a87c930d27b73464f6b7398e29a6f4cfc2670ac\",\"dweb:/ipfs/QmVfN4gHvJNac7KiuhLhtgtbdDo5a6Mw5hMcwJkzYugq5R\"]},\"node_modules/@openzeppelin/contracts-upgradeable/utils/math/MathUpgradeable.sol\":{\"keccak256\":\"0x2bc0007987c229ae7624eb29be6a9b84f6a6a5872f76248b15208b131ea41c4e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2b2835c737d073ef8b82a4cc246495a9740f43e7ff2cf130906b2449ff9bfb91\",\"dweb:/ipfs/QmSCWfNoSvvTN57ic7o1RW6NqSxxGAqbBTnLKc7QHe27qB\"]},\"node_modules/@openzeppelin/contracts-upgradeable/utils/math/SafeCastUpgradeable.sol\":{\"keccak256\":\"0xcef50f95b43b038aa40aed25b62fc45906c681a5c1d504a4fdcf3bc6330a8d4b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ef883699a00970d5469e502514e2854704cd53d7a49825078aa807a2f056315c\",\"dweb:/ipfs/QmRjpN9oxgw6zHCVjfWNB9MzaYpNPPgqu7Rrwqwabmhpis\"]},\"node_modules/@openzeppelin/contracts-upgradeable/utils/math/SignedMathUpgradeable.sol\":{\"keccak256\":\"0x88f6b7bba3ee33eeb741f9a0f5bc98b6e6e352d0fe4905377bb328590f84095a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://88ace2d60f265752f18903d839910be4e4e104340b2957678585b812447825d4\",\"dweb:/ipfs/QmXFkNxMc3AAGzhs2wUEZyErWQjsvoTGyYjuU5oZkFki5Z\"]},\"node_modules/@openzeppelin/contracts/interfaces/IERC1967.sol\":{\"keccak256\":\"0x3cbef5ebc24b415252e2f8c0c9254555d30d9f085603b4b80d9b5ed20ab87e90\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e8fa670c3bdce78e642cc6ae11c4cb38b133499cdce5e1990a9979d424703263\",\"dweb:/ipfs/QmVxeCUk4jL2pXQyhsoNJwyU874wRufS2WvGe8TgPKPqhE\"]},\"node_modules/@openzeppelin/contracts/interfaces/draft-IERC1822.sol\":{\"keccak256\":\"0x1d4afe6cb24200cc4545eed814ecf5847277dfe5d613a1707aad5fceecebcfff\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://383fb7b8181016ac5ccf07bc9cdb7c1b5045ea36e2cc4df52bcbf20396fc7688\",\"dweb:/ipfs/QmYJ7Cg4WmE3rR8KGQxjUCXFfTH6TcwZ2Z1f6tPrq7jHFr\"]},\"node_modules/@openzeppelin/contracts/proxy/ERC1967/ERC1967Upgrade.sol\":{\"keccak256\":\"0x3b21ae06bf5957f73fa16754b0669c77b7abd8ba6c072d35c3281d446fdb86c2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2db8e18505e86e02526847005d7287a33e397ed7fb9eaba3fd4a4a197add16e2\",\"dweb:/ipfs/QmW9BSuKTzHWHBNSHF4L8XfVuU1uJrP2vLg84YtBd8mL82\"]},\"node_modules/@openzeppelin/contracts/proxy/beacon/IBeacon.sol\":{\"keccak256\":\"0xd50a3421ac379ccb1be435fa646d66a65c986b4924f0849839f08692f39dde61\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ada1e030c0231db8d143b44ce92b4d1158eedb087880cad6d8cc7bd7ebe7b354\",\"dweb:/ipfs/QmWZ2NHZweRpz1U9GF6R1h65ri76dnX7fNxLBeM2t5N5Ce\"]},\"node_modules/@openzeppelin/contracts/proxy/utils/UUPSUpgradeable.sol\":{\"keccak256\":\"0xc6619957bcc6641fe8984bfaf9ff11a9e4b97d8149c0495f608f9a2416d7c5cf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://543be67f7fa43b1b932637c1c7f12035f0f4b0f7ee2bd3c33841186f79c165c1\",\"dweb:/ipfs/QmSBPM2UVKbmJqWfD9i6hSiqbaE8TV4TSqfuiivziRRLKM\"]},\"node_modules/@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0x006dd67219697fe68d7fbfdea512e7c4cb64a43565ed86171d67e844982da6fa\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2455248c8ddd9cc6a7af76a13973cddf222072427e7b0e2a7d1aff345145e931\",\"dweb:/ipfs/QmfYjnjRbWqYpuxurqveE6HtzsY1Xx323J428AKQgtBJZm\"]},\"node_modules/@openzeppelin/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0xf09e68aa0dc6722a25bc46490e8d48ed864466d17313b8a0b254c36b54e49899\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e26daf81e2252dc1fe1ce0e4b55c2eb7c6d1ee84ae6558d1a9554432ea1d32da\",\"dweb:/ipfs/Qmb1UANWiWq5pCKbmHSu772hd4nt374dVaghGmwSVNuk8Q\"]},\"node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f\",\"dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy\"]}},\"version\":1}", + "rawMetadata": "{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_authorized\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_bondToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_minBond\",\"type\":\"uint256\"},{\"internalType\":\"uint48\",\"name\":\"_withdrawalDelay\",\"type\":\"uint48\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"ACCESS_DENIED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FUNC_NOT_IMPLEMENTED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"INVALID_PAUSE_STATUS\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientBond\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidRecipient\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MustMaintainMinBond\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NoBondToWithdraw\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NoWithdrawalRequested\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"REENTRANT_CALL\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"WithdrawalAlreadyRequested\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZERO_ADDRESS\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZERO_VALUE\",\"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\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"BondCredited\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"BondDebited\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"BondDeposited\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"depositor\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"BondDepositedFor\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"BondWithdrawn\",\"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\":\"OwnershipTransferStarted\",\"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\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Paused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Unpaused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"WithdrawalCancelled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"withdrawableAt\",\"type\":\"uint256\"}],\"name\":\"WithdrawalRequested\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"acceptOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"authorized\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"bond\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint48\",\"name\":\"withdrawalRequestedAt\",\"type\":\"uint48\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"bondToken\",\"outputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"cancelWithdrawal\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_address\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_bond\",\"type\":\"uint256\"}],\"name\":\"creditBond\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_address\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_bond\",\"type\":\"uint256\"}],\"name\":\"debitBond\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountDebited_\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"deposit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"depositTo\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_address\",\"type\":\"address\"}],\"name\":\"getBondBalance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_address\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_additionalBond\",\"type\":\"uint256\"}],\"name\":\"hasSufficientBond\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"impl\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"inNonReentrant\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_owner\",\"type\":\"address\"}],\"name\":\"init\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"minBond\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"paused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pendingOwner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"proxiableUUID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"requestWithdrawal\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"resolver\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"unpause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"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\":[{\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"withdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"withdrawalDelay\",\"outputs\":[{\"internalType\":\"uint48\",\"name\":\"\",\"type\":\"uint48\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"custom:security-contact\":\"security@taiko.xyz\",\"events\":{\"AdminChanged(address,address)\":{\"details\":\"Emitted when the admin account has changed.\"},\"BeaconUpgraded(address)\":{\"details\":\"Emitted when the beacon is changed.\"},\"BondCredited(address,uint256)\":{\"params\":{\"account\":\"The account to which the bond was credited\",\"amount\":\"The amount credited\"}},\"BondDebited(address,uint256)\":{\"params\":{\"account\":\"The account from which the bond was debited\",\"amount\":\"The amount debited\"}},\"BondDeposited(address,uint256)\":{\"params\":{\"account\":\"The account that deposited the bond\",\"amount\":\"The amount deposited\"}},\"BondDepositedFor(address,address,uint256)\":{\"params\":{\"amount\":\"The amount deposited\",\"depositor\":\"The account that made the deposit\",\"recipient\":\"The account that received the bond credit\"}},\"BondWithdrawn(address,uint256)\":{\"params\":{\"account\":\"The account that withdrew the bond\",\"amount\":\"The amount withdrawn\"}},\"Initialized(uint8)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"},\"Paused(address)\":{\"params\":{\"account\":\"The account that paused the contract.\"}},\"Unpaused(address)\":{\"params\":{\"account\":\"The account that unpaused the contract.\"}},\"Upgraded(address)\":{\"details\":\"Emitted when the implementation is upgraded.\"}},\"kind\":\"dev\",\"methods\":{\"acceptOwnership()\":{\"details\":\"The new owner accepts the ownership transfer.\"},\"cancelWithdrawal()\":{\"details\":\"Can be called during or after the withdrawal delay period\"},\"constructor\":{\"params\":{\"_authorized\":\"The address of the authorized contract (Inbox)\",\"_bondToken\":\"The ERC20 bond token address\",\"_minBond\":\"The minimum bond required\",\"_withdrawalDelay\":\"The delay period for withdrawals (e.g., 7 days)\"}},\"creditBond(address,uint256)\":{\"params\":{\"_address\":\"The address to credit the bond to\",\"_bond\":\"The amount of bond to credit\"}},\"debitBond(address,uint256)\":{\"details\":\"Best effort means that if `_bond` is greater than the balance, the entire balance is debited instead\",\"params\":{\"_address\":\"The address to debit the bond from\",\"_bond\":\"The amount of bond to debit\"},\"returns\":{\"amountDebited_\":\"The actual amount debited\"}},\"deposit(uint256)\":{\"params\":{\"_amount\":\"The amount to deposit.\"}},\"depositTo(address,uint256)\":{\"params\":{\"_amount\":\"The amount to deposit.\",\"_recipient\":\"The address to credit the bond to.\"}},\"getBondBalance(address)\":{\"params\":{\"_address\":\"The address to get the bond balance for\"},\"returns\":{\"_0\":\"The bond balance of the address\"}},\"hasSufficientBond(address,uint256)\":{\"params\":{\"_additionalBond\":\"The additional bond required the account has to have on top of the minimum bond\",\"_address\":\"The address to check\"},\"returns\":{\"_0\":\"True if the account has sufficient bond and is active\"}},\"init(address)\":{\"params\":{\"_owner\":\"The owner of this contract\"}},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"paused()\":{\"returns\":{\"_0\":\"true if paused, false otherwise.\"}},\"pendingOwner()\":{\"details\":\"Returns the address of the pending owner.\"},\"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.\"},\"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.\"},\"requestWithdrawal()\":{\"details\":\"Account cannot perform bond-restricted actions after requesting withdrawal\"},\"resolver()\":{\"returns\":{\"_0\":\"The address of this contract.\"}},\"transferOwnership(address)\":{\"details\":\"Starts the ownership transfer of the contract to a new account. Replaces the pending transfer if there is one. Can only be called by the current owner.\"},\"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.\"},\"withdraw(address,uint256)\":{\"details\":\"On L1, withdrawal is subject to time-based security. On L2, withdrawals are unrestricted.\",\"params\":{\"_amount\":\"The amount to withdraw.\",\"_to\":\"The recipient of withdrawn funds.\"}}},\"stateVariables\":{\"withdrawalDelay\":{\"details\":\"WARNING: In theory operations can remain unfinalized indefinitely, but in practice after the `extendedProvingWindow` the incentives are very strong for finalization. A safe value for this is `extendedProvingWindow` + buffer, for example, 2 weeks.\"}},\"title\":\"BondManager\",\"version\":1},\"userdoc\":{\"events\":{\"BondCredited(address,uint256)\":{\"notice\":\"Emitted when a bond is credited to an address\"},\"BondDebited(address,uint256)\":{\"notice\":\"Emitted when a bond is debited from an address\"},\"BondDeposited(address,uint256)\":{\"notice\":\"Emitted when a bond is deposited into the manager\"},\"BondDepositedFor(address,address,uint256)\":{\"notice\":\"Emitted when a bond is deposited for another address\"},\"BondWithdrawn(address,uint256)\":{\"notice\":\"Emitted when a bond is withdrawn from the manager\"},\"Paused(address)\":{\"notice\":\"Emitted when the contract is paused.\"},\"Unpaused(address)\":{\"notice\":\"Emitted when the contract is unpaused.\"},\"WithdrawalCancelled(address)\":{\"notice\":\"Emitted when a withdrawal request is cancelled\"},\"WithdrawalRequested(address,uint256)\":{\"notice\":\"Emitted when a withdrawal is requested\"}},\"kind\":\"user\",\"methods\":{\"authorized()\":{\"notice\":\"The address of the inbox contract that is allowed to call debitBond and creditBond\"},\"bond(address)\":{\"notice\":\"Per-account bond state\"},\"bondToken()\":{\"notice\":\"ERC20 token used as bond.\"},\"cancelWithdrawal()\":{\"notice\":\"Cancel withdrawal request to reactivate the account\"},\"constructor\":{\"notice\":\"Constructor disables initializers for upgradeable pattern\"},\"creditBond(address,uint256)\":{\"notice\":\"Credits a bond to an address\"},\"debitBond(address,uint256)\":{\"notice\":\"Debits a bond from an address with best effort\"},\"deposit(uint256)\":{\"notice\":\"Deposit ERC20 bond tokens into the manager.\"},\"depositTo(address,uint256)\":{\"notice\":\"Deposit ERC20 bond tokens for another address.\"},\"getBondBalance(address)\":{\"notice\":\"Gets the bond balance of an address\"},\"hasSufficientBond(address,uint256)\":{\"notice\":\"Checks if an account has sufficient bond and hasn't requested withdrawal\"},\"init(address)\":{\"notice\":\"Initializes the BondManager contract\"},\"minBond()\":{\"notice\":\"Minimum bond required\"},\"pause()\":{\"notice\":\"Pauses the contract.\"},\"paused()\":{\"notice\":\"Returns true if the contract is paused, and false otherwise.\"},\"requestWithdrawal()\":{\"notice\":\"Request to start the withdrawal process\"},\"resolver()\":{\"notice\":\"Returns the address of this contract.\"},\"unpause()\":{\"notice\":\"Unpauses the contract.\"},\"withdraw(address,uint256)\":{\"notice\":\"Withdraw bond to a recipient.\"},\"withdrawalDelay()\":{\"notice\":\"Time delay required before withdrawal after request\"}},\"notice\":\"L1 implementation of BondManager with time-based withdrawal mechanism\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/layer2/core/BondManager.sol\":\"BondManager\"},\"evmVersion\":\"shanghai\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@eth-fabric/urc/=node_modules/urc/src/\",\":@openzeppelin-upgrades/contracts/=node_modules/@openzeppelin/contracts-upgradeable/\",\":@openzeppelin/=node_modules/@openzeppelin/\",\":@optimism/=node_modules/optimism/\",\":@p256-verifier/contracts/=node_modules/p256-verifier/src/\",\":@risc0/contracts/=node_modules/risc0-ethereum/contracts/src/\",\":@solady/=node_modules/solady/\",\":@sp1-contracts/=node_modules/sp1-contracts/contracts/\",\":ds-test/=node_modules/ds-test/\",\":forge-std/=node_modules/forge-std/\",\":openzeppelin/=node_modules/@openzeppelin/\",\":optimism/=node_modules/optimism/\",\":p256-verifier/=node_modules/p256-verifier/\",\":risc0-ethereum/=node_modules/risc0-ethereum/\",\":script/=script/\",\":solady/src/=node_modules/solady/src/\",\":solady/utils/=node_modules/solady/src/utils/\",\":sp1-contracts/=node_modules/sp1-contracts/\",\":src/=contracts/\",\":test/=test/\",\":urc/=node_modules/urc/\"]},\"sources\":{\"contracts/layer2/core/BondManager.sol\":{\"keccak256\":\"0xde7c80e4018ab2e13d9877b4baca57de7324af0473856c31f26208515f013db6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a388f3bc303f04a1108ea6fb40e420a785ecfa3bcbbc574e03cdd8d8326bf352\",\"dweb:/ipfs/QmXYKGmHAivSxVWhzatXKZCxCd8oY2bjUfeGBFZ7iDRtw2\"]},\"contracts/layer2/core/IBondManager.sol\":{\"keccak256\":\"0x434f4528166c44d411603e3d221fdda8a2e5c73404e7b3256db8fea16fbe6954\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d9ee4f789f154881b683cdfb92f0e63a8ddc4d32a7a9960020d6d253d72053d6\",\"dweb:/ipfs/QmViASeY24iP9QPosNAjSeHxSisjh1oLqMtqexAqpFjfsY\"]},\"contracts/shared/common/EssentialContract.sol\":{\"keccak256\":\"0x23f5e92e919911e82b308b25cf5c06050fd7c7799d44156d8492c2879a12c0a6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://800f8bc7c8a362c8c684906e20c060d893cd4e8badf74cf12026e0cc159c846f\",\"dweb:/ipfs/QmPbre9Skvfz5K7TWVHYTGGnec99VMnY9EUFbB6VqMsd9C\"]},\"contracts/shared/common/IResolver.sol\":{\"keccak256\":\"0x01273635aa0be2ad8d6218ad520f824f2003eab82be1d14c46da58f2516a48dd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://122dd3456077cf0be42bb974954c9918dca296415b076faeba0336ecee33de8e\",\"dweb:/ipfs/QmSr4WQEFDJwqyqpextmY8Fp3b7Z96SBHgAEKsvXe6dEZV\"]},\"node_modules/@openzeppelin/contracts-upgradeable/access/Ownable2StepUpgradeable.sol\":{\"keccak256\":\"0x9140dabc466abab21b48b72dbda26736b1183a310d0e677d3719d201df026510\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://75267b14b60dc216d01d596a4008189a6c44d3314e53eded0edb1e757d95be16\",\"dweb:/ipfs/QmQoMaxTRT6V7uQj9USfdQH9jh1crywB9auVjThzUSAbG2\"]},\"node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol\":{\"keccak256\":\"0x359a1ab89b46b9aba7bcad3fb651924baf4893d15153049b9976b0fc9be1358e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e89863421b4014b96a4b62be76eb3b9f0a8afe9684664a6f389124c0964bfe5c\",\"dweb:/ipfs/Qmbk7xr1irpDuU1WdxXgxELBXxs61rHhCgod7heVcvFx16\"]},\"node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x89be10e757d242e9b18d5a32c9fbe2019f6d63052bbe46397a430a1d60d7f794\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f103ee2e4aecd37aac6ceefe670709cdd7613dee25fa2d4d9feaf7fc0aaa155e\",\"dweb:/ipfs/QmRiNZLoJk5k3HPMYGPGjZFd2ke1ZxjhJZkM45Ec9GH9hv\"]},\"node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol\":{\"keccak256\":\"0x9c80f545915582e63fe206c6ce27cbe85a86fc10b9cd2a0e8c9488fb7c2ee422\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://310136ad60820af4177a11a61d77a3686faf5fca4942b600e08fc940db38396b\",\"dweb:/ipfs/QmbCzMNSTL7Zi7M4UCSqBrkHtp4jjxUnGbkneCZKdR1qeq\"]},\"node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0x75097e35253e7fb282ee4d7f27a80eaacfa759923185bf17302a89cbc059c5ef\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8b06267c5f80bad727af3e48b1382333d591dad51376399ef2f6b0ee6d58bf95\",\"dweb:/ipfs/QmdU5La1agcQvghnfMpWZGDPz2TUDTCxUwTLKmuMRXBpAx\"]},\"node_modules/@openzeppelin/contracts/interfaces/IERC1967.sol\":{\"keccak256\":\"0x3cbef5ebc24b415252e2f8c0c9254555d30d9f085603b4b80d9b5ed20ab87e90\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e8fa670c3bdce78e642cc6ae11c4cb38b133499cdce5e1990a9979d424703263\",\"dweb:/ipfs/QmVxeCUk4jL2pXQyhsoNJwyU874wRufS2WvGe8TgPKPqhE\"]},\"node_modules/@openzeppelin/contracts/interfaces/draft-IERC1822.sol\":{\"keccak256\":\"0x1d4afe6cb24200cc4545eed814ecf5847277dfe5d613a1707aad5fceecebcfff\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://383fb7b8181016ac5ccf07bc9cdb7c1b5045ea36e2cc4df52bcbf20396fc7688\",\"dweb:/ipfs/QmYJ7Cg4WmE3rR8KGQxjUCXFfTH6TcwZ2Z1f6tPrq7jHFr\"]},\"node_modules/@openzeppelin/contracts/proxy/ERC1967/ERC1967Upgrade.sol\":{\"keccak256\":\"0x3b21ae06bf5957f73fa16754b0669c77b7abd8ba6c072d35c3281d446fdb86c2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2db8e18505e86e02526847005d7287a33e397ed7fb9eaba3fd4a4a197add16e2\",\"dweb:/ipfs/QmW9BSuKTzHWHBNSHF4L8XfVuU1uJrP2vLg84YtBd8mL82\"]},\"node_modules/@openzeppelin/contracts/proxy/beacon/IBeacon.sol\":{\"keccak256\":\"0xd50a3421ac379ccb1be435fa646d66a65c986b4924f0849839f08692f39dde61\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ada1e030c0231db8d143b44ce92b4d1158eedb087880cad6d8cc7bd7ebe7b354\",\"dweb:/ipfs/QmWZ2NHZweRpz1U9GF6R1h65ri76dnX7fNxLBeM2t5N5Ce\"]},\"node_modules/@openzeppelin/contracts/proxy/utils/UUPSUpgradeable.sol\":{\"keccak256\":\"0xc6619957bcc6641fe8984bfaf9ff11a9e4b97d8149c0495f608f9a2416d7c5cf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://543be67f7fa43b1b932637c1c7f12035f0f4b0f7ee2bd3c33841186f79c165c1\",\"dweb:/ipfs/QmSBPM2UVKbmJqWfD9i6hSiqbaE8TV4TSqfuiivziRRLKM\"]},\"node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x287b55befed2961a7eabd7d7b1b2839cbca8a5b80ef8dcbb25ed3d4c2002c305\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bd39944e8fc06be6dbe2dd1d8449b5336e23c6a7ba3e8e9ae5ae0f37f35283f5\",\"dweb:/ipfs/QmPV3FGYjVwvKSgAXKUN3r9T9GwniZz83CxBpM7vyj2G53\"]},\"node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Permit.sol\":{\"keccak256\":\"0xb264c03a3442eb37a68ad620cefd1182766b58bee6cec40343480392d6b14d69\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://28879d01fd22c07b44f006612775f8577defbe459cb01685c5e25cd518c91a71\",\"dweb:/ipfs/QmVgfkwv2Fxw6hhTcDUZhE7NkoSKjab3ipM7UaRbt6uXb5\"]},\"node_modules/@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0xabefac93435967b4d36a4fabcbdbb918d1f0b7ae3c3d85bc30923b326c927ed1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9d213d3befca47da33f6db0310826bcdb148299805c10d77175ecfe1d06a9a68\",\"dweb:/ipfs/QmRgCn6SP1hbBkExUADFuDo8xkT4UU47yjNF5FhCeRbQmS\"]},\"node_modules/@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0x006dd67219697fe68d7fbfdea512e7c4cb64a43565ed86171d67e844982da6fa\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2455248c8ddd9cc6a7af76a13973cddf222072427e7b0e2a7d1aff345145e931\",\"dweb:/ipfs/QmfYjnjRbWqYpuxurqveE6HtzsY1Xx323J428AKQgtBJZm\"]},\"node_modules/@openzeppelin/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0xf09e68aa0dc6722a25bc46490e8d48ed864466d17313b8a0b254c36b54e49899\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e26daf81e2252dc1fe1ce0e4b55c2eb7c6d1ee84ae6558d1a9554432ea1d32da\",\"dweb:/ipfs/Qmb1UANWiWq5pCKbmHSu772hd4nt374dVaghGmwSVNuk8Q\"]}},\"version\":1}", "metadata": { "compiler": { "version": "0.8.30+commit.73712a01" @@ -1698,13 +885,23 @@ "inputs": [ { "internalType": "address", - "name": "_resolver", + "name": "_authorized", "type": "address" }, { "internalType": "address", - "name": "_signalService", + "name": "_bondToken", "type": "address" + }, + { + "internalType": "uint256", + "name": "_minBond", + "type": "uint256" + }, + { + "internalType": "uint48", + "name": "_withdrawalDelay", + "type": "uint48" } ], "stateMutability": "nonpayable", @@ -1718,340 +915,202 @@ { "inputs": [], "type": "error", - "name": "B_INSUFFICIENT_GAS" + "name": "FUNC_NOT_IMPLEMENTED" }, { "inputs": [], "type": "error", - "name": "B_INVALID_CHAINID" + "name": "INVALID_PAUSE_STATUS" }, { "inputs": [], "type": "error", - "name": "B_INVALID_CONTEXT" + "name": "InsufficientBond" }, { "inputs": [], "type": "error", - "name": "B_INVALID_FEE" + "name": "InvalidRecipient" }, { "inputs": [], "type": "error", - "name": "B_INVALID_GAS_LIMIT" + "name": "MustMaintainMinBond" }, { "inputs": [], "type": "error", - "name": "B_INVALID_STATUS" + "name": "NoBondToWithdraw" }, { "inputs": [], "type": "error", - "name": "B_INVALID_VALUE" + "name": "NoWithdrawalRequested" }, { "inputs": [], "type": "error", - "name": "B_MESSAGE_NOT_SENT" + "name": "REENTRANT_CALL" }, { "inputs": [], "type": "error", - "name": "B_PERMISSION_DENIED" + "name": "WithdrawalAlreadyRequested" }, { "inputs": [], "type": "error", - "name": "B_PROOF_TOO_LARGE" + "name": "ZERO_ADDRESS" }, { "inputs": [], "type": "error", - "name": "B_RETRY_FAILED" + "name": "ZERO_VALUE" }, { - "inputs": [], - "type": "error", - "name": "B_SIGNAL_NOT_RECEIVED" + "inputs": [ + { + "internalType": "address", + "name": "previousAdmin", + "type": "address", + "indexed": false + }, + { + "internalType": "address", + "name": "newAdmin", + "type": "address", + "indexed": false + } + ], + "type": "event", + "name": "AdminChanged", + "anonymous": false }, { - "inputs": [], - "type": "error", - "name": "ETH_TRANSFER_FAILED" - }, - { - "inputs": [], - "type": "error", - "name": "FUNC_NOT_IMPLEMENTED" - }, - { - "inputs": [], - "type": "error", - "name": "INVALID_PAUSE_STATUS" - }, - { - "inputs": [], - "type": "error", - "name": "REENTRANT_CALL" - }, - { - "inputs": [], - "type": "error", - "name": "RESOLVER_NOT_FOUND" - }, - { - "inputs": [], - "type": "error", - "name": "ZERO_ADDRESS" - }, - { - "inputs": [], - "type": "error", - "name": "ZERO_VALUE" + "inputs": [ + { + "internalType": "address", + "name": "beacon", + "type": "address", + "indexed": true + } + ], + "type": "event", + "name": "BeaconUpgraded", + "anonymous": false }, { "inputs": [ { "internalType": "address", - "name": "previousAdmin", + "name": "account", "type": "address", - "indexed": false + "indexed": true }, { - "internalType": "address", - "name": "newAdmin", - "type": "address", + "internalType": "uint256", + "name": "amount", + "type": "uint256", "indexed": false } ], "type": "event", - "name": "AdminChanged", + "name": "BondCredited", "anonymous": false }, { "inputs": [ { "internalType": "address", - "name": "beacon", + "name": "account", "type": "address", "indexed": true + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256", + "indexed": false } ], "type": "event", - "name": "BeaconUpgraded", + "name": "BondDebited", "anonymous": false }, { "inputs": [ { - "internalType": "uint8", - "name": "version", - "type": "uint8", + "internalType": "address", + "name": "account", + "type": "address", + "indexed": true + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256", "indexed": false } ], "type": "event", - "name": "Initialized", + "name": "BondDeposited", "anonymous": false }, { "inputs": [ { - "internalType": "bytes32", - "name": "msgHash", - "type": "bytes32", + "internalType": "address", + "name": "depositor", + "type": "address", "indexed": true }, { - "internalType": "struct IBridge.Message", - "name": "message", - "type": "tuple", - "components": [ - { - "internalType": "uint64", - "name": "id", - "type": "uint64" - }, - { - "internalType": "uint64", - "name": "fee", - "type": "uint64" - }, - { - "internalType": "uint32", - "name": "gasLimit", - "type": "uint32" - }, - { - "internalType": "address", - "name": "from", - "type": "address" - }, - { - "internalType": "uint64", - "name": "srcChainId", - "type": "uint64" - }, - { - "internalType": "address", - "name": "srcOwner", - "type": "address" - }, - { - "internalType": "uint64", - "name": "destChainId", - "type": "uint64" - }, - { - "internalType": "address", - "name": "destOwner", - "type": "address" - }, - { - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "internalType": "uint256", - "name": "value", - "type": "uint256" - }, - { - "internalType": "bytes", - "name": "data", - "type": "bytes" - } - ], - "indexed": false + "internalType": "address", + "name": "recipient", + "type": "address", + "indexed": true }, { - "internalType": "struct Bridge.ProcessingStats", - "name": "stats", - "type": "tuple", - "components": [ - { - "internalType": "uint32", - "name": "gasUsedInFeeCalc", - "type": "uint32" - }, - { - "internalType": "uint32", - "name": "proofSize", - "type": "uint32" - }, - { - "internalType": "uint32", - "name": "numCacheOps", - "type": "uint32" - }, - { - "internalType": "bool", - "name": "processedByRelayer", - "type": "bool" - } - ], + "internalType": "uint256", + "name": "amount", + "type": "uint256", "indexed": false } ], "type": "event", - "name": "MessageProcessed", + "name": "BondDepositedFor", "anonymous": false }, { "inputs": [ { - "internalType": "bytes32", - "name": "msgHash", - "type": "bytes32", + "internalType": "address", + "name": "account", + "type": "address", "indexed": true }, { - "internalType": "struct IBridge.Message", - "name": "message", - "type": "tuple", - "components": [ - { - "internalType": "uint64", - "name": "id", - "type": "uint64" - }, - { - "internalType": "uint64", - "name": "fee", - "type": "uint64" - }, - { - "internalType": "uint32", - "name": "gasLimit", - "type": "uint32" - }, - { - "internalType": "address", - "name": "from", - "type": "address" - }, - { - "internalType": "uint64", - "name": "srcChainId", - "type": "uint64" - }, - { - "internalType": "address", - "name": "srcOwner", - "type": "address" - }, - { - "internalType": "uint64", - "name": "destChainId", - "type": "uint64" - }, - { - "internalType": "address", - "name": "destOwner", - "type": "address" - }, - { - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "internalType": "uint256", - "name": "value", - "type": "uint256" - }, - { - "internalType": "bytes", - "name": "data", - "type": "bytes" - } - ], + "internalType": "uint256", + "name": "amount", + "type": "uint256", "indexed": false } ], "type": "event", - "name": "MessageSent", + "name": "BondWithdrawn", "anonymous": false }, { "inputs": [ { - "internalType": "bytes32", - "name": "msgHash", - "type": "bytes32", - "indexed": true - }, - { - "internalType": "enum IBridge.Status", - "name": "status", + "internalType": "uint8", + "name": "version", "type": "uint8", "indexed": false } ], "type": "event", - "name": "MessageStatusChanged", + "name": "Initialized", "anonymous": false }, { @@ -2132,385 +1191,204 @@ "anonymous": false }, { - "inputs": [], - "stateMutability": "view", - "type": "function", - "name": "GAS_OVERHEAD", - "outputs": [ + "inputs": [ { - "internalType": "uint32", - "name": "", - "type": "uint32" + "internalType": "address", + "name": "account", + "type": "address", + "indexed": true } - ] + ], + "type": "event", + "name": "WithdrawalCancelled", + "anonymous": false + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address", + "indexed": true + }, + { + "internalType": "uint256", + "name": "withdrawableAt", + "type": "uint256", + "indexed": false + } + ], + "type": "event", + "name": "WithdrawalRequested", + "anonymous": false + }, + { + "inputs": [], + "stateMutability": "nonpayable", + "type": "function", + "name": "acceptOwnership" }, { "inputs": [], "stateMutability": "view", "type": "function", - "name": "GAS_RESERVE", + "name": "authorized", "outputs": [ { - "internalType": "uint32", + "internalType": "address", "name": "", - "type": "uint32" + "type": "address" } ] }, { - "inputs": [], + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], "stateMutability": "view", "type": "function", - "name": "RELAYER_MAX_PROOF_BYTES", + "name": "bond", "outputs": [ { "internalType": "uint256", - "name": "", + "name": "balance", "type": "uint256" + }, + { + "internalType": "uint48", + "name": "withdrawalRequestedAt", + "type": "uint48" } ] }, - { - "inputs": [], - "stateMutability": "nonpayable", - "type": "function", - "name": "acceptOwnership" - }, { "inputs": [], "stateMutability": "view", "type": "function", - "name": "context", + "name": "bondToken", "outputs": [ { - "internalType": "struct IBridge.Context", - "name": "ctx_", - "type": "tuple", - "components": [ - { - "internalType": "bytes32", - "name": "msgHash", - "type": "bytes32" - }, - { - "internalType": "address", - "name": "from", - "type": "address" - }, - { - "internalType": "uint64", - "name": "srcChainId", - "type": "uint64" - } - ] + "internalType": "contract IERC20", + "name": "", + "type": "address" } ] }, + { + "inputs": [], + "stateMutability": "nonpayable", + "type": "function", + "name": "cancelWithdrawal" + }, { "inputs": [ { - "internalType": "struct IBridge.Message", - "name": "_message", - "type": "tuple", - "components": [ - { - "internalType": "uint64", - "name": "id", - "type": "uint64" - }, - { - "internalType": "uint64", - "name": "fee", - "type": "uint64" - }, - { - "internalType": "uint32", - "name": "gasLimit", - "type": "uint32" - }, - { - "internalType": "address", - "name": "from", - "type": "address" - }, - { - "internalType": "uint64", - "name": "srcChainId", - "type": "uint64" - }, - { - "internalType": "address", - "name": "srcOwner", - "type": "address" - }, - { - "internalType": "uint64", - "name": "destChainId", - "type": "uint64" - }, - { - "internalType": "address", - "name": "destOwner", - "type": "address" - }, - { - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "internalType": "uint256", - "name": "value", - "type": "uint256" - }, - { - "internalType": "bytes", - "name": "data", - "type": "bytes" - } - ] + "internalType": "address", + "name": "_address", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_bond", + "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function", - "name": "failMessage" + "name": "creditBond" }, { "inputs": [ + { + "internalType": "address", + "name": "_address", + "type": "address" + }, { "internalType": "uint256", - "name": "dataLength", + "name": "_bond", "type": "uint256" } ], - "stateMutability": "pure", + "stateMutability": "nonpayable", "type": "function", - "name": "getMessageMinGasLimit", + "name": "debitBond", "outputs": [ { - "internalType": "uint32", - "name": "", - "type": "uint32" + "internalType": "uint256", + "name": "amountDebited_", + "type": "uint256" } ] }, { "inputs": [ { - "internalType": "struct IBridge.Message", - "name": "_message", - "type": "tuple", - "components": [ - { - "internalType": "uint64", - "name": "id", - "type": "uint64" - }, - { - "internalType": "uint64", - "name": "fee", - "type": "uint64" - }, - { - "internalType": "uint32", - "name": "gasLimit", - "type": "uint32" - }, - { - "internalType": "address", - "name": "from", - "type": "address" - }, - { - "internalType": "uint64", - "name": "srcChainId", - "type": "uint64" - }, - { - "internalType": "address", - "name": "srcOwner", - "type": "address" - }, - { - "internalType": "uint64", - "name": "destChainId", - "type": "uint64" - }, - { - "internalType": "address", - "name": "destOwner", - "type": "address" - }, - { - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "internalType": "uint256", - "name": "value", - "type": "uint256" - }, - { - "internalType": "bytes", - "name": "data", - "type": "bytes" - } - ] + "internalType": "uint256", + "name": "_amount", + "type": "uint256" } ], - "stateMutability": "pure", - "type": "function", - "name": "hashMessage", - "outputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ] - }, - { - "inputs": [], - "stateMutability": "view", - "type": "function", - "name": "impl", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ] - }, - { - "inputs": [], - "stateMutability": "view", + "stateMutability": "nonpayable", "type": "function", - "name": "inNonReentrant", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ] + "name": "deposit" }, { "inputs": [ { "internalType": "address", - "name": "_owner", + "name": "_recipient", "type": "address" + }, + { + "internalType": "uint256", + "name": "_amount", + "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function", - "name": "init" - }, - { - "inputs": [], - "stateMutability": "nonpayable", - "type": "function", - "name": "init2" + "name": "depositTo" }, { "inputs": [ { - "internalType": "uint64", - "name": "_chainId", - "type": "uint64" + "internalType": "address", + "name": "_address", + "type": "address" } ], "stateMutability": "view", "type": "function", - "name": "isDestChainEnabled", + "name": "getBondBalance", "outputs": [ { - "internalType": "bool", - "name": "enabled_", - "type": "bool" - }, - { - "internalType": "address", - "name": "destBridge_", - "type": "address" + "internalType": "uint256", + "name": "", + "type": "uint256" } ] }, { "inputs": [ { - "internalType": "struct IBridge.Message", - "name": "_message", - "type": "tuple", - "components": [ - { - "internalType": "uint64", - "name": "id", - "type": "uint64" - }, - { - "internalType": "uint64", - "name": "fee", - "type": "uint64" - }, - { - "internalType": "uint32", - "name": "gasLimit", - "type": "uint32" - }, - { - "internalType": "address", - "name": "from", - "type": "address" - }, - { - "internalType": "uint64", - "name": "srcChainId", - "type": "uint64" - }, - { - "internalType": "address", - "name": "srcOwner", - "type": "address" - }, - { - "internalType": "uint64", - "name": "destChainId", - "type": "uint64" - }, - { - "internalType": "address", - "name": "destOwner", - "type": "address" - }, - { - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "internalType": "uint256", - "name": "value", - "type": "uint256" - }, - { - "internalType": "bytes", - "name": "data", - "type": "bytes" - } - ] + "internalType": "address", + "name": "_address", + "type": "address" }, { - "internalType": "bytes", - "name": "_proof", - "type": "bytes" + "internalType": "uint256", + "name": "_additionalBond", + "type": "uint256" } ], "stateMutability": "view", "type": "function", - "name": "isMessageFailed", + "name": "hasSufficientBond", "outputs": [ { "internalType": "bool", @@ -2520,154 +1398,23 @@ ] }, { - "inputs": [ - { - "internalType": "struct IBridge.Message", - "name": "_message", - "type": "tuple", - "components": [ - { - "internalType": "uint64", - "name": "id", - "type": "uint64" - }, - { - "internalType": "uint64", - "name": "fee", - "type": "uint64" - }, - { - "internalType": "uint32", - "name": "gasLimit", - "type": "uint32" - }, - { - "internalType": "address", - "name": "from", - "type": "address" - }, - { - "internalType": "uint64", - "name": "srcChainId", - "type": "uint64" - }, - { - "internalType": "address", - "name": "srcOwner", - "type": "address" - }, - { - "internalType": "uint64", - "name": "destChainId", - "type": "uint64" - }, - { - "internalType": "address", - "name": "destOwner", - "type": "address" - }, - { - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "internalType": "uint256", - "name": "value", - "type": "uint256" - }, - { - "internalType": "bytes", - "name": "data", - "type": "bytes" - } - ] - }, - { - "internalType": "bytes", - "name": "_proof", - "type": "bytes" - } - ], + "inputs": [], "stateMutability": "view", "type": "function", - "name": "isMessageReceived", + "name": "impl", "outputs": [ { - "internalType": "bool", + "internalType": "address", "name": "", - "type": "bool" + "type": "address" } ] }, { - "inputs": [ - { - "internalType": "struct IBridge.Message", - "name": "_message", - "type": "tuple", - "components": [ - { - "internalType": "uint64", - "name": "id", - "type": "uint64" - }, - { - "internalType": "uint64", - "name": "fee", - "type": "uint64" - }, - { - "internalType": "uint32", - "name": "gasLimit", - "type": "uint32" - }, - { - "internalType": "address", - "name": "from", - "type": "address" - }, - { - "internalType": "uint64", - "name": "srcChainId", - "type": "uint64" - }, - { - "internalType": "address", - "name": "srcOwner", - "type": "address" - }, - { - "internalType": "uint64", - "name": "destChainId", - "type": "uint64" - }, - { - "internalType": "address", - "name": "destOwner", - "type": "address" - }, - { - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "internalType": "uint256", - "name": "value", - "type": "uint256" - }, - { - "internalType": "bytes", - "name": "data", - "type": "bytes" - } - ] - } - ], + "inputs": [], "stateMutability": "view", "type": "function", - "name": "isMessageSent", + "name": "inNonReentrant", "outputs": [ { "internalType": "bool", @@ -2679,32 +1426,25 @@ { "inputs": [ { - "internalType": "bytes32", - "name": "msgHash", - "type": "bytes32" + "internalType": "address", + "name": "_owner", + "type": "address" } ], - "stateMutability": "view", + "stateMutability": "nonpayable", "type": "function", - "name": "messageStatus", - "outputs": [ - { - "internalType": "enum IBridge.Status", - "name": "status", - "type": "uint8" - } - ] + "name": "init" }, { "inputs": [], "stateMutability": "view", "type": "function", - "name": "nextMessageId", + "name": "minBond", "outputs": [ { - "internalType": "uint64", + "internalType": "uint256", "name": "", - "type": "uint64" + "type": "uint256" } ] }, @@ -2754,438 +1494,40 @@ ] }, { - "inputs": [ - { - "internalType": "struct IBridge.Message", - "name": "_message", - "type": "tuple", - "components": [ - { - "internalType": "uint64", - "name": "id", - "type": "uint64" - }, - { - "internalType": "uint64", - "name": "fee", - "type": "uint64" - }, - { - "internalType": "uint32", - "name": "gasLimit", - "type": "uint32" - }, - { - "internalType": "address", - "name": "from", - "type": "address" - }, - { - "internalType": "uint64", - "name": "srcChainId", - "type": "uint64" - }, - { - "internalType": "address", - "name": "srcOwner", - "type": "address" - }, - { - "internalType": "uint64", - "name": "destChainId", - "type": "uint64" - }, - { - "internalType": "address", - "name": "destOwner", - "type": "address" - }, - { - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "internalType": "uint256", - "name": "value", - "type": "uint256" - }, - { - "internalType": "bytes", - "name": "data", - "type": "bytes" - } - ] - }, - { - "internalType": "bytes", - "name": "_proof", - "type": "bytes" - } - ], - "stateMutability": "nonpayable", + "inputs": [], + "stateMutability": "view", "type": "function", - "name": "processMessage", + "name": "proxiableUUID", "outputs": [ { - "internalType": "enum IBridge.Status", - "name": "status_", - "type": "uint8" - }, - { - "internalType": "enum IBridge.StatusReason", - "name": "reason_", - "type": "uint8" + "internalType": "bytes32", + "name": "", + "type": "bytes32" } ] }, + { + "inputs": [], + "stateMutability": "nonpayable", + "type": "function", + "name": "renounceOwnership" + }, + { + "inputs": [], + "stateMutability": "nonpayable", + "type": "function", + "name": "requestWithdrawal" + }, { "inputs": [], "stateMutability": "view", "type": "function", - "name": "proxiableUUID", + "name": "resolver", "outputs": [ { - "internalType": "bytes32", + "internalType": "address", "name": "", - "type": "bytes32" - } - ] - }, - { - "inputs": [ - { - "internalType": "struct IBridge.Message", - "name": "_message", - "type": "tuple", - "components": [ - { - "internalType": "uint64", - "name": "id", - "type": "uint64" - }, - { - "internalType": "uint64", - "name": "fee", - "type": "uint64" - }, - { - "internalType": "uint32", - "name": "gasLimit", - "type": "uint32" - }, - { - "internalType": "address", - "name": "from", - "type": "address" - }, - { - "internalType": "uint64", - "name": "srcChainId", - "type": "uint64" - }, - { - "internalType": "address", - "name": "srcOwner", - "type": "address" - }, - { - "internalType": "uint64", - "name": "destChainId", - "type": "uint64" - }, - { - "internalType": "address", - "name": "destOwner", - "type": "address" - }, - { - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "internalType": "uint256", - "name": "value", - "type": "uint256" - }, - { - "internalType": "bytes", - "name": "data", - "type": "bytes" - } - ] - }, - { - "internalType": "bytes", - "name": "_proof", - "type": "bytes" - } - ], - "stateMutability": "nonpayable", - "type": "function", - "name": "recallMessage" - }, - { - "inputs": [], - "stateMutability": "nonpayable", - "type": "function", - "name": "renounceOwnership" - }, - { - "inputs": [], - "stateMutability": "view", - "type": "function", - "name": "resolver", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ] - }, - { - "inputs": [ - { - "internalType": "struct IBridge.Message", - "name": "_message", - "type": "tuple", - "components": [ - { - "internalType": "uint64", - "name": "id", - "type": "uint64" - }, - { - "internalType": "uint64", - "name": "fee", - "type": "uint64" - }, - { - "internalType": "uint32", - "name": "gasLimit", - "type": "uint32" - }, - { - "internalType": "address", - "name": "from", - "type": "address" - }, - { - "internalType": "uint64", - "name": "srcChainId", - "type": "uint64" - }, - { - "internalType": "address", - "name": "srcOwner", - "type": "address" - }, - { - "internalType": "uint64", - "name": "destChainId", - "type": "uint64" - }, - { - "internalType": "address", - "name": "destOwner", - "type": "address" - }, - { - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "internalType": "uint256", - "name": "value", - "type": "uint256" - }, - { - "internalType": "bytes", - "name": "data", - "type": "bytes" - } - ] - }, - { - "internalType": "bool", - "name": "_isLastAttempt", - "type": "bool" - } - ], - "stateMutability": "nonpayable", - "type": "function", - "name": "retryMessage" - }, - { - "inputs": [ - { - "internalType": "struct IBridge.Message", - "name": "_message", - "type": "tuple", - "components": [ - { - "internalType": "uint64", - "name": "id", - "type": "uint64" - }, - { - "internalType": "uint64", - "name": "fee", - "type": "uint64" - }, - { - "internalType": "uint32", - "name": "gasLimit", - "type": "uint32" - }, - { - "internalType": "address", - "name": "from", - "type": "address" - }, - { - "internalType": "uint64", - "name": "srcChainId", - "type": "uint64" - }, - { - "internalType": "address", - "name": "srcOwner", - "type": "address" - }, - { - "internalType": "uint64", - "name": "destChainId", - "type": "uint64" - }, - { - "internalType": "address", - "name": "destOwner", - "type": "address" - }, - { - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "internalType": "uint256", - "name": "value", - "type": "uint256" - }, - { - "internalType": "bytes", - "name": "data", - "type": "bytes" - } - ] - } - ], - "stateMutability": "payable", - "type": "function", - "name": "sendMessage", - "outputs": [ - { - "internalType": "bytes32", - "name": "msgHash_", - "type": "bytes32" - }, - { - "internalType": "struct IBridge.Message", - "name": "message_", - "type": "tuple", - "components": [ - { - "internalType": "uint64", - "name": "id", - "type": "uint64" - }, - { - "internalType": "uint64", - "name": "fee", - "type": "uint64" - }, - { - "internalType": "uint32", - "name": "gasLimit", - "type": "uint32" - }, - { - "internalType": "address", - "name": "from", - "type": "address" - }, - { - "internalType": "uint64", - "name": "srcChainId", - "type": "uint64" - }, - { - "internalType": "address", - "name": "srcOwner", - "type": "address" - }, - { - "internalType": "uint64", - "name": "destChainId", - "type": "uint64" - }, - { - "internalType": "address", - "name": "destOwner", - "type": "address" - }, - { - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "internalType": "uint256", - "name": "value", - "type": "uint256" - }, - { - "internalType": "bytes", - "name": "data", - "type": "bytes" - } - ] - } - ] - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "_msgHash", - "type": "bytes32" - } - ], - "stateMutability": "pure", - "type": "function", - "name": "signalForFailedMessage", - "outputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ] - }, - { - "inputs": [], - "stateMutability": "view", - "type": "function", - "name": "signalService", - "outputs": [ - { - "internalType": "contract ISignalService", - "name": "", - "type": "address" + "type": "address" } ] }, @@ -3235,6 +1577,36 @@ "stateMutability": "payable", "type": "function", "name": "upgradeToAndCall" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function", + "name": "withdraw" + }, + { + "inputs": [], + "stateMutability": "view", + "type": "function", + "name": "withdrawalDelay", + "outputs": [ + { + "internalType": "uint48", + "name": "", + "type": "uint48" + } + ] } ], "devdoc": { @@ -3243,71 +1615,64 @@ "acceptOwnership()": { "details": "The new owner accepts the ownership transfer." }, - "context()": { - "returns": { - "ctx_": "The context of the current bridge operation." - } + "cancelWithdrawal()": { + "details": "Can be called during or after the withdrawal delay period" }, - "failMessage((uint64,uint64,uint32,address,uint64,address,uint64,address,address,uint256,bytes))": { - "details": "This function can only be called by `message.destOwner`.", + "constructor": { "params": { - "_message": "The message to fail. message." + "_authorized": "The address of the authorized contract (Inbox)", + "_bondToken": "The ERC20 bond token address", + "_minBond": "The minimum bond required", + "_withdrawalDelay": "The delay period for withdrawals (e.g., 7 days)" } }, - "getMessageMinGasLimit(uint256)": { + "creditBond(address,uint256)": { "params": { - "dataLength": "The length of message.data." - }, - "returns": { - "_0": "The minimal gas limit required for sending this message." + "_address": "The address to credit the bond to", + "_bond": "The amount of bond to credit" } }, - "hashMessage((uint64,uint64,uint32,address,uint64,address,uint64,address,address,uint256,bytes))": { + "debitBond(address,uint256)": { + "details": "Best effort means that if `_bond` is greater than the balance, the entire balance is debited instead", "params": { - "_message": "The message struct variable to be hashed." + "_address": "The address to debit the bond from", + "_bond": "The amount of bond to debit" }, "returns": { - "_0": "The message's hash." + "amountDebited_": "The actual amount debited" } }, - "init(address)": { + "deposit(uint256)": { "params": { - "_owner": "The owner of this contract. msg.sender will be used if this value is zero." + "_amount": "The amount to deposit." } }, - "isDestChainEnabled(uint64)": { + "depositTo(address,uint256)": { "params": { - "_chainId": "The destination chain ID." - }, - "returns": { - "destBridge_": "The bridge of the destination chain.", - "enabled_": "True if the destination chain is enabled." + "_amount": "The amount to deposit.", + "_recipient": "The address to credit the bond to." } }, - "isMessageFailed((uint64,uint64,uint32,address,uint64,address,uint64,address,address,uint256,bytes),bytes)": { + "getBondBalance(address)": { "params": { - "_message": "The message.", - "_proof": "The merkle inclusion proof." + "_address": "The address to get the bond balance for" }, "returns": { - "_0": "true if the message has failed, false otherwise." + "_0": "The bond balance of the address" } }, - "isMessageReceived((uint64,uint64,uint32,address,uint64,address,uint64,address,address,uint256,bytes),bytes)": { + "hasSufficientBond(address,uint256)": { "params": { - "_message": "The message.", - "_proof": "The merkle inclusion proof." + "_additionalBond": "The additional bond required the account has to have on top of the minimum bond", + "_address": "The address to check" }, "returns": { - "_0": "true if the message has been received, false otherwise." + "_0": "True if the account has sufficient bond and is active" } }, - "isMessageSent((uint64,uint64,uint32,address,uint64,address,uint64,address,address,uint256,bytes))": { + "init(address)": { "params": { - "_message": "The message." - }, - "returns": { - "_0": "true if the message was sent." + "_owner": "The owner of this contract" } }, "owner()": { @@ -3321,58 +1686,20 @@ "pendingOwner()": { "details": "Returns the address of the pending owner." }, - "processMessage((uint64,uint64,uint32,address,uint64,address,uint64,address,address,uint256,bytes),bytes)": { - "details": "To ensure successful execution, we recommend this transaction's gas limit not to be smaller than: `(message.gasLimit - GAS_RESERVE) * 64 / 63 + GAS_RESERVE`, Or we can use a simplified rule: `tx.gaslimit = message.gaslimit * 102%`.", - "params": { - "_message": "The message to be processed.", - "_proof": "The merkle inclusion proof." - }, - "returns": { - "status_": "The message's status after processing and the reason for the change." - } - }, "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." }, - "recallMessage((uint64,uint64,uint32,address,uint64,address,uint64,address,address,uint256,bytes),bytes)": { - "details": "Verifies via proof that the message was marked FAILED on the destination chain's Bridge, then releases the associated Ether or tokens on the source chain.", - "params": { - "_message": "The message whose associated Ether should be released.", - "_proof": "The merkle inclusion proof." - } - }, "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." }, + "requestWithdrawal()": { + "details": "Account cannot perform bond-restricted actions after requesting withdrawal" + }, "resolver()": { "returns": { "_0": "The address of this contract." } }, - "retryMessage((uint64,uint64,uint32,address,uint64,address,uint64,address,address,uint256,bytes),bool)": { - "details": "This function can be called by any address, including the `message.destOwner`. It attempts to invoke the messageCall and updates the message status accordingly.", - "params": { - "_isLastAttempt": "Specifies if this is the last attempt to retry the message.", - "_message": "The message to retry." - } - }, - "sendMessage((uint64,uint64,uint32,address,uint64,address,uint64,address,address,uint256,bytes))": { - "params": { - "_message": "The message to be sent." - }, - "returns": { - "message_": "The updated message sent.", - "msgHash_": "The hash of the sent message." - } - }, - "signalForFailedMessage(bytes32)": { - "params": { - "_msgHash": "The message hash." - }, - "returns": { - "_0": "The failed representation of it as bytes32." - } - }, "transferOwnership(address)": { "details": "Starts the ownership transfer of the contract to a new account. Replaces the pending transfer if there is one. Can only be called by the current owner." }, @@ -3383,6 +1710,13 @@ "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." + }, + "withdraw(address,uint256)": { + "details": "On L1, withdrawal is subject to time-based security. On L2, withdrawals are unrestricted.", + "params": { + "_amount": "The amount to withdraw.", + "_to": "The recipient of withdrawn funds." + } } }, "version": 1 @@ -3390,41 +1724,44 @@ "userdoc": { "kind": "user", "methods": { - "context()": { - "notice": "Gets the current context." + "authorized()": { + "notice": "The address of the inbox contract that is allowed to call debitBond and creditBond" }, - "failMessage((uint64,uint64,uint32,address,uint64,address,uint64,address,address,uint256,bytes))": { - "notice": "Mark a message as failed if the message is currently retriable." + "bond(address)": { + "notice": "Per-account bond state" }, - "getMessageMinGasLimit(uint256)": { - "notice": "Returns the minimal gas limit required for sending a given message." + "bondToken()": { + "notice": "ERC20 token used as bond." }, - "hashMessage((uint64,uint64,uint32,address,uint64,address,uint64,address,address,uint256,bytes))": { - "notice": "Hash the message" + "cancelWithdrawal()": { + "notice": "Cancel withdrawal request to reactivate the account" }, - "init(address)": { - "notice": "Initializes the contract." + "constructor": { + "notice": "Constructor disables initializers for upgradeable pattern" }, - "init2()": { - "notice": "This function shall be called by previously deployed contracts." + "creditBond(address,uint256)": { + "notice": "Credits a bond to an address" }, - "isDestChainEnabled(uint64)": { - "notice": "Checks if the destination chain is enabled." + "debitBond(address,uint256)": { + "notice": "Debits a bond from an address with best effort" }, - "isMessageFailed((uint64,uint64,uint32,address,uint64,address,uint64,address,address,uint256,bytes),bytes)": { - "notice": "Checks if a msgHash has failed on its destination chain. This is the 'readonly' version of proveMessageFailed." + "deposit(uint256)": { + "notice": "Deposit ERC20 bond tokens into the manager." }, - "isMessageReceived((uint64,uint64,uint32,address,uint64,address,uint64,address,address,uint256,bytes),bytes)": { - "notice": "Checks if a msgHash has been received on its source chain. This is the 'readonly' version of proveMessageReceived." + "depositTo(address,uint256)": { + "notice": "Deposit ERC20 bond tokens for another address." }, - "isMessageSent((uint64,uint64,uint32,address,uint64,address,uint64,address,address,uint256,bytes))": { - "notice": "Checks if the message was sent." + "getBondBalance(address)": { + "notice": "Gets the bond balance of an address" }, - "messageStatus(bytes32)": { - "notice": "Mapping to store the status of a message from its hash." + "hasSufficientBond(address,uint256)": { + "notice": "Checks if an account has sufficient bond and hasn't requested withdrawal" }, - "nextMessageId()": { - "notice": "Returns the unique id of the next bridge message" + "init(address)": { + "notice": "Initializes the BondManager contract" + }, + "minBond()": { + "notice": "Minimum bond required" }, "pause()": { "notice": "Pauses the contract." @@ -3432,26 +1769,20 @@ "paused()": { "notice": "Returns true if the contract is paused, and false otherwise." }, - "processMessage((uint64,uint64,uint32,address,uint64,address,uint64,address,address,uint256,bytes),bytes)": { - "notice": "Processes a bridge message on the destination chain. This function is callable by any address, including the `message.destOwner`." - }, - "recallMessage((uint64,uint64,uint32,address,uint64,address,uint64,address,address,uint256,bytes),bytes)": { - "notice": "Recalls a message on its source chain after it has failed on the destination chain, releasing associated assets on the source chain." + "requestWithdrawal()": { + "notice": "Request to start the withdrawal process" }, "resolver()": { "notice": "Returns the address of this contract." }, - "retryMessage((uint64,uint64,uint32,address,uint64,address,uint64,address,address,uint256,bytes),bool)": { - "notice": "Retries to invoke the messageCall after releasing associated Ether and tokens." - }, - "sendMessage((uint64,uint64,uint32,address,uint64,address,uint64,address,address,uint256,bytes))": { - "notice": "Sends a message to the destination chain and takes custody of Ether required in this contract." - }, - "signalForFailedMessage(bytes32)": { - "notice": "Returns a signal representing a failed/recalled message." - }, "unpause()": { "notice": "Unpauses the contract." + }, + "withdraw(address,uint256)": { + "notice": "Withdraw bond to a recipient." + }, + "withdrawalDelay()": { + "notice": "Time delay required before withdrawal after request" } }, "version": 1 @@ -3489,25 +1820,25 @@ "bytecodeHash": "ipfs" }, "compilationTarget": { - "contracts/shared/bridge/Bridge.sol": "Bridge" + "contracts/layer2/core/BondManager.sol": "BondManager" }, "evmVersion": "shanghai", "libraries": {} }, "sources": { - "contracts/shared/bridge/Bridge.sol": { - "keccak256": "0x58d4c542b77fe23d3078c3b9de781db54f1f318ed817d18af39cf915c3100c1e", + "contracts/layer2/core/BondManager.sol": { + "keccak256": "0xde7c80e4018ab2e13d9877b4baca57de7324af0473856c31f26208515f013db6", "urls": [ - "bzz-raw://7482d1d403d37f1a925b5ae979cdb7fba1463b87cfa882cafa54454f9868283d", - "dweb:/ipfs/QmdhKFvapFkQD11AanqR1v28CRC8ZrMRu4dnVw8QoqGqNR" + "bzz-raw://a388f3bc303f04a1108ea6fb40e420a785ecfa3bcbbc574e03cdd8d8326bf352", + "dweb:/ipfs/QmXYKGmHAivSxVWhzatXKZCxCd8oY2bjUfeGBFZ7iDRtw2" ], "license": "MIT" }, - "contracts/shared/bridge/IBridge.sol": { - "keccak256": "0x6b200a3471c7d1e2150c7a2f07f9fc4e619b93c72e61a937ecaf2f659f17a6e1", + "contracts/layer2/core/IBondManager.sol": { + "keccak256": "0x434f4528166c44d411603e3d221fdda8a2e5c73404e7b3256db8fea16fbe6954", "urls": [ - "bzz-raw://51633f9d1c2799a6943d94324c7a4630adfbf46aad0639670870835a08ea563e", - "dweb:/ipfs/Qmbt7P6LSkvgKomUkD5E85128t35kc6QUPXCWSEGrG5n9W" + "bzz-raw://d9ee4f789f154881b683cdfb92f0e63a8ddc4d32a7a9960020d6d253d72053d6", + "dweb:/ipfs/QmViASeY24iP9QPosNAjSeHxSisjh1oLqMtqexAqpFjfsY" ], "license": "MIT" }, @@ -3519,14 +1850,6 @@ ], "license": "MIT" }, - "contracts/shared/common/EssentialResolverContract.sol": { - "keccak256": "0x5736a30fa45c48e3ff6d53170d980942ad42b788de81f5542a66397fb572b457", - "urls": [ - "bzz-raw://06d2dcf4d83335d05a12272507991ca23d23ed5a893fd2f97e75324135858ed2", - "dweb:/ipfs/QmfWRCDnq6TXg8uwv2odpeLFguRSeLKuhL3VPMmGyyh9Eh" - ], - "license": "MIT" - }, "contracts/shared/common/IResolver.sol": { "keccak256": "0x01273635aa0be2ad8d6218ad520f824f2003eab82be1d14c46da58f2516a48dd", "urls": [ @@ -3535,163 +1858,35 @@ ], "license": "MIT" }, - "contracts/shared/libs/LibAddress.sol": { - "keccak256": "0x06e39ae119af22feb19ebf8cbd9ee8514118b84388ef93c4650779fd10da8538", + "node_modules/@openzeppelin/contracts-upgradeable/access/Ownable2StepUpgradeable.sol": { + "keccak256": "0x9140dabc466abab21b48b72dbda26736b1183a310d0e677d3719d201df026510", "urls": [ - "bzz-raw://e0284aa60ade3d0f87134e6f39c181cca41c345af766b2f8f72c6de50ccf9841", - "dweb:/ipfs/QmYNcjXmgVVPForNL34yrcZ97H2hKef4jL1DaQy6oNFhmY" + "bzz-raw://75267b14b60dc216d01d596a4008189a6c44d3314e53eded0edb1e757d95be16", + "dweb:/ipfs/QmQoMaxTRT6V7uQj9USfdQH9jh1crywB9auVjThzUSAbG2" ], "license": "MIT" }, - "contracts/shared/libs/LibMath.sol": { - "keccak256": "0x3e2ce1ccb5a4d94c6f97e09ebdb1e731c0bae466981be52147f15063b3742d69", + "node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol": { + "keccak256": "0x359a1ab89b46b9aba7bcad3fb651924baf4893d15153049b9976b0fc9be1358e", "urls": [ - "bzz-raw://3530b4db00c1f357562d2dbab8978613c09b30ce1a6312de864399c7af82f9c7", - "dweb:/ipfs/Qmbp9HeWwPAx5Krcjuu8UCJB3so6rZu4TUTPD6vRKDDBjg" + "bzz-raw://e89863421b4014b96a4b62be76eb3b9f0a8afe9684664a6f389124c0964bfe5c", + "dweb:/ipfs/Qmbk7xr1irpDuU1WdxXgxELBXxs61rHhCgod7heVcvFx16" ], "license": "MIT" }, - "contracts/shared/libs/LibNames.sol": { - "keccak256": "0x1227d014ad714497f4779b334da558a7da409860a6139b8ba88e53044bf8fb17", + "node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol": { + "keccak256": "0x89be10e757d242e9b18d5a32c9fbe2019f6d63052bbe46397a430a1d60d7f794", "urls": [ - "bzz-raw://f743c99518df4f1b1a8cdcbcdcc9a60357b81684e40f68573d4b9eef230d67ee", - "dweb:/ipfs/QmapJMW5WhFjg8FK598gRitW3EwzkRn6TQ9fLuGjoMcaMP" + "bzz-raw://f103ee2e4aecd37aac6ceefe670709cdd7613dee25fa2d4d9feaf7fc0aaa155e", + "dweb:/ipfs/QmRiNZLoJk5k3HPMYGPGjZFd2ke1ZxjhJZkM45Ec9GH9hv" ], "license": "MIT" }, - "contracts/shared/libs/LibNetwork.sol": { - "keccak256": "0xb5c6769cffcf864f725f8a76f98806f668f94a516125b854faa983b29d8f91ee", + "node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol": { + "keccak256": "0x9c80f545915582e63fe206c6ce27cbe85a86fc10b9cd2a0e8c9488fb7c2ee422", "urls": [ - "bzz-raw://de4a9c2ae643272308f42ec150bae3b2a88145357e78eac074e8f68ff3d04595", - "dweb:/ipfs/QmWNdKbTUvpR33nDunSjzKtR3ZQPPkFDD538fqhr9m6VY1" - ], - "license": "MIT" - }, - "contracts/shared/signal/ICheckpointStore.sol": { - "keccak256": "0x82d7e6a1a6297ee7126ab7a83039900e453f76c9a0dff367be5699c742312067", - "urls": [ - "bzz-raw://1db8501e9b6cadfdefd1ca1bb0cc9d241c9643abab73ec68d12e17aa8e543679", - "dweb:/ipfs/QmVMFkLduiSeYoZ3NynDNoAcxZi53Lt6Gct7TtXXTyY4LE" - ], - "license": "MIT" - }, - "contracts/shared/signal/ISignalService.sol": { - "keccak256": "0xda39e5766d2a3cc48e19aa0bd8c1235dd7e44bf6df18f0025999e08e25ad0639", - "urls": [ - "bzz-raw://71d6bb884be8db07e4b89f792aa8e3ad69c1045912be23cfb114935572fe6274", - "dweb:/ipfs/QmZBuTtCSs4HtKVWo1zsKdU2WndsVDKX8H9VBwyCYbCGeN" - ], - "license": "MIT" - }, - "node_modules/@openzeppelin/contracts-upgradeable/access/Ownable2StepUpgradeable.sol": { - "keccak256": "0x9140dabc466abab21b48b72dbda26736b1183a310d0e677d3719d201df026510", - "urls": [ - "bzz-raw://75267b14b60dc216d01d596a4008189a6c44d3314e53eded0edb1e757d95be16", - "dweb:/ipfs/QmQoMaxTRT6V7uQj9USfdQH9jh1crywB9auVjThzUSAbG2" - ], - "license": "MIT" - }, - "node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol": { - "keccak256": "0x359a1ab89b46b9aba7bcad3fb651924baf4893d15153049b9976b0fc9be1358e", - "urls": [ - "bzz-raw://e89863421b4014b96a4b62be76eb3b9f0a8afe9684664a6f389124c0964bfe5c", - "dweb:/ipfs/Qmbk7xr1irpDuU1WdxXgxELBXxs61rHhCgod7heVcvFx16" - ], - "license": "MIT" - }, - "node_modules/@openzeppelin/contracts-upgradeable/governance/utils/IVotesUpgradeable.sol": { - "keccak256": "0x2d600bbef9320309cd2a86c1d087eb9d6dbcc00430713ee54bbc5c5a2a11ba31", - "urls": [ - "bzz-raw://52a5380b861d676adef15f33f8f643e236a1acb2d9456beb4065307eaa22bc2a", - "dweb:/ipfs/QmdwSfxrafQubVvCoQCU5T7bbPR8JDWU1WotSDXSiUdm33" - ], - "license": "MIT" - }, - "node_modules/@openzeppelin/contracts-upgradeable/interfaces/IERC5267Upgradeable.sol": { - "keccak256": "0xe562dab443278837fa50faddb76743399e942181881db8dccaea3bd1712994db", - "urls": [ - "bzz-raw://79ebe0e661396045cefe94f4256398cf632756d779a6871319db374c9eb128c9", - "dweb:/ipfs/QmfCTCivb9fFhyCX8hzushzcKunvKL2N9RDsnRNdvbd11M" - ], - "license": "MIT" - }, - "node_modules/@openzeppelin/contracts-upgradeable/interfaces/IERC5805Upgradeable.sol": { - "keccak256": "0x19848eec9045c8b91f1ab6b1853966443e3e36bcbc307593ed37a9f0df179d69", - "urls": [ - "bzz-raw://a07972c1330ee99a5d051b393260e01412ac4c14c7bc4d75d80b7cce291a6412", - "dweb:/ipfs/QmQx1ZiAo4AbSobN41c1xUEtyX1QejydWCmY7Sj3H5aDNv" - ], - "license": "MIT" - }, - "node_modules/@openzeppelin/contracts-upgradeable/interfaces/IERC6372Upgradeable.sol": { - "keccak256": "0x3026befd6d69d1b46960bdc35a2ad37c0e1352f26983ee3728dd61fd32aa308a", - "urls": [ - "bzz-raw://c2001b7209fd4920ec7674f194db7fe163dfea7a7af2dd25fe6c0e5a94dc595c", - "dweb:/ipfs/QmXX2zTFyiNWoDxivV3trKcKWifAENMqNAB34NgjWq5feX" - ], - "license": "MIT" - }, - "node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol": { - "keccak256": "0x89be10e757d242e9b18d5a32c9fbe2019f6d63052bbe46397a430a1d60d7f794", - "urls": [ - "bzz-raw://f103ee2e4aecd37aac6ceefe670709cdd7613dee25fa2d4d9feaf7fc0aaa155e", - "dweb:/ipfs/QmRiNZLoJk5k3HPMYGPGjZFd2ke1ZxjhJZkM45Ec9GH9hv" - ], - "license": "MIT" - }, - "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol": { - "keccak256": "0xa9311aeb22f459e57d4dac77ee76cf43fb28ad3215278456211b5852b0e9e970", - "urls": [ - "bzz-raw://ebdf0d3e42bd25223e45a213311d6d7e177d56a2c541a78b58c0c9d10bbdfbf9", - "dweb:/ipfs/QmfMyehJ6pxHrh7yL4793J6i7dofXnS2zH3cTtC8JdQMV9" - ], - "license": "MIT" - }, - "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol": { - "keccak256": "0x0e1f0f5f62f67a881cd1a9597acbc0a5e4071f3c2c10449a183b922ae7272e3f", - "urls": [ - "bzz-raw://c25f742ff154998d19a669e2508c3597b363e123ce9144cd0fcf6521229f401f", - "dweb:/ipfs/QmQXRuFzStEWqeEPbhQU6cAg9PaSowxJVo4PDKyRod7dco" - ], - "license": "MIT" - }, - "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/extensions/ERC20PermitUpgradeable.sol": { - "keccak256": "0x3d159b9049d4ef465c1fb41f7ff7620f18f52bf6f8f3018bae4ed95c2df537d3", - "urls": [ - "bzz-raw://38f7cfa624d878eec3c97e30dac64c6c00a79c65aa2799cebbf683e74488cd27", - "dweb:/ipfs/QmdtMH3xSGXNqvBcndsxWCUfmjta6kebnUYwKasJZucTfP" - ], - "license": "MIT" - }, - "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/extensions/ERC20VotesUpgradeable.sol": { - "keccak256": "0x82d5c2e8d5c7209f5cd2e7a40807ba264cb8bc577db1b121eda5f14f62d609c2", - "urls": [ - "bzz-raw://024b99222ec16e75ff1b719c8f0dacf2d8e26250b3c076bd184ac1dadae47492", - "dweb:/ipfs/QmP11f3Dumw3CYg4ZtBLJrh8juULgodSuQfCqqgX5DqpJE" - ], - "license": "MIT" - }, - "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/extensions/IERC20MetadataUpgradeable.sol": { - "keccak256": "0x605434219ebbe4653f703640f06969faa5a1d78f0bfef878e5ddbb1ca369ceeb", - "urls": [ - "bzz-raw://4c9c634f99dd02d73ce7498b03a6305e251c05eeebb71457306561c1fab0fa7d", - "dweb:/ipfs/QmbYRBbZHy8YoaQKXdPryiL3CSS7uUaRfRYi1TUj9cTqJQ" - ], - "license": "MIT" - }, - "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/extensions/IERC20PermitUpgradeable.sol": { - "keccak256": "0x07e881de3b9f6d2c07909f193f24b96c7fe4ea60013260f3f25aecd8bab3c2f8", - "urls": [ - "bzz-raw://1fed09b97ccb0ff9ba9b6a94224f1d489026bf6b4b7279bfe64fb6e8749dee4d", - "dweb:/ipfs/QmcRAzaSP1UnGr4vrGkfJmB2L9aiTYoXfV1Lg9gqrVRWn8" - ], - "license": "MIT" - }, - "node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol": { - "keccak256": "0x9c80f545915582e63fe206c6ce27cbe85a86fc10b9cd2a0e8c9488fb7c2ee422", - "urls": [ - "bzz-raw://310136ad60820af4177a11a61d77a3686faf5fca4942b600e08fc940db38396b", - "dweb:/ipfs/QmbCzMNSTL7Zi7M4UCSqBrkHtp4jjxUnGbkneCZKdR1qeq" + "bzz-raw://310136ad60820af4177a11a61d77a3686faf5fca4942b600e08fc940db38396b", + "dweb:/ipfs/QmbCzMNSTL7Zi7M4UCSqBrkHtp4jjxUnGbkneCZKdR1qeq" ], "license": "MIT" }, @@ -3703,62 +1898,6 @@ ], "license": "MIT" }, - "node_modules/@openzeppelin/contracts-upgradeable/utils/CountersUpgradeable.sol": { - "keccak256": "0x798741e231b22b81e2dd2eddaaf8832dee4baf5cd8e2dbaa5c1dd12a1c053c4d", - "urls": [ - "bzz-raw://c41e8a7a906b8f362c8b760a44edadc61782008ea2ecf377ac5b5325bf6c3912", - "dweb:/ipfs/QmcXr19zuH3YLzD6RZNE6UTzvsKSckdxZQnagPoDGkCHu2" - ], - "license": "MIT" - }, - "node_modules/@openzeppelin/contracts-upgradeable/utils/StringsUpgradeable.sol": { - "keccak256": "0xb96dc79b65b7c37937919dcdb356a969ce0aa2e8338322bf4dc027a3c9c9a7eb", - "urls": [ - "bzz-raw://f8613145881436fc0480fff22da4868d611e2b0c0c3da083334eb4362ce1945a", - "dweb:/ipfs/QmPqpP3YeRbBdTJRe6Gv2eGsUaANf4J6RwTNRW36iYahfV" - ], - "license": "MIT" - }, - "node_modules/@openzeppelin/contracts-upgradeable/utils/cryptography/ECDSAUpgradeable.sol": { - "keccak256": "0xa014f65d84b02827055d99993ccdbfb4b56b2c9e91eb278d82a93330659d06e4", - "urls": [ - "bzz-raw://50a7e716a74f3d48a7f549086faa94afcd58b9f18ac8e9f74af4571f3a1d8d5c", - "dweb:/ipfs/QmTkDNWkq5o9Cv2jS7s6JvSmsPBkeunZhPe7Z2njGL31wo" - ], - "license": "MIT" - }, - "node_modules/@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol": { - "keccak256": "0x7077d7f3369b21f286840c0d69b09a8a6d3d6e522fff67bfc240fd0a6cdf178c", - "urls": [ - "bzz-raw://0f59e7a19530bd6ee236285f9a87c930d27b73464f6b7398e29a6f4cfc2670ac", - "dweb:/ipfs/QmVfN4gHvJNac7KiuhLhtgtbdDo5a6Mw5hMcwJkzYugq5R" - ], - "license": "MIT" - }, - "node_modules/@openzeppelin/contracts-upgradeable/utils/math/MathUpgradeable.sol": { - "keccak256": "0x2bc0007987c229ae7624eb29be6a9b84f6a6a5872f76248b15208b131ea41c4e", - "urls": [ - "bzz-raw://2b2835c737d073ef8b82a4cc246495a9740f43e7ff2cf130906b2449ff9bfb91", - "dweb:/ipfs/QmSCWfNoSvvTN57ic7o1RW6NqSxxGAqbBTnLKc7QHe27qB" - ], - "license": "MIT" - }, - "node_modules/@openzeppelin/contracts-upgradeable/utils/math/SafeCastUpgradeable.sol": { - "keccak256": "0xcef50f95b43b038aa40aed25b62fc45906c681a5c1d504a4fdcf3bc6330a8d4b", - "urls": [ - "bzz-raw://ef883699a00970d5469e502514e2854704cd53d7a49825078aa807a2f056315c", - "dweb:/ipfs/QmRjpN9oxgw6zHCVjfWNB9MzaYpNPPgqu7Rrwqwabmhpis" - ], - "license": "MIT" - }, - "node_modules/@openzeppelin/contracts-upgradeable/utils/math/SignedMathUpgradeable.sol": { - "keccak256": "0x88f6b7bba3ee33eeb741f9a0f5bc98b6e6e352d0fe4905377bb328590f84095a", - "urls": [ - "bzz-raw://88ace2d60f265752f18903d839910be4e4e104340b2957678585b812447825d4", - "dweb:/ipfs/QmXFkNxMc3AAGzhs2wUEZyErWQjsvoTGyYjuU5oZkFki5Z" - ], - "license": "MIT" - }, "node_modules/@openzeppelin/contracts/interfaces/IERC1967.sol": { "keccak256": "0x3cbef5ebc24b415252e2f8c0c9254555d30d9f085603b4b80d9b5ed20ab87e90", "urls": [ @@ -3799,6 +1938,30 @@ ], "license": "MIT" }, + "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol": { + "keccak256": "0x287b55befed2961a7eabd7d7b1b2839cbca8a5b80ef8dcbb25ed3d4c2002c305", + "urls": [ + "bzz-raw://bd39944e8fc06be6dbe2dd1d8449b5336e23c6a7ba3e8e9ae5ae0f37f35283f5", + "dweb:/ipfs/QmPV3FGYjVwvKSgAXKUN3r9T9GwniZz83CxBpM7vyj2G53" + ], + "license": "MIT" + }, + "node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Permit.sol": { + "keccak256": "0xb264c03a3442eb37a68ad620cefd1182766b58bee6cec40343480392d6b14d69", + "urls": [ + "bzz-raw://28879d01fd22c07b44f006612775f8577defbe459cb01685c5e25cd518c91a71", + "dweb:/ipfs/QmVgfkwv2Fxw6hhTcDUZhE7NkoSKjab3ipM7UaRbt6uXb5" + ], + "license": "MIT" + }, + "node_modules/@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol": { + "keccak256": "0xabefac93435967b4d36a4fabcbdbb918d1f0b7ae3c3d85bc30923b326c927ed1", + "urls": [ + "bzz-raw://9d213d3befca47da33f6db0310826bcdb148299805c10d77175ecfe1d06a9a68", + "dweb:/ipfs/QmRgCn6SP1hbBkExUADFuDo8xkT4UU47yjNF5FhCeRbQmS" + ], + "license": "MIT" + }, "node_modules/@openzeppelin/contracts/utils/Address.sol": { "keccak256": "0x006dd67219697fe68d7fbfdea512e7c4cb64a43565ed86171d67e844982da6fa", "urls": [ @@ -3814,14 +1977,6 @@ "dweb:/ipfs/Qmb1UANWiWq5pCKbmHSu772hd4nt374dVaghGmwSVNuk8Q" ], "license": "MIT" - }, - "node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol": { - "keccak256": "0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1", - "urls": [ - "bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f", - "dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy" - ], - "license": "MIT" } }, "version": 1 @@ -3830,7 +1985,7 @@ "storage": [ { "astId": 11586, - "contract": "contracts/shared/bridge/Bridge.sol:Bridge", + "contract": "contracts/layer2/core/BondManager.sol:BondManager", "label": "_initialized", "offset": 0, "slot": "0", @@ -3838,7 +1993,7 @@ }, { "astId": 11589, - "contract": "contracts/shared/bridge/Bridge.sol:Bridge", + "contract": "contracts/layer2/core/BondManager.sol:BondManager", "label": "_initializing", "offset": 1, "slot": "0", @@ -3846,7 +2001,7 @@ }, { "astId": 16420, - "contract": "contracts/shared/bridge/Bridge.sol:Bridge", + "contract": "contracts/layer2/core/BondManager.sol:BondManager", "label": "__gap", "offset": 0, "slot": "1", @@ -3854,7 +2009,7 @@ }, { "astId": 11331, - "contract": "contracts/shared/bridge/Bridge.sol:Bridge", + "contract": "contracts/layer2/core/BondManager.sol:BondManager", "label": "_owner", "offset": 0, "slot": "51", @@ -3862,7 +2017,7 @@ }, { "astId": 11451, - "contract": "contracts/shared/bridge/Bridge.sol:Bridge", + "contract": "contracts/layer2/core/BondManager.sol:BondManager", "label": "__gap", "offset": 0, "slot": "52", @@ -3870,7 +2025,7 @@ }, { "astId": 11224, - "contract": "contracts/shared/bridge/Bridge.sol:Bridge", + "contract": "contracts/layer2/core/BondManager.sol:BondManager", "label": "_pendingOwner", "offset": 0, "slot": "101", @@ -3878,7 +2033,7 @@ }, { "astId": 11318, - "contract": "contracts/shared/bridge/Bridge.sol:Bridge", + "contract": "contracts/layer2/core/BondManager.sol:BondManager", "label": "__gap", "offset": 0, "slot": "102", @@ -3886,7 +2041,7 @@ }, { "astId": 4316, - "contract": "contracts/shared/bridge/Bridge.sol:Bridge", + "contract": "contracts/layer2/core/BondManager.sol:BondManager", "label": "__gapFromOldAddressResolver", "offset": 0, "slot": "151", @@ -3894,7 +2049,7 @@ }, { "astId": 4319, - "contract": "contracts/shared/bridge/Bridge.sol:Bridge", + "contract": "contracts/layer2/core/BondManager.sol:BondManager", "label": "__reentry", "offset": 0, "slot": "201", @@ -3902,7 +2057,7 @@ }, { "astId": 4321, - "contract": "contracts/shared/bridge/Bridge.sol:Bridge", + "contract": "contracts/layer2/core/BondManager.sol:BondManager", "label": "__paused", "offset": 1, "slot": "201", @@ -3910,67 +2065,27 @@ }, { "astId": 4325, - "contract": "contracts/shared/bridge/Bridge.sol:Bridge", + "contract": "contracts/layer2/core/BondManager.sol:BondManager", "label": "__gap", "offset": 0, "slot": "202", "type": "t_array(t_uint256)49_storage" }, { - "astId": 2533, - "contract": "contracts/shared/bridge/Bridge.sol:Bridge", - "label": "__reserved1", + "astId": 1542, + "contract": "contracts/layer2/core/BondManager.sol:BondManager", + "label": "bond", "offset": 0, "slot": "251", - "type": "t_uint64" - }, - { - "astId": 2535, - "contract": "contracts/shared/bridge/Bridge.sol:Bridge", - "label": "nextMessageId", - "offset": 8, - "slot": "251", - "type": "t_uint64" - }, - { - "astId": 2541, - "contract": "contracts/shared/bridge/Bridge.sol:Bridge", - "label": "messageStatus", - "offset": 0, - "slot": "252", - "type": "t_mapping(t_bytes32,t_enum(Status)4018)" - }, - { - "astId": 2545, - "contract": "contracts/shared/bridge/Bridge.sol:Bridge", - "label": "__ctx", - "offset": 0, - "slot": "253", - "type": "t_struct(Context)4053_storage" - }, - { - "astId": 2548, - "contract": "contracts/shared/bridge/Bridge.sol:Bridge", - "label": "__reserved2", - "offset": 0, - "slot": "255", - "type": "t_uint256" - }, - { - "astId": 2551, - "contract": "contracts/shared/bridge/Bridge.sol:Bridge", - "label": "__reserved3", - "offset": 0, - "slot": "256", - "type": "t_uint256" + "type": "t_mapping(t_address,t_struct(Bond)2043_storage)" }, { - "astId": 2555, - "contract": "contracts/shared/bridge/Bridge.sol:Bridge", + "astId": 1546, + "contract": "contracts/layer2/core/BondManager.sol:BondManager", "label": "__gap", "offset": 0, - "slot": "257", - "type": "t_array(t_uint256)44_storage" + "slot": "252", + "type": "t_array(t_uint256)49_storage" } ], "types": { @@ -3979,12 +2094,6 @@ "label": "address", "numberOfBytes": "20" }, - "t_array(t_uint256)44_storage": { - "encoding": "inplace", - "label": "uint256[44]", - "numberOfBytes": "1408", - "base": "t_uint256" - }, "t_array(t_uint256)49_storage": { "encoding": "inplace", "label": "uint256[49]", @@ -4002,51 +2111,33 @@ "label": "bool", "numberOfBytes": "1" }, - "t_bytes32": { - "encoding": "inplace", - "label": "bytes32", - "numberOfBytes": "32" - }, - "t_enum(Status)4018": { - "encoding": "inplace", - "label": "enum IBridge.Status", - "numberOfBytes": "1" - }, - "t_mapping(t_bytes32,t_enum(Status)4018)": { + "t_mapping(t_address,t_struct(Bond)2043_storage)": { "encoding": "mapping", - "key": "t_bytes32", - "label": "mapping(bytes32 => enum IBridge.Status)", + "key": "t_address", + "label": "mapping(address => struct IBondManager.Bond)", "numberOfBytes": "32", - "value": "t_enum(Status)4018" + "value": "t_struct(Bond)2043_storage" }, - "t_struct(Context)4053_storage": { + "t_struct(Bond)2043_storage": { "encoding": "inplace", - "label": "struct IBridge.Context", + "label": "struct IBondManager.Bond", "numberOfBytes": "64", "members": [ { - "astId": 4048, - "contract": "contracts/shared/bridge/Bridge.sol:Bridge", - "label": "msgHash", + "astId": 2040, + "contract": "contracts/layer2/core/BondManager.sol:BondManager", + "label": "balance", "offset": 0, "slot": "0", - "type": "t_bytes32" + "type": "t_uint256" }, { - "astId": 4050, - "contract": "contracts/shared/bridge/Bridge.sol:Bridge", - "label": "from", + "astId": 2042, + "contract": "contracts/layer2/core/BondManager.sol:BondManager", + "label": "withdrawalRequestedAt", "offset": 0, "slot": "1", - "type": "t_address" - }, - { - "astId": 4052, - "contract": "contracts/shared/bridge/Bridge.sol:Bridge", - "label": "srcChainId", - "offset": 20, - "slot": "1", - "type": "t_uint64" + "type": "t_uint48" } ] }, @@ -4055,10 +2146,10 @@ "label": "uint256", "numberOfBytes": "32" }, - "t_uint64": { + "t_uint48": { "encoding": "inplace", - "label": "uint64", - "numberOfBytes": "8" + "label": "uint48", + "numberOfBytes": "6" }, "t_uint8": { "encoding": "inplace", @@ -4068,143 +2159,32 @@ } }, "ast": { - "absolutePath": "contracts/shared/bridge/Bridge.sol", - "id": 4010, + "absolutePath": "contracts/layer2/core/BondManager.sol", + "id": 2035, "exportedSymbols": { - "Address": [ - 22766 - ], - "Bridge": [ - 4009 - ], - "ContextUpgradeable": [ - 16421 - ], - "CountersUpgradeable": [ - 16495 - ], - "ECDSAUpgradeable": [ - 17090 - ], - "EIP712Upgradeable": [ - 17375 - ], - "ERC1967Upgrade": [ - 20512 - ], - "ERC20PermitUpgradeable": [ - 14110 - ], - "ERC20Upgradeable": [ - 13840 - ], - "ERC20VotesUpgradeable": [ - 14865 + "BondManager": [ + 2034 ], "EssentialContract": [ 4802 ], - "EssentialResolverContract": [ - 5017 - ], - "IBeacon": [ - 20574 - ], - "IBridge": [ - 4153 - ], - "ICheckpointStore": [ - 6185 - ], - "IERC165": [ - 23513 - ], - "IERC1822Proxiable": [ - 20171 - ], - "IERC1967": [ - 20161 - ], - "IERC20MetadataUpgradeable": [ - 14890 - ], - "IERC20PermitUpgradeable": [ - 14926 - ], - "IERC20Upgradeable": [ - 13918 - ], - "IERC5267Upgradeable": [ - 11555 - ], - "IERC5805Upgradeable": [ - 11564 - ], - "IERC6372Upgradeable": [ - 11579 - ], - "IMessageInvocable": [ - 4172 + "IBondManager": [ + 2159 ], - "IRecallableSender": [ - 4164 + "IERC20": [ + 21865 ], - "IResolver": [ - 5035 - ], - "ISignalService": [ - 6277 - ], - "IVotesUpgradeable": [ - 11530 - ], - "Initializable": [ - 11748 - ], - "LibAddress": [ - 5555 - ], - "LibMath": [ - 5787 - ], - "LibNames": [ - 5845 - ], - "LibNetwork": [ - 6029 - ], - "MathUpgradeable": [ - 18298 - ], - "Ownable2StepUpgradeable": [ - 11319 - ], - "OwnableUpgradeable": [ - 11452 - ], - "SafeCastUpgradeable": [ - 19839 - ], - "SignedMathUpgradeable": [ - 19944 - ], - "StorageSlot": [ - 22906 - ], - "StringsUpgradeable": [ - 16724 - ], - "UUPSUpgradeable": [ - 21013 + "SafeERC20": [ + 22302 ] }, "nodeType": "SourceUnit", - "src": "32:26236:9", + "src": "32:8039:4", "nodes": [ { - "id": 2454, + "id": 1506, "nodeType": "PragmaDirective", - "src": "32:24:9", + "src": "32:24:4", "nodes": [], "literals": [ "solidity", @@ -4214,592 +2194,249 @@ ] }, { - "id": 2455, - "nodeType": "ImportDirective", - "src": "58:49:9", - "nodes": [], - "absolutePath": "contracts/shared/common/EssentialResolverContract.sol", - "file": "../common/EssentialResolverContract.sol", - "nameLocation": "-1:-1:-1", - "scope": 4010, - "sourceUnit": 5018, - "symbolAliases": [], - "unitAlias": "" - }, - { - "id": 2456, - "nodeType": "ImportDirective", - "src": "108:32:9", - "nodes": [], - "absolutePath": "contracts/shared/libs/LibAddress.sol", - "file": "../libs/LibAddress.sol", - "nameLocation": "-1:-1:-1", - "scope": 4010, - "sourceUnit": 5556, - "symbolAliases": [], - "unitAlias": "" - }, - { - "id": 2457, - "nodeType": "ImportDirective", - "src": "141:29:9", - "nodes": [], - "absolutePath": "contracts/shared/libs/LibMath.sol", - "file": "../libs/LibMath.sol", - "nameLocation": "-1:-1:-1", - "scope": 4010, - "sourceUnit": 5788, - "symbolAliases": [], - "unitAlias": "" - }, - { - "id": 2458, - "nodeType": "ImportDirective", - "src": "171:30:9", - "nodes": [], - "absolutePath": "contracts/shared/libs/LibNames.sol", - "file": "../libs/LibNames.sol", - "nameLocation": "-1:-1:-1", - "scope": 4010, - "sourceUnit": 5846, - "symbolAliases": [], - "unitAlias": "" - }, - { - "id": 2459, + "id": 1508, "nodeType": "ImportDirective", - "src": "202:32:9", + "src": "58:50:4", "nodes": [], - "absolutePath": "contracts/shared/libs/LibNetwork.sol", - "file": "../libs/LibNetwork.sol", + "absolutePath": "contracts/layer2/core/IBondManager.sol", + "file": "./IBondManager.sol", "nameLocation": "-1:-1:-1", - "scope": 4010, - "sourceUnit": 6030, - "symbolAliases": [], + "scope": 2035, + "sourceUnit": 2160, + "symbolAliases": [ + { + "foreign": { + "id": 1507, + "name": "IBondManager", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2159, + "src": "67:12:4", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], "unitAlias": "" }, { - "id": 2460, + "id": 1510, "nodeType": "ImportDirective", - "src": "235:38:9", + "src": "109:72:4", "nodes": [], - "absolutePath": "contracts/shared/signal/ISignalService.sol", - "file": "../signal/ISignalService.sol", + "absolutePath": "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", + "file": "@openzeppelin/contracts/token/ERC20/IERC20.sol", "nameLocation": "-1:-1:-1", - "scope": 4010, - "sourceUnit": 6278, - "symbolAliases": [], + "scope": 2035, + "sourceUnit": 21866, + "symbolAliases": [ + { + "foreign": { + "id": 1509, + "name": "IERC20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 21865, + "src": "118:6:4", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], "unitAlias": "" }, { - "id": 2461, + "id": 1512, "nodeType": "ImportDirective", - "src": "274:23:9", + "src": "182:84:4", "nodes": [], - "absolutePath": "contracts/shared/bridge/IBridge.sol", - "file": "./IBridge.sol", + "absolutePath": "node_modules/@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol", + "file": "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol", "nameLocation": "-1:-1:-1", - "scope": 4010, - "sourceUnit": 4173, - "symbolAliases": [], + "scope": 2035, + "sourceUnit": 22303, + "symbolAliases": [ + { + "foreign": { + "id": 1511, + "name": "SafeERC20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 22302, + "src": "191:9:4", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], "unitAlias": "" }, { - "id": 2462, + "id": 1514, "nodeType": "ImportDirective", - "src": "298:94:9", + "src": "267:76:4", "nodes": [], - "absolutePath": "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/extensions/ERC20VotesUpgradeable.sol", - "file": "@openzeppelin/contracts-upgradeable/token/ERC20/extensions/ERC20VotesUpgradeable.sol", + "absolutePath": "contracts/shared/common/EssentialContract.sol", + "file": "src/shared/common/EssentialContract.sol", "nameLocation": "-1:-1:-1", - "scope": 4010, - "sourceUnit": 14866, - "symbolAliases": [], + "scope": 2035, + "sourceUnit": 4803, + "symbolAliases": [ + { + "foreign": { + "id": 1513, + "name": "EssentialContract", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4802, + "src": "276:17:4", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], "unitAlias": "" }, { - "id": 4009, + "id": 2034, "nodeType": "ContractDefinition", - "src": "643:25624:9", + "src": "498:7572:4", "nodes": [ { - "id": 2470, + "id": 1523, "nodeType": "UsingForDirective", - "src": "703:26:9", + "src": "560:27:4", "nodes": [], "global": false, "libraryName": { - "id": 2468, - "name": "Address", + "id": 1520, + "name": "SafeERC20", "nameLocations": [ - "709:7:9" + "566:9:4" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 22766, - "src": "709:7:9" + "referencedDeclaration": 22302, + "src": "566:9:4" }, "typeName": { - "id": 2469, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "721:7:9", - "stateMutability": "nonpayable", + "id": 1522, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 1521, + "name": "IERC20", + "nameLocations": [ + "580:6:4" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 21865, + "src": "580:6:4" + }, + "referencedDeclaration": 21865, + "src": "580:6:4", "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + "typeIdentifier": "t_contract$_IERC20_$21865", + "typeString": "contract IERC20" } } }, { - "id": 2473, - "nodeType": "UsingForDirective", - "src": "734:26:9", + "id": 1526, + "nodeType": "VariableDeclaration", + "src": "858:35:4", "nodes": [], - "global": false, - "libraryName": { - "id": 2471, - "name": "LibMath", - "nameLocations": [ - "740:7:9" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 5787, - "src": "740:7:9" + "constant": false, + "documentation": { + "id": 1524, + "nodeType": "StructuredDocumentation", + "src": "759:94:4", + "text": "@notice The address of the inbox contract that is allowed to call debitBond and creditBond" + }, + "functionSelector": "456cb7c6", + "mutability": "immutable", + "name": "authorized", + "nameLocation": "883:10:4", + "scope": 2034, + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" }, "typeName": { - "id": 2472, - "name": "uint256", + "id": 1525, + "name": "address", "nodeType": "ElementaryTypeName", - "src": "752:7:9", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - }, - { - "id": 2476, - "nodeType": "UsingForDirective", - "src": "765:29:9", - "nodes": [], - "global": false, - "libraryName": { - "id": 2474, - "name": "LibAddress", - "nameLocations": [ - "771:10:9" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 5555, - "src": "771:10:9" - }, - "typeName": { - "id": 2475, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "786:7:9", - "stateMutability": "nonpayable", + "src": "858:7:4", + "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } - } - }, - { - "id": 2479, - "nodeType": "UsingForDirective", - "src": "799:37:9", - "nodes": [], - "global": false, - "libraryName": { - "id": 2477, - "name": "LibAddress", - "nameLocations": [ - "805:10:9" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 5555, - "src": "805:10:9" }, - "typeName": { - "id": 2478, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "820:15:9", - "stateMutability": "payable", - "typeDescriptions": { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - } - } - }, - { - "id": 2488, - "nodeType": "StructDefinition", - "src": "842:150:9", - "nodes": [], - "canonicalName": "Bridge.ProcessingStats", - "members": [ - { - "constant": false, - "id": 2481, - "mutability": "mutable", - "name": "gasUsedInFeeCalc", - "nameLocation": "882:16:9", - "nodeType": "VariableDeclaration", - "scope": 2488, - "src": "875:23:9", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - }, - "typeName": { - "id": 2480, - "name": "uint32", - "nodeType": "ElementaryTypeName", - "src": "875:6:9", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 2483, - "mutability": "mutable", - "name": "proofSize", - "nameLocation": "915:9:9", - "nodeType": "VariableDeclaration", - "scope": 2488, - "src": "908:16:9", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - }, - "typeName": { - "id": 2482, - "name": "uint32", - "nodeType": "ElementaryTypeName", - "src": "908:6:9", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 2485, - "mutability": "mutable", - "name": "numCacheOps", - "nameLocation": "941:11:9", - "nodeType": "VariableDeclaration", - "scope": 2488, - "src": "934:18:9", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - }, - "typeName": { - "id": 2484, - "name": "uint32", - "nodeType": "ElementaryTypeName", - "src": "934:6:9", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 2487, - "mutability": "mutable", - "name": "processedByRelayer", - "nameLocation": "967:18:9", - "nodeType": "VariableDeclaration", - "scope": 2488, - "src": "962:23:9", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 2486, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "962:4:9", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "visibility": "internal" - } - ], - "name": "ProcessingStats", - "nameLocation": "849:15:9", - "scope": 4009, "visibility": "public" }, { - "id": 2499, - "nodeType": "EventDefinition", - "src": "1078:88:9", - "nodes": [], - "anonymous": false, - "documentation": { - "id": 2489, - "nodeType": "StructuredDocumentation", - "src": "998:75:9", - "text": "@dev A debug event for fine-tuning gas related constants in the future." - }, - "eventSelector": "8580f507761043ecdd2bdca084d6fb0109150b3d9842d854d34e3dea6d69387d", - "name": "MessageProcessed", - "nameLocation": "1084:16:9", - "parameters": { - "id": 2498, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 2491, - "indexed": true, - "mutability": "mutable", - "name": "msgHash", - "nameLocation": "1117:7:9", - "nodeType": "VariableDeclaration", - "scope": 2499, - "src": "1101:23:9", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 2490, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "1101:7:9", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 2494, - "indexed": false, - "mutability": "mutable", - "name": "message", - "nameLocation": "1134:7:9", - "nodeType": "VariableDeclaration", - "scope": 2499, - "src": "1126:15:9", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Message_$4046_memory_ptr", - "typeString": "struct IBridge.Message" - }, - "typeName": { - "id": 2493, - "nodeType": "UserDefinedTypeName", - "pathNode": { - "id": 2492, - "name": "Message", - "nameLocations": [ - "1126:7:9" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 4046, - "src": "1126:7:9" - }, - "referencedDeclaration": 4046, - "src": "1126:7:9", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Message_$4046_storage_ptr", - "typeString": "struct IBridge.Message" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 2497, - "indexed": false, - "mutability": "mutable", - "name": "stats", - "nameLocation": "1159:5:9", - "nodeType": "VariableDeclaration", - "scope": 2499, - "src": "1143:21:9", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_struct$_ProcessingStats_$2488_memory_ptr", - "typeString": "struct Bridge.ProcessingStats" - }, - "typeName": { - "id": 2496, - "nodeType": "UserDefinedTypeName", - "pathNode": { - "id": 2495, - "name": "ProcessingStats", - "nameLocations": [ - "1143:15:9" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 2488, - "src": "1143:15:9" - }, - "referencedDeclaration": 2488, - "src": "1143:15:9", - "typeDescriptions": { - "typeIdentifier": "t_struct$_ProcessingStats_$2488_storage_ptr", - "typeString": "struct Bridge.ProcessingStats" - } - }, - "visibility": "internal" - } - ], - "src": "1100:65:9" - } - }, - { - "id": 2503, + "id": 1530, "nodeType": "VariableDeclaration", - "src": "1354:44:9", + "src": "942:33:4", "nodes": [], - "constant": true, + "constant": false, "documentation": { - "id": 2500, + "id": 1527, "nodeType": "StructuredDocumentation", - "src": "1172:177:9", - "text": "@dev The amount of gas that will be deducted from message.gasLimit before calculating the\n invocation gas limit. This value should be fine-tuned with production data." + "src": "900:37:4", + "text": "@notice ERC20 token used as bond." }, - "functionSelector": "be880c81", - "mutability": "constant", - "name": "GAS_RESERVE", - "nameLocation": "1377:11:9", - "scope": 4009, + "functionSelector": "c28f4392", + "mutability": "immutable", + "name": "bondToken", + "nameLocation": "966:9:4", + "scope": 2034, "stateVariable": true, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" + "typeIdentifier": "t_contract$_IERC20_$21865", + "typeString": "contract IERC20" }, "typeName": { - "id": 2501, - "name": "uint32", - "nodeType": "ElementaryTypeName", - "src": "1354:6:9", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - "value": { - "hexValue": "3830305f303030", - "id": 2502, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1391:7:9", - "typeDescriptions": { - "typeIdentifier": "t_rational_800000_by_1", - "typeString": "int_const 800000" + "id": 1529, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 1528, + "name": "IERC20", + "nameLocations": [ + "942:6:4" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 21865, + "src": "942:6:4" }, - "value": "800_000" - }, - "visibility": "public" - }, - { - "id": 2507, - "nodeType": "VariableDeclaration", - "src": "1584:45:9", - "nodes": [], - "constant": true, - "documentation": { - "id": 2504, - "nodeType": "StructuredDocumentation", - "src": "1405:174:9", - "text": "@dev The gas overhead for both receiving and invoking a message, as well as the proof\n calldata cost.\n This value should be fine-tuned with production data." - }, - "functionSelector": "a730cdfb", - "mutability": "constant", - "name": "GAS_OVERHEAD", - "nameLocation": "1607:12:9", - "scope": 4009, - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - }, - "typeName": { - "id": 2505, - "name": "uint32", - "nodeType": "ElementaryTypeName", - "src": "1584:6:9", + "referencedDeclaration": 21865, + "src": "942:6:4", "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" + "typeIdentifier": "t_contract$_IERC20_$21865", + "typeString": "contract IERC20" } }, - "value": { - "hexValue": "3132305f303030", - "id": 2506, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1622:7:9", - "typeDescriptions": { - "typeIdentifier": "t_rational_120000_by_1", - "typeString": "int_const 120000" - }, - "value": "120_000" - }, "visibility": "public" }, { - "id": 2511, + "id": 1533, "nodeType": "VariableDeclaration", - "src": "1713:57:9", + "src": "1020:32:4", "nodes": [], - "constant": true, + "constant": false, "documentation": { - "id": 2508, + "id": 1531, "nodeType": "StructuredDocumentation", - "src": "1636:72:9", - "text": "@dev The max proof size for a message to be processable by a relayer." + "src": "982:33:4", + "text": "@notice Minimum bond required" }, - "functionSelector": "422770fa", - "mutability": "constant", - "name": "RELAYER_MAX_PROOF_BYTES", - "nameLocation": "1737:23:9", - "scope": 4009, + "functionSelector": "831518b7", + "mutability": "immutable", + "name": "minBond", + "nameLocation": "1045:7:4", + "scope": 2034, "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -4807,14103 +2444,580 @@ "typeString": "uint256" }, "typeName": { - "id": 2509, + "id": 1532, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1713:7:9", + "src": "1020:7:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "value": { - "hexValue": "3230305f303030", - "id": 2510, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1763:7:9", - "typeDescriptions": { - "typeIdentifier": "t_rational_200000_by_1", - "typeString": "int_const 200000" - }, - "value": "200_000" - }, "visibility": "public" }, { - "id": 2515, + "id": 1536, "nodeType": "VariableDeclaration", - "src": "1847:65:9", + "src": "1421:39:4", "nodes": [], - "constant": true, + "constant": false, "documentation": { - "id": 2512, + "id": 1534, "nodeType": "StructuredDocumentation", - "src": "1777:65:9", - "text": "@dev The amount of gas not to charge fee per cache operation." + "src": "1059:357:4", + "text": "@notice Time delay required before withdrawal after request\n @dev WARNING: In theory operations can remain unfinalized indefinitely, but in practice\n after\n the `extendedProvingWindow` the incentives are very strong for finalization.\n A safe value for this is `extendedProvingWindow` + buffer, for example, 2 weeks." }, - "mutability": "constant", - "name": "_GAS_REFUND_PER_CACHE_OPERATION", - "nameLocation": "1872:31:9", - "scope": 4009, + "functionSelector": "a7ab6961", + "mutability": "immutable", + "name": "withdrawalDelay", + "nameLocation": "1445:15:4", + "scope": 2034, "stateVariable": true, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_uint48", + "typeString": "uint48" }, "typeName": { - "id": 2513, - "name": "uint256", + "id": 1535, + "name": "uint48", "nodeType": "ElementaryTypeName", - "src": "1847:7:9", + "src": "1421:6:4", "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_uint48", + "typeString": "uint48" } }, - "value": { - "hexValue": "32305f303030", - "id": 2514, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1906:6:9", - "typeDescriptions": { - "typeIdentifier": "t_rational_20000_by_1", - "typeString": "int_const 20000" - }, - "value": "20_000" - }, - "visibility": "private" + "visibility": "public" }, { - "id": 2519, + "id": 1542, "nodeType": "VariableDeclaration", - "src": "2181:55:9", + "src": "1506:49:4", "nodes": [], - "constant": true, + "constant": false, "documentation": { - "id": 2516, + "id": 1537, "nodeType": "StructuredDocumentation", - "src": "1919:37:9", - "text": "@dev Gas limit for sending Ether." + "src": "1467:34:4", + "text": "@notice Per-account bond state" }, - "mutability": "constant", - "name": "_SEND_ETHER_GAS_LIMIT", - "nameLocation": "2206:21:9", - "scope": 4009, + "functionSelector": "247ce85b", + "mutability": "mutable", + "name": "bond", + "nameLocation": "1551:4:4", + "scope": 2034, "stateVariable": true, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Bond_$2043_storage_$", + "typeString": "mapping(address => struct IBondManager.Bond)" }, "typeName": { - "id": 2517, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "2181:7:9", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": { - "hexValue": "33355f303030", - "id": 2518, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2230:6:9", + "id": 1541, + "keyName": "account", + "keyNameLocation": "1522:7:4", + "keyType": { + "id": 1538, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1514:7:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "1506:37:4", "typeDescriptions": { - "typeIdentifier": "t_rational_35000_by_1", - "typeString": "int_const 35000" + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Bond_$2043_storage_$", + "typeString": "mapping(address => struct IBondManager.Bond)" }, - "value": "35_000" + "valueName": "bond", + "valueNameLocation": "1538:4:4", + "valueType": { + "id": 1540, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 1539, + "name": "Bond", + "nameLocations": [ + "1533:4:4" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 2043, + "src": "1533:4:4" + }, + "referencedDeclaration": 2043, + "src": "1533:4:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bond_$2043_storage_ptr", + "typeString": "struct IBondManager.Bond" + } + } }, - "visibility": "private" + "visibility": "public" }, { - "id": 2527, + "id": 1546, "nodeType": "VariableDeclaration", - "src": "2308:57:9", + "src": "1562:25:4", "nodes": [], - "constant": true, - "documentation": { - "id": 2520, - "nodeType": "StructuredDocumentation", - "src": "2243:60:9", - "text": "@dev Place holder value when not using transient storage" - }, - "mutability": "constant", - "name": "_PLACEHOLDER", - "nameLocation": "2333:12:9", - "scope": 4009, + "constant": false, + "mutability": "mutable", + "name": "__gap", + "nameLocation": "1582:5:4", + "scope": 2034, "stateVariable": true, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_array$_t_uint256_$49_storage", + "typeString": "uint256[49]" }, "typeName": { - "id": 2521, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "2308:7:9", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": { - "expression": { - "arguments": [ - { - "id": 2524, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "2353:7:9", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_uint256_$", - "typeString": "type(uint256)" - }, - "typeName": { - "id": 2523, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "2353:7:9", - "typeDescriptions": {} - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_type$_t_uint256_$", - "typeString": "type(uint256)" - } - ], - "id": 2522, - "name": "type", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -27, - "src": "2348:4:9", - "typeDescriptions": { - "typeIdentifier": "t_function_metatype_pure$__$returns$__$", - "typeString": "function () pure" - } - }, - "id": 2525, + "baseType": { + "id": 1543, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1562:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1545, + "length": { + "hexValue": "3439", + "id": 1544, "isConstant": false, "isLValue": false, "isPure": true, - "kind": "functionCall", + "kind": "number", "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "2348:13:9", - "tryCall": false, + "nodeType": "Literal", + "src": "1570:2:4", "typeDescriptions": { - "typeIdentifier": "t_magic_meta_type_t_uint256", - "typeString": "type(uint256)" - } + "typeIdentifier": "t_rational_49_by_1", + "typeString": "int_const 49" + }, + "value": "49" }, - "id": 2526, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "memberLocation": "2362:3:9", - "memberName": "max", - "nodeType": "MemberAccess", - "src": "2348:17:9", + "nodeType": "ArrayTypeName", + "src": "1562:11:4", "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_array$_t_uint256_$49_storage_ptr", + "typeString": "uint256[49]" } }, "visibility": "private" }, { - "id": 2530, - "nodeType": "VariableDeclaration", - "src": "2372:45:9", - "nodes": [], - "constant": false, - "functionSelector": "62d09453", - "mutability": "immutable", - "name": "signalService", - "nameLocation": "2404:13:9", - "scope": 4009, - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_contract$_ISignalService_$6277", - "typeString": "contract ISignalService" - }, - "typeName": { - "id": 2529, - "nodeType": "UserDefinedTypeName", - "pathNode": { - "id": 2528, - "name": "ISignalService", - "nameLocations": [ - "2372:14:9" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 6277, - "src": "2372:14:9" - }, - "referencedDeclaration": 6277, - "src": "2372:14:9", - "typeDescriptions": { - "typeIdentifier": "t_contract$_ISignalService_$6277", - "typeString": "contract ISignalService" - } - }, - "visibility": "public" - }, - { - "id": 2533, - "nodeType": "VariableDeclaration", - "src": "2482:26:9", - "nodes": [], - "constant": false, - "documentation": { - "id": 2531, - "nodeType": "StructuredDocumentation", - "src": "2424:53:9", - "text": "@notice The next message ID.\n @dev Slot 1." - }, - "mutability": "mutable", - "name": "__reserved1", - "nameLocation": "2497:11:9", - "scope": 4009, - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - }, - "typeName": { - "id": 2532, - "name": "uint64", - "nodeType": "ElementaryTypeName", - "src": "2482:6:9", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - }, - "visibility": "private" - }, - { - "id": 2535, - "nodeType": "VariableDeclaration", - "src": "2514:27:9", - "nodes": [], - "baseFunctions": [ - 4143 - ], - "constant": false, - "functionSelector": "eefbf17e", - "mutability": "mutable", - "name": "nextMessageId", - "nameLocation": "2528:13:9", - "scope": 4009, - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - }, - "typeName": { - "id": 2534, - "name": "uint64", - "nodeType": "ElementaryTypeName", - "src": "2514:6:9", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - }, - "visibility": "public" - }, - { - "id": 2541, - "nodeType": "VariableDeclaration", - "src": "2641:62:9", - "nodes": [], - "constant": false, - "documentation": { - "id": 2536, - "nodeType": "StructuredDocumentation", - "src": "2548:88:9", - "text": "@notice Mapping to store the status of a message from its hash.\n @dev Slot 2." - }, - "functionSelector": "3c6cf473", - "mutability": "mutable", - "name": "messageStatus", - "nameLocation": "2690:13:9", - "scope": 4009, - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_enum$_Status_$4018_$", - "typeString": "mapping(bytes32 => enum IBridge.Status)" - }, - "typeName": { - "id": 2540, - "keyName": "msgHash", - "keyNameLocation": "2657:7:9", - "keyType": { - "id": 2537, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "2649:7:9", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "nodeType": "Mapping", - "src": "2641:41:9", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_enum$_Status_$4018_$", - "typeString": "mapping(bytes32 => enum IBridge.Status)" - }, - "valueName": "status", - "valueNameLocation": "2675:6:9", - "valueType": { - "id": 2539, - "nodeType": "UserDefinedTypeName", - "pathNode": { - "id": 2538, - "name": "Status", - "nameLocations": [ - "2668:6:9" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 4018, - "src": "2668:6:9" - }, - "referencedDeclaration": 4018, - "src": "2668:6:9", - "typeDescriptions": { - "typeIdentifier": "t_enum$_Status_$4018", - "typeString": "enum IBridge.Status" - } - } - }, - "visibility": "public" - }, - { - "id": 2545, - "nodeType": "VariableDeclaration", - "src": "2737:21:9", - "nodes": [], - "constant": false, - "documentation": { - "id": 2542, - "nodeType": "StructuredDocumentation", - "src": "2710:22:9", - "text": "@dev Slots 3 and 4" - }, - "mutability": "mutable", - "name": "__ctx", - "nameLocation": "2753:5:9", - "scope": 4009, - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Context_$4053_storage", - "typeString": "struct IBridge.Context" - }, - "typeName": { - "id": 2544, - "nodeType": "UserDefinedTypeName", - "pathNode": { - "id": 2543, - "name": "Context", - "nameLocations": [ - "2737:7:9" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 4053, - "src": "2737:7:9" - }, - "referencedDeclaration": 4053, - "src": "2737:7:9", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Context_$4053_storage_ptr", - "typeString": "struct IBridge.Context" - } - }, - "visibility": "private" - }, - { - "id": 2548, - "nodeType": "VariableDeclaration", - "src": "2786:27:9", - "nodes": [], - "constant": false, - "documentation": { - "id": 2546, - "nodeType": "StructuredDocumentation", - "src": "2765:16:9", - "text": "@dev Slot 5." - }, - "mutability": "mutable", - "name": "__reserved2", - "nameLocation": "2802:11:9", - "scope": 4009, - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 2547, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "2786:7:9", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "private" - }, - { - "id": 2551, - "nodeType": "VariableDeclaration", - "src": "2841:27:9", - "nodes": [], - "constant": false, - "documentation": { - "id": 2549, - "nodeType": "StructuredDocumentation", - "src": "2820:16:9", - "text": "@dev Slot 6." - }, - "mutability": "mutable", - "name": "__reserved3", - "nameLocation": "2857:11:9", - "scope": 4009, - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 2550, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "2841:7:9", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "private" - }, - { - "id": 2555, - "nodeType": "VariableDeclaration", - "src": "2875:25:9", - "nodes": [], - "constant": false, - "mutability": "mutable", - "name": "__gap", - "nameLocation": "2895:5:9", - "scope": 4009, - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$44_storage", - "typeString": "uint256[44]" - }, - "typeName": { - "baseType": { - "id": 2552, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "2875:7:9", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 2554, - "length": { - "hexValue": "3434", - "id": 2553, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2883:2:9", - "typeDescriptions": { - "typeIdentifier": "t_rational_44_by_1", - "typeString": "int_const 44" - }, - "value": "44" - }, - "nodeType": "ArrayTypeName", - "src": "2875:11:9", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$44_storage_ptr", - "typeString": "uint256[44]" - } - }, - "visibility": "private" - }, - { - "id": 2557, - "nodeType": "ErrorDefinition", - "src": "2907:26:9", - "nodes": [], - "errorSelector": "e363bba8", - "name": "B_INVALID_CHAINID", - "nameLocation": "2913:17:9", - "parameters": { - "id": 2556, - "nodeType": "ParameterList", - "parameters": [], - "src": "2930:2:9" - } - }, - { - "id": 2559, - "nodeType": "ErrorDefinition", - "src": "2938:26:9", - "nodes": [], - "errorSelector": "5ceed173", - "name": "B_INVALID_CONTEXT", - "nameLocation": "2944:17:9", - "parameters": { - "id": 2558, - "nodeType": "ParameterList", - "parameters": [], - "src": "2961:2:9" - } - }, - { - "id": 2561, - "nodeType": "ErrorDefinition", - "src": "2969:22:9", - "nodes": [], - "errorSelector": "c9f51787", - "name": "B_INVALID_FEE", - "nameLocation": "2975:13:9", - "parameters": { - "id": 2560, - "nodeType": "ParameterList", - "parameters": [], - "src": "2988:2:9" - } - }, - { - "id": 2563, - "nodeType": "ErrorDefinition", - "src": "2996:28:9", - "nodes": [], - "errorSelector": "08c2ad53", - "name": "B_INVALID_GAS_LIMIT", - "nameLocation": "3002:19:9", - "parameters": { - "id": 2562, - "nodeType": "ParameterList", - "parameters": [], - "src": "3021:2:9" - } - }, - { - "id": 2565, - "nodeType": "ErrorDefinition", - "src": "3029:25:9", - "nodes": [], - "errorSelector": "67624eb4", - "name": "B_INVALID_STATUS", - "nameLocation": "3035:16:9", - "parameters": { - "id": 2564, - "nodeType": "ParameterList", - "parameters": [], - "src": "3051:2:9" - } - }, - { - "id": 2567, - "nodeType": "ErrorDefinition", - "src": "3059:24:9", - "nodes": [], - "errorSelector": "958557be", - "name": "B_INVALID_VALUE", - "nameLocation": "3065:15:9", - "parameters": { - "id": 2566, - "nodeType": "ParameterList", - "parameters": [], - "src": "3080:2:9" - } - }, - { - "id": 2569, - "nodeType": "ErrorDefinition", - "src": "3088:27:9", - "nodes": [], - "errorSelector": "5fbdff73", - "name": "B_INSUFFICIENT_GAS", - "nameLocation": "3094:18:9", - "parameters": { - "id": 2568, - "nodeType": "ParameterList", - "parameters": [], - "src": "3112:2:9" - } - }, - { - "id": 2571, - "nodeType": "ErrorDefinition", - "src": "3120:27:9", - "nodes": [], - "errorSelector": "ab035ad5", - "name": "B_MESSAGE_NOT_SENT", - "nameLocation": "3126:18:9", - "parameters": { - "id": 2570, - "nodeType": "ParameterList", - "parameters": [], - "src": "3144:2:9" - } - }, - { - "id": 2573, - "nodeType": "ErrorDefinition", - "src": "3152:28:9", - "nodes": [], - "errorSelector": "e56dc386", - "name": "B_PERMISSION_DENIED", - "nameLocation": "3158:19:9", - "parameters": { - "id": 2572, - "nodeType": "ParameterList", - "parameters": [], - "src": "3177:2:9" - } - }, - { - "id": 2575, - "nodeType": "ErrorDefinition", - "src": "3185:26:9", - "nodes": [], - "errorSelector": "1e3b03c9", - "name": "B_PROOF_TOO_LARGE", - "nameLocation": "3191:17:9", - "parameters": { - "id": 2574, - "nodeType": "ParameterList", - "parameters": [], - "src": "3208:2:9" - } - }, - { - "id": 2577, - "nodeType": "ErrorDefinition", - "src": "3216:23:9", - "nodes": [], - "errorSelector": "161e3ead", - "name": "B_RETRY_FAILED", - "nameLocation": "3222:14:9", - "parameters": { - "id": 2576, - "nodeType": "ParameterList", - "parameters": [], - "src": "3236:2:9" - } - }, - { - "id": 2579, - "nodeType": "ErrorDefinition", - "src": "3244:30:9", - "nodes": [], - "errorSelector": "a2826398", - "name": "B_SIGNAL_NOT_RECEIVED", - "nameLocation": "3250:21:9", - "parameters": { - "id": 2578, - "nodeType": "ParameterList", - "parameters": [], - "src": "3271:2:9" - } - }, - { - "id": 2589, - "nodeType": "ModifierDefinition", - "src": "3440:89:9", - "nodes": [], - "body": { - "id": 2588, - "nodeType": "Block", - "src": "3476:53:9", - "nodes": [], - "statements": [ - { - "expression": { - "arguments": [ - { - "id": 2584, - "name": "_chainId", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2581, - "src": "3502:8:9", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - ], - "id": 2583, - "name": "_checkSameChain", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3990, - "src": "3486:15:9", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_uint64_$returns$__$", - "typeString": "function (uint64) view" - } - }, - "id": 2585, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "3486:25:9", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 2586, - "nodeType": "ExpressionStatement", - "src": "3486:25:9" - }, - { - "id": 2587, - "nodeType": "PlaceholderStatement", - "src": "3521:1:9" - } - ] - }, - "name": "sameChain", - "nameLocation": "3449:9:9", - "parameters": { - "id": 2582, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 2581, - "mutability": "mutable", - "name": "_chainId", - "nameLocation": "3466:8:9", - "nodeType": "VariableDeclaration", - "scope": 2589, - "src": "3459:15:9", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - }, - "typeName": { - "id": 2580, - "name": "uint64", - "nodeType": "ElementaryTypeName", - "src": "3459:6:9", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - }, - "visibility": "internal" - } - ], - "src": "3458:17:9" - }, - "virtual": false, - "visibility": "internal" - }, - { - "id": 2599, - "nodeType": "ModifierDefinition", - "src": "3535:89:9", - "nodes": [], - "body": { - "id": 2598, - "nodeType": "Block", - "src": "3571:53:9", - "nodes": [], - "statements": [ - { - "expression": { - "arguments": [ - { - "id": 2594, - "name": "_chainId", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2591, - "src": "3597:8:9", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - ], - "id": 2593, - "name": "_checkDiffChain", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4008, - "src": "3581:15:9", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_uint64_$returns$__$", - "typeString": "function (uint64) view" - } - }, - "id": 2595, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "3581:25:9", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 2596, - "nodeType": "ExpressionStatement", - "src": "3581:25:9" - }, - { - "id": 2597, - "nodeType": "PlaceholderStatement", - "src": "3616:1:9" - } - ] - }, - "name": "diffChain", - "nameLocation": "3544:9:9", - "parameters": { - "id": 2592, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 2591, - "mutability": "mutable", - "name": "_chainId", - "nameLocation": "3561:8:9", - "nodeType": "VariableDeclaration", - "scope": 2599, - "src": "3554:15:9", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - }, - "typeName": { - "id": 2590, - "name": "uint64", - "nodeType": "ElementaryTypeName", - "src": "3554:6:9", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - }, - "visibility": "internal" - } - ], - "src": "3553:17:9" - }, - "virtual": false, - "visibility": "internal" - }, - { - "id": 2616, - "nodeType": "FunctionDefinition", - "src": "3630:189:9", - "nodes": [], - "body": { - "id": 2615, - "nodeType": "Block", - "src": "3756:63:9", - "nodes": [], - "statements": [ - { - "expression": { - "id": 2613, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 2609, - "name": "signalService", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2530, - "src": "3766:13:9", - "typeDescriptions": { - "typeIdentifier": "t_contract$_ISignalService_$6277", - "typeString": "contract ISignalService" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "arguments": [ - { - "id": 2611, - "name": "_signalService", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2603, - "src": "3797:14:9", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": 2610, - "name": "ISignalService", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6277, - "src": "3782:14:9", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_ISignalService_$6277_$", - "typeString": "type(contract ISignalService)" - } - }, - "id": 2612, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "3782:30:9", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_contract$_ISignalService_$6277", - "typeString": "contract ISignalService" - } - }, - "src": "3766:46:9", - "typeDescriptions": { - "typeIdentifier": "t_contract$_ISignalService_$6277", - "typeString": "contract ISignalService" - } - }, - "id": 2614, - "nodeType": "ExpressionStatement", - "src": "3766:46:9" - } - ] - }, - "implemented": true, - "kind": "constructor", - "modifiers": [ - { - "arguments": [ - { - "id": 2606, - "name": "_resolver", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2601, - "src": "3741:9:9", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "id": 2607, - "kind": "baseConstructorSpecifier", - "modifierName": { - "id": 2605, - "name": "EssentialResolverContract", - "nameLocations": [ - "3715:25:9" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 5017, - "src": "3715:25:9" - }, - "nodeType": "ModifierInvocation", - "src": "3715:36:9" - } - ], - "name": "", - "nameLocation": "-1:-1:-1", - "parameters": { - "id": 2604, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 2601, - "mutability": "mutable", - "name": "_resolver", - "nameLocation": "3659:9:9", - "nodeType": "VariableDeclaration", - "scope": 2616, - "src": "3651:17:9", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 2600, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "3651:7:9", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 2603, - "mutability": "mutable", - "name": "_signalService", - "nameLocation": "3686:14:9", - "nodeType": "VariableDeclaration", - "scope": 2616, - "src": "3678:22:9", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 2602, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "3678:7:9", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - } - ], - "src": "3641:65:9" - }, - "returnParameters": { - "id": 2608, - "nodeType": "ParameterList", - "parameters": [], - "src": "3756:0:9" - }, - "scope": 4009, - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "public" - }, - { - "id": 2629, - "nodeType": "FunctionDefinition", - "src": "4142:92:9", - "nodes": [], - "body": { - "id": 2628, - "nodeType": "Block", - "src": "4193:41:9", - "nodes": [], - "statements": [ - { - "expression": { - "arguments": [ - { - "id": 2625, - "name": "_owner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2619, - "src": "4220:6:9", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": 2624, - "name": "__Essential_init", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4585, - "src": "4203:16:9", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", - "typeString": "function (address)" - } - }, - "id": 2626, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "4203:24:9", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 2627, - "nodeType": "ExpressionStatement", - "src": "4203:24:9" - } - ] - }, - "documentation": { - "id": 2617, - "nodeType": "StructuredDocumentation", - "src": "4003:134:9", - "text": "@notice Initializes the contract.\n @param _owner The owner of this contract. msg.sender will be used if this value is zero." - }, - "functionSelector": "19ab453c", - "implemented": true, - "kind": "function", - "modifiers": [ - { - "id": 2622, - "kind": "modifierInvocation", - "modifierName": { - "id": 2621, - "name": "initializer", - "nameLocations": [ - "4181:11:9" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 11650, - "src": "4181:11:9" - }, - "nodeType": "ModifierInvocation", - "src": "4181:11:9" - } - ], - "name": "init", - "nameLocation": "4151:4:9", - "parameters": { - "id": 2620, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 2619, - "mutability": "mutable", - "name": "_owner", - "nameLocation": "4164:6:9", - "nodeType": "VariableDeclaration", - "scope": 2629, - "src": "4156:14:9", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 2618, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "4156:7:9", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - } - ], - "src": "4155:16:9" - }, - "returnParameters": { - "id": 2623, - "nodeType": "ParameterList", - "parameters": [], - "src": "4193:0:9" - }, - "scope": 4009, - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "external" - }, - { - "id": 2651, - "nodeType": "FunctionDefinition", - "src": "4320:196:9", - "nodes": [], - "body": { - "id": 2650, - "nodeType": "Block", - "src": "4373:143:9", - "nodes": [], - "statements": [ - { - "expression": { - "id": 2640, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 2638, - "name": "__reserved1", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2533, - "src": "4444:11:9", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "hexValue": "30", - "id": 2639, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "4458:1:9", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "4444:15:9", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - }, - "id": 2641, - "nodeType": "ExpressionStatement", - "src": "4444:15:9" - }, - { - "expression": { - "id": 2644, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 2642, - "name": "__reserved2", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2548, - "src": "4469:11:9", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "hexValue": "30", - "id": 2643, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "4483:1:9", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "4469:15:9", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 2645, - "nodeType": "ExpressionStatement", - "src": "4469:15:9" - }, - { - "expression": { - "id": 2648, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 2646, - "name": "__reserved3", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2551, - "src": "4494:11:9", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "hexValue": "30", - "id": 2647, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "4508:1:9", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "4494:15:9", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 2649, - "nodeType": "ExpressionStatement", - "src": "4494:15:9" - } - ] - }, - "documentation": { - "id": 2630, - "nodeType": "StructuredDocumentation", - "src": "4240:75:9", - "text": "@notice This function shall be called by previously deployed contracts." - }, - "functionSelector": "069489a2", - "implemented": true, - "kind": "function", - "modifiers": [ - { - "id": 2633, - "kind": "modifierInvocation", - "modifierName": { - "id": 2632, - "name": "onlyOwner", - "nameLocations": [ - "4346:9:9" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 11366, - "src": "4346:9:9" - }, - "nodeType": "ModifierInvocation", - "src": "4346:9:9" - }, - { - "arguments": [ - { - "hexValue": "32", - "id": 2635, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "4370:1:9", - "typeDescriptions": { - "typeIdentifier": "t_rational_2_by_1", - "typeString": "int_const 2" - }, - "value": "2" - } - ], - "id": 2636, - "kind": "modifierInvocation", - "modifierName": { - "id": 2634, - "name": "reinitializer", - "nameLocations": [ - "4356:13:9" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 11683, - "src": "4356:13:9" - }, - "nodeType": "ModifierInvocation", - "src": "4356:16:9" - } - ], - "name": "init2", - "nameLocation": "4329:5:9", - "parameters": { - "id": 2631, - "nodeType": "ParameterList", - "parameters": [], - "src": "4334:2:9" - }, - "returnParameters": { - "id": 2637, - "nodeType": "ParameterList", - "parameters": [], - "src": "4373:0:9" - }, - "scope": 4009, - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "external" - }, - { - "id": 2779, - "nodeType": "FunctionDefinition", - "src": "4550:1319:9", - "nodes": [], - "body": { - "id": 2778, - "nodeType": "Block", - "src": "4907:962:9", - "nodes": [], - "statements": [ - { - "condition": { - "commonType": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - }, - "id": 2687, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "expression": { - "id": 2684, - "name": "_message", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2655, - "src": "4921:8:9", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Message_$4046_calldata_ptr", - "typeString": "struct IBridge.Message calldata" - } - }, - "id": 2685, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "4930:8:9", - "memberName": "gasLimit", - "nodeType": "MemberAccess", - "referencedDeclaration": 4029, - "src": "4921:17:9", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "hexValue": "30", - "id": 2686, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "4942:1:9", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "4921:22:9", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": { - "condition": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 2701, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "arguments": [ - { - "id": 2698, - "name": "_message", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2655, - "src": "5045:8:9", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Message_$4046_calldata_ptr", - "typeString": "struct IBridge.Message calldata" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_struct$_Message_$4046_calldata_ptr", - "typeString": "struct IBridge.Message calldata" - } - ], - "id": 2697, - "name": "_invocationGasLimit", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3933, - "src": "5025:19:9", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_struct$_Message_$4046_calldata_ptr_$returns$_t_uint256_$", - "typeString": "function (struct IBridge.Message calldata) pure returns (uint256)" - } - }, - "id": 2699, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "5025:29:9", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "hexValue": "30", - "id": 2700, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "5058:1:9", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "5025:34:9", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 2706, - "nodeType": "IfStatement", - "src": "5021:93:9", - "trueBody": { - "id": 2705, - "nodeType": "Block", - "src": "5061:53:9", - "statements": [ - { - "errorCall": { - "arguments": [], - "expression": { - "argumentTypes": [], - "id": 2702, - "name": "B_INVALID_GAS_LIMIT", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2563, - "src": "5082:19:9", - "typeDescriptions": { - "typeIdentifier": "t_function_error_pure$__$returns$_t_error_$", - "typeString": "function () pure returns (error)" - } - }, - "id": 2703, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "5082:21:9", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_error", - "typeString": "error" - } - }, - "id": 2704, - "nodeType": "RevertStatement", - "src": "5075:28:9" - } - ] - } - }, - "id": 2707, - "nodeType": "IfStatement", - "src": "4917:197:9", - "trueBody": { - "id": 2696, - "nodeType": "Block", - "src": "4945:70:9", - "statements": [ - { - "condition": { - "commonType": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - }, - "id": 2691, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "expression": { - "id": 2688, - "name": "_message", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2655, - "src": "4963:8:9", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Message_$4046_calldata_ptr", - "typeString": "struct IBridge.Message calldata" - } - }, - "id": 2689, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "4972:3:9", - "memberName": "fee", - "nodeType": "MemberAccess", - "referencedDeclaration": 4027, - "src": "4963:12:9", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "hexValue": "30", - "id": 2690, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "4979:1:9", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "4963:17:9", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 2695, - "nodeType": "IfStatement", - "src": "4959:45:9", - "trueBody": { - "errorCall": { - "arguments": [], - "expression": { - "argumentTypes": [], - "id": 2692, - "name": "B_INVALID_FEE", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2561, - "src": "4989:13:9", - "typeDescriptions": { - "typeIdentifier": "t_function_error_pure$__$returns$_t_error_$", - "typeString": "function () pure returns (error)" - } - }, - "id": 2693, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "4989:15:9", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_error", - "typeString": "error" - } - }, - "id": 2694, - "nodeType": "RevertStatement", - "src": "4982:22:9" - } - } - ] - } - }, - { - "assignments": [ - 2709, - null - ], - "declarations": [ - { - "constant": false, - "id": 2709, - "mutability": "mutable", - "name": "destChainEnabled", - "nameLocation": "5184:16:9", - "nodeType": "VariableDeclaration", - "scope": 2778, - "src": "5179:21:9", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 2708, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "5179:4:9", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "visibility": "internal" - }, - null - ], - "id": 2714, - "initialValue": { - "arguments": [ - { - "expression": { - "id": 2711, - "name": "_message", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2655, - "src": "5224:8:9", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Message_$4046_calldata_ptr", - "typeString": "struct IBridge.Message calldata" - } - }, - "id": 2712, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "5233:11:9", - "memberName": "destChainId", - "nodeType": "MemberAccess", - "referencedDeclaration": 4037, - "src": "5224:20:9", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - ], - "id": 2710, - "name": "isDestChainEnabled", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3503, - "src": "5205:18:9", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_uint64_$returns$_t_bool_$_t_address_$", - "typeString": "function (uint64) view returns (bool,address)" - } - }, - "id": 2713, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "5205:40:9", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$_t_bool_$_t_address_$", - "typeString": "tuple(bool,address)" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "5178:67:9" - }, - { - "condition": { - "id": 2716, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "!", - "prefix": true, - "src": "5297:17:9", - "subExpression": { - "id": 2715, - "name": "destChainEnabled", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2709, - "src": "5298:16:9", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 2720, - "nodeType": "IfStatement", - "src": "5293:49:9", - "trueBody": { - "errorCall": { - "arguments": [], - "expression": { - "argumentTypes": [], - "id": 2717, - "name": "B_INVALID_CHAINID", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2557, - "src": "5323:17:9", - "typeDescriptions": { - "typeIdentifier": "t_function_error_pure$__$returns$_t_error_$", - "typeString": "function () pure returns (error)" - } - }, - "id": 2718, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "5323:19:9", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_error", - "typeString": "error" - } - }, - "id": 2719, - "nodeType": "RevertStatement", - "src": "5316:26:9" - } - }, - { - "condition": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 2728, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 2725, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "expression": { - "id": 2721, - "name": "_message", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2655, - "src": "5419:8:9", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Message_$4046_calldata_ptr", - "typeString": "struct IBridge.Message calldata" - } - }, - "id": 2722, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "5428:5:9", - "memberName": "value", - "nodeType": "MemberAccess", - "referencedDeclaration": 4043, - "src": "5419:14:9", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "+", - "rightExpression": { - "expression": { - "id": 2723, - "name": "_message", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2655, - "src": "5436:8:9", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Message_$4046_calldata_ptr", - "typeString": "struct IBridge.Message calldata" - } - }, - "id": 2724, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "5445:3:9", - "memberName": "fee", - "nodeType": "MemberAccess", - "referencedDeclaration": 4027, - "src": "5436:12:9", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - }, - "src": "5419:29:9", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "expression": { - "id": 2726, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -15, - "src": "5452:3:9", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 2727, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "5456:5:9", - "memberName": "value", - "nodeType": "MemberAccess", - "src": "5452:9:9", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "5419:42:9", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 2732, - "nodeType": "IfStatement", - "src": "5415:72:9", - "trueBody": { - "errorCall": { - "arguments": [], - "expression": { - "argumentTypes": [], - "id": 2729, - "name": "B_INVALID_VALUE", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2567, - "src": "5470:15:9", - "typeDescriptions": { - "typeIdentifier": "t_function_error_pure$__$returns$_t_error_$", - "typeString": "function () pure returns (error)" - } - }, - "id": 2730, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "5470:17:9", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_error", - "typeString": "error" - } - }, - "id": 2731, - "nodeType": "RevertStatement", - "src": "5463:24:9" - } - }, - { - "expression": { - "id": 2735, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 2733, - "name": "message_", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2682, - "src": "5498:8:9", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Message_$4046_memory_ptr", - "typeString": "struct IBridge.Message memory" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "id": 2734, - "name": "_message", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2655, - "src": "5509:8:9", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Message_$4046_calldata_ptr", - "typeString": "struct IBridge.Message calldata" - } - }, - "src": "5498:19:9", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Message_$4046_memory_ptr", - "typeString": "struct IBridge.Message memory" - } - }, - "id": 2736, - "nodeType": "ExpressionStatement", - "src": "5498:19:9" - }, - { - "expression": { - "id": 2742, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "expression": { - "id": 2737, - "name": "message_", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2682, - "src": "5610:8:9", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Message_$4046_memory_ptr", - "typeString": "struct IBridge.Message memory" - } - }, - "id": 2739, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "memberLocation": "5619:2:9", - "memberName": "id", - "nodeType": "MemberAccess", - "referencedDeclaration": 4025, - "src": "5610:11:9", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "id": 2741, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "++", - "prefix": false, - "src": "5624:15:9", - "subExpression": { - "id": 2740, - "name": "nextMessageId", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2535, - "src": "5624:13:9", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - }, - "src": "5610:29:9", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - }, - "id": 2743, - "nodeType": "ExpressionStatement", - "src": "5610:29:9" - }, - { - "expression": { - "id": 2749, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "expression": { - "id": 2744, - "name": "message_", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2682, - "src": "5649:8:9", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Message_$4046_memory_ptr", - "typeString": "struct IBridge.Message memory" - } - }, - "id": 2746, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "memberLocation": "5658:4:9", - "memberName": "from", - "nodeType": "MemberAccess", - "referencedDeclaration": 4031, - "src": "5649:13:9", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "expression": { - "id": 2747, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -15, - "src": "5665:3:9", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 2748, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "5669:6:9", - "memberName": "sender", - "nodeType": "MemberAccess", - "src": "5665:10:9", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "5649:26:9", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 2750, - "nodeType": "ExpressionStatement", - "src": "5649:26:9" - }, - { - "expression": { - "id": 2759, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "expression": { - "id": 2751, - "name": "message_", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2682, - "src": "5685:8:9", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Message_$4046_memory_ptr", - "typeString": "struct IBridge.Message memory" - } - }, - "id": 2753, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "memberLocation": "5694:10:9", - "memberName": "srcChainId", - "nodeType": "MemberAccess", - "referencedDeclaration": 4033, - "src": "5685:19:9", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "arguments": [ - { - "expression": { - "id": 2756, - "name": "block", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -4, - "src": "5714:5:9", - "typeDescriptions": { - "typeIdentifier": "t_magic_block", - "typeString": "block" - } - }, - "id": 2757, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "5720:7:9", - "memberName": "chainid", - "nodeType": "MemberAccess", - "src": "5714:13:9", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 2755, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "5707:6:9", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_uint64_$", - "typeString": "type(uint64)" - }, - "typeName": { - "id": 2754, - "name": "uint64", - "nodeType": "ElementaryTypeName", - "src": "5707:6:9", - "typeDescriptions": {} - } - }, - "id": 2758, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "5707:21:9", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - }, - "src": "5685:43:9", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - }, - "id": 2760, - "nodeType": "ExpressionStatement", - "src": "5685:43:9" - }, - { - "expression": { - "id": 2765, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 2761, - "name": "msgHash_", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2679, - "src": "5739:8:9", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "arguments": [ - { - "id": 2763, - "name": "message_", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2682, - "src": "5762:8:9", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Message_$4046_memory_ptr", - "typeString": "struct IBridge.Message memory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_struct$_Message_$4046_memory_ptr", - "typeString": "struct IBridge.Message memory" - } - ], - "id": 2762, - "name": "hashMessage", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3551, - "src": "5750:11:9", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_struct$_Message_$4046_memory_ptr_$returns$_t_bytes32_$", - "typeString": "function (struct IBridge.Message memory) pure returns (bytes32)" - } - }, - "id": 2764, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "5750:21:9", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "src": "5739:32:9", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "id": 2766, - "nodeType": "ExpressionStatement", - "src": "5739:32:9" - }, - { - "eventCall": { - "arguments": [ - { - "id": 2768, - "name": "msgHash_", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2679, - "src": "5799:8:9", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "id": 2769, - "name": "message_", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2682, - "src": "5809:8:9", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Message_$4046_memory_ptr", - "typeString": "struct IBridge.Message memory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_struct$_Message_$4046_memory_ptr", - "typeString": "struct IBridge.Message memory" - } - ], - "id": 2767, - "name": "MessageSent", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4061, - "src": "5787:11:9", - "typeDescriptions": { - "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_struct$_Message_$4046_memory_ptr_$returns$__$", - "typeString": "function (bytes32,struct IBridge.Message memory)" - } - }, - "id": 2770, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "5787:31:9", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 2771, - "nodeType": "EmitStatement", - "src": "5782:36:9" - }, - { - "expression": { - "arguments": [ - { - "id": 2775, - "name": "msgHash_", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2679, - "src": "5853:8:9", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - ], - "expression": { - "id": 2772, - "name": "signalService", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2530, - "src": "5828:13:9", - "typeDescriptions": { - "typeIdentifier": "t_contract$_ISignalService_$6277", - "typeString": "contract ISignalService" - } - }, - "id": 2774, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "5842:10:9", - "memberName": "sendSignal", - "nodeType": "MemberAccess", - "referencedDeclaration": 6232, - "src": "5828:24:9", - "typeDescriptions": { - "typeIdentifier": "t_function_external_nonpayable$_t_bytes32_$returns$_t_bytes32_$", - "typeString": "function (bytes32) external returns (bytes32)" - } - }, - "id": 2776, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "5828:34:9", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "id": 2777, - "nodeType": "ExpressionStatement", - "src": "5828:34:9" - } - ] - }, - "baseFunctions": [ - 4081 - ], - "documentation": { - "id": 2652, - "nodeType": "StructuredDocumentation", - "src": "4522:23:9", - "text": "@inheritdoc IBridge" - }, - "functionSelector": "1bdb0037", - "implemented": true, - "kind": "function", - "modifiers": [ - { - "arguments": [ - { - "expression": { - "id": 2659, - "name": "_message", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2655, - "src": "4668:8:9", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Message_$4046_calldata_ptr", - "typeString": "struct IBridge.Message calldata" - } - }, - "id": 2660, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "4677:8:9", - "memberName": "srcOwner", - "nodeType": "MemberAccess", - "referencedDeclaration": 4035, - "src": "4668:17:9", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "id": 2661, - "kind": "modifierInvocation", - "modifierName": { - "id": 2658, - "name": "nonZeroAddr", - "nameLocations": [ - "4656:11:9" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 4409, - "src": "4656:11:9" - }, - "nodeType": "ModifierInvocation", - "src": "4656:30:9" - }, - { - "arguments": [ - { - "expression": { - "id": 2663, - "name": "_message", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2655, - "src": "4707:8:9", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Message_$4046_calldata_ptr", - "typeString": "struct IBridge.Message calldata" - } - }, - "id": 2664, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "4716:9:9", - "memberName": "destOwner", - "nodeType": "MemberAccess", - "referencedDeclaration": 4039, - "src": "4707:18:9", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "id": 2665, - "kind": "modifierInvocation", - "modifierName": { - "id": 2662, - "name": "nonZeroAddr", - "nameLocations": [ - "4695:11:9" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 4409, - "src": "4695:11:9" - }, - "nodeType": "ModifierInvocation", - "src": "4695:31:9" - }, - { - "arguments": [ - { - "expression": { - "id": 2667, - "name": "_message", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2655, - "src": "4747:8:9", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Message_$4046_calldata_ptr", - "typeString": "struct IBridge.Message calldata" - } - }, - "id": 2668, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "4756:2:9", - "memberName": "to", - "nodeType": "MemberAccess", - "referencedDeclaration": 4041, - "src": "4747:11:9", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "id": 2669, - "kind": "modifierInvocation", - "modifierName": { - "id": 2666, - "name": "nonZeroAddr", - "nameLocations": [ - "4735:11:9" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 4409, - "src": "4735:11:9" - }, - "nodeType": "ModifierInvocation", - "src": "4735:24:9" - }, - { - "arguments": [ - { - "expression": { - "id": 2671, - "name": "_message", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2655, - "src": "4778:8:9", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Message_$4046_calldata_ptr", - "typeString": "struct IBridge.Message calldata" - } - }, - "id": 2672, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "4787:11:9", - "memberName": "destChainId", - "nodeType": "MemberAccess", - "referencedDeclaration": 4037, - "src": "4778:20:9", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - } - ], - "id": 2673, - "kind": "modifierInvocation", - "modifierName": { - "id": 2670, - "name": "diffChain", - "nameLocations": [ - "4768:9:9" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 2599, - "src": "4768:9:9" - }, - "nodeType": "ModifierInvocation", - "src": "4768:31:9" - }, - { - "id": 2675, - "kind": "modifierInvocation", - "modifierName": { - "id": 2674, - "name": "whenNotPaused", - "nameLocations": [ - "4808:13:9" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 4398, - "src": "4808:13:9" - }, - "nodeType": "ModifierInvocation", - "src": "4808:13:9" - }, - { - "id": 2677, - "kind": "modifierInvocation", - "modifierName": { - "id": 2676, - "name": "nonReentrant", - "nameLocations": [ - "4830:12:9" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 4382, - "src": "4830:12:9" - }, - "nodeType": "ModifierInvocation", - "src": "4830:12:9" - } - ], - "name": "sendMessage", - "nameLocation": "4559:11:9", - "overrides": { - "id": 2657, - "nodeType": "OverrideSpecifier", - "overrides": [], - "src": "4639:8:9" - }, - "parameters": { - "id": 2656, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 2655, - "mutability": "mutable", - "name": "_message", - "nameLocation": "4588:8:9", - "nodeType": "VariableDeclaration", - "scope": 2779, - "src": "4571:25:9", - "stateVariable": false, - "storageLocation": "calldata", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Message_$4046_calldata_ptr", - "typeString": "struct IBridge.Message" - }, - "typeName": { - "id": 2654, - "nodeType": "UserDefinedTypeName", - "pathNode": { - "id": 2653, - "name": "Message", - "nameLocations": [ - "4571:7:9" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 4046, - "src": "4571:7:9" - }, - "referencedDeclaration": 4046, - "src": "4571:7:9", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Message_$4046_storage_ptr", - "typeString": "struct IBridge.Message" - } - }, - "visibility": "internal" - } - ], - "src": "4570:27:9" - }, - "returnParameters": { - "id": 2683, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 2679, - "mutability": "mutable", - "name": "msgHash_", - "nameLocation": "4868:8:9", - "nodeType": "VariableDeclaration", - "scope": 2779, - "src": "4860:16:9", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 2678, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "4860:7:9", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 2682, - "mutability": "mutable", - "name": "message_", - "nameLocation": "4893:8:9", - "nodeType": "VariableDeclaration", - "scope": 2779, - "src": "4878:23:9", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Message_$4046_memory_ptr", - "typeString": "struct IBridge.Message" - }, - "typeName": { - "id": 2681, - "nodeType": "UserDefinedTypeName", - "pathNode": { - "id": 2680, - "name": "Message", - "nameLocations": [ - "4878:7:9" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 4046, - "src": "4878:7:9" - }, - "referencedDeclaration": 4046, - "src": "4878:7:9", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Message_$4046_storage_ptr", - "typeString": "struct IBridge.Message" - } - }, - "visibility": "internal" - } - ], - "src": "4859:43:9" - }, - "scope": 4009, - "stateMutability": "payable", - "virtual": false, - "visibility": "external" - }, - { - "id": 2904, - "nodeType": "FunctionDefinition", - "src": "5903:1380:9", - "nodes": [], - "body": { - "id": 2903, - "nodeType": "Block", - "src": "6141:1142:9", - "nodes": [], - "statements": [ - { - "assignments": [ - 2801 - ], - "declarations": [ - { - "constant": false, - "id": 2801, - "mutability": "mutable", - "name": "msgHash", - "nameLocation": "6159:7:9", - "nodeType": "VariableDeclaration", - "scope": 2903, - "src": "6151:15:9", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 2800, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "6151:7:9", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "visibility": "internal" - } - ], - "id": 2805, - "initialValue": { - "arguments": [ - { - "id": 2803, - "name": "_message", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2783, - "src": "6181:8:9", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Message_$4046_calldata_ptr", - "typeString": "struct IBridge.Message calldata" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_struct$_Message_$4046_calldata_ptr", - "typeString": "struct IBridge.Message calldata" - } - ], - "id": 2802, - "name": "hashMessage", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3551, - "src": "6169:11:9", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_struct$_Message_$4046_memory_ptr_$returns$_t_bytes32_$", - "typeString": "function (struct IBridge.Message memory) pure returns (bytes32)" - } - }, - "id": 2804, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "6169:21:9", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "6151:39:9" - }, - { - "expression": { - "arguments": [ - { - "id": 2807, - "name": "msgHash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2801, - "src": "6213:7:9", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "expression": { - "id": 2808, - "name": "Status", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4018, - "src": "6222:6:9", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_enum$_Status_$4018_$", - "typeString": "type(enum IBridge.Status)" - } - }, - "id": 2809, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "memberLocation": "6229:3:9", - "memberName": "NEW", - "nodeType": "MemberAccess", - "referencedDeclaration": 4013, - "src": "6222:10:9", - "typeDescriptions": { - "typeIdentifier": "t_enum$_Status_$4018", - "typeString": "enum IBridge.Status" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_enum$_Status_$4018", - "typeString": "enum IBridge.Status" - } - ], - "id": 2806, - "name": "_checkStatus", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3844, - "src": "6200:12:9", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_enum$_Status_$4018_$returns$__$", - "typeString": "function (bytes32,enum IBridge.Status) view" - } - }, - "id": 2810, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "6200:33:9", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 2811, - "nodeType": "ExpressionStatement", - "src": "6200:33:9" - }, - { - "condition": { - "id": 2820, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "!", - "prefix": true, - "src": "6248:51:9", - "subExpression": { - "arguments": [ - { - "arguments": [ - { - "id": 2816, - "name": "this", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -28, - "src": "6284:4:9", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Bridge_$4009", - "typeString": "contract Bridge" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_contract$_Bridge_$4009", - "typeString": "contract Bridge" - } - ], - "id": 2815, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "6276:7:9", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_address_$", - "typeString": "type(address)" - }, - "typeName": { - "id": 2814, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "6276:7:9", - "typeDescriptions": {} - } - }, - "id": 2817, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "6276:13:9", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "id": 2818, - "name": "msgHash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2801, - "src": "6291:7:9", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - ], - "expression": { - "id": 2812, - "name": "signalService", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2530, - "src": "6249:13:9", - "typeDescriptions": { - "typeIdentifier": "t_contract$_ISignalService_$6277", - "typeString": "contract ISignalService" - } - }, - "id": 2813, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "6263:12:9", - "memberName": "isSignalSent", - "nodeType": "MemberAccess", - "referencedDeclaration": 6268, - "src": "6249:26:9", - "typeDescriptions": { - "typeIdentifier": "t_function_external_view$_t_address_$_t_bytes32_$returns$_t_bool_$", - "typeString": "function (address,bytes32) view external returns (bool)" - } - }, - "id": 2819, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "6249:50:9", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 2825, - "nodeType": "IfStatement", - "src": "6244:109:9", - "trueBody": { - "id": 2824, - "nodeType": "Block", - "src": "6301:52:9", - "statements": [ - { - "errorCall": { - "arguments": [], - "expression": { - "argumentTypes": [], - "id": 2821, - "name": "B_MESSAGE_NOT_SENT", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2571, - "src": "6322:18:9", - "typeDescriptions": { - "typeIdentifier": "t_function_error_pure$__$returns$_t_error_$", - "typeString": "function () pure returns (error)" - } - }, - "id": 2822, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "6322:20:9", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_error", - "typeString": "error" - } - }, - "id": 2823, - "nodeType": "RevertStatement", - "src": "6315:27:9" - } - ] - } - }, - { - "expression": { - "arguments": [ - { - "id": 2827, - "name": "signalService", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2530, - "src": "6397:13:9", - "typeDescriptions": { - "typeIdentifier": "t_contract$_ISignalService_$6277", - "typeString": "contract ISignalService" - } - }, - { - "arguments": [ - { - "id": 2829, - "name": "msgHash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2801, - "src": "6435:7:9", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - ], - "id": 2828, - "name": "signalForFailedMessage", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3571, - "src": "6412:22:9", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_bytes32_$", - "typeString": "function (bytes32) pure returns (bytes32)" - } - }, - "id": 2830, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "6412:31:9", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "expression": { - "id": 2831, - "name": "_message", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2783, - "src": "6445:8:9", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Message_$4046_calldata_ptr", - "typeString": "struct IBridge.Message calldata" - } - }, - "id": 2832, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "6454:11:9", - "memberName": "destChainId", - "nodeType": "MemberAccess", - "referencedDeclaration": 4037, - "src": "6445:20:9", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - }, - { - "id": 2833, - "name": "_proof", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2785, - "src": "6467:6:9", - "typeDescriptions": { - "typeIdentifier": "t_bytes_calldata_ptr", - "typeString": "bytes calldata" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_contract$_ISignalService_$6277", - "typeString": "contract ISignalService" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - }, - { - "typeIdentifier": "t_bytes_calldata_ptr", - "typeString": "bytes calldata" - } - ], - "id": 2826, - "name": "_proveSignalReceived", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3779, - "src": "6363:20:9", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_ISignalService_$6277_$_t_bytes32_$_t_uint64_$_t_bytes_calldata_ptr_$returns$_t_uint32_$", - "typeString": "function (contract ISignalService,bytes32,uint64,bytes calldata) returns (uint32)" - } - }, - "id": 2834, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "6363:120:9", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - "id": 2835, - "nodeType": "ExpressionStatement", - "src": "6363:120:9" - }, - { - "expression": { - "arguments": [ - { - "id": 2837, - "name": "msgHash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2801, - "src": "6515:7:9", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "expression": { - "id": 2838, - "name": "Status", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4018, - "src": "6524:6:9", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_enum$_Status_$4018_$", - "typeString": "type(enum IBridge.Status)" - } - }, - "id": 2839, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "memberLocation": "6531:8:9", - "memberName": "RECALLED", - "nodeType": "MemberAccess", - "referencedDeclaration": 4017, - "src": "6524:15:9", - "typeDescriptions": { - "typeIdentifier": "t_enum$_Status_$4018", - "typeString": "enum IBridge.Status" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_enum$_Status_$4018", - "typeString": "enum IBridge.Status" - } - ], - "id": 2836, - "name": "_updateMessageStatus", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3714, - "src": "6494:20:9", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_enum$_Status_$4018_$returns$__$", - "typeString": "function (bytes32,enum IBridge.Status)" - } - }, - "id": 2840, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "6494:46:9", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 2841, - "nodeType": "ExpressionStatement", - "src": "6494:46:9" - }, - { - "condition": { - "arguments": [ - { - "expression": { - "arguments": [ - { - "id": 2846, - "name": "IRecallableSender", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4164, - "src": "6707:17:9", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_IRecallableSender_$4164_$", - "typeString": "type(contract IRecallableSender)" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_type$_t_contract$_IRecallableSender_$4164_$", - "typeString": "type(contract IRecallableSender)" - } - ], - "id": 2845, - "name": "type", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -27, - "src": "6702:4:9", - "typeDescriptions": { - "typeIdentifier": "t_function_metatype_pure$__$returns$__$", - "typeString": "function () pure" - } - }, - "id": 2847, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "6702:23:9", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_magic_meta_type_t_contract$_IRecallableSender_$4164", - "typeString": "type(contract IRecallableSender)" - } - }, - "id": 2848, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "memberLocation": "6726:11:9", - "memberName": "interfaceId", - "nodeType": "MemberAccess", - "src": "6702:35:9", - "typeDescriptions": { - "typeIdentifier": "t_bytes4", - "typeString": "bytes4" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes4", - "typeString": "bytes4" - } - ], - "expression": { - "expression": { - "id": 2842, - "name": "_message", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2783, - "src": "6670:8:9", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Message_$4046_calldata_ptr", - "typeString": "struct IBridge.Message calldata" - } - }, - "id": 2843, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "6679:4:9", - "memberName": "from", - "nodeType": "MemberAccess", - "referencedDeclaration": 4031, - "src": "6670:13:9", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 2844, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "6684:17:9", - "memberName": "supportsInterface", - "nodeType": "MemberAccess", - "referencedDeclaration": 5554, - "src": "6670:31:9", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_address_$_t_bytes4_$returns$_t_bool_$attached_to$_t_address_$", - "typeString": "function (address,bytes4) view returns (bool)" - } - }, - "id": 2849, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "6670:68:9", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": { - "id": 2901, - "nodeType": "Block", - "src": "7177:100:9", - "statements": [ - { - "expression": { - "arguments": [ - { - "expression": { - "id": 2896, - "name": "_message", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2783, - "src": "7228:8:9", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Message_$4046_calldata_ptr", - "typeString": "struct IBridge.Message calldata" - } - }, - "id": 2897, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "7237:5:9", - "memberName": "value", - "nodeType": "MemberAccess", - "referencedDeclaration": 4043, - "src": "7228:14:9", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "id": 2898, - "name": "_SEND_ETHER_GAS_LIMIT", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2519, - "src": "7244:21:9", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "expression": { - "expression": { - "id": 2891, - "name": "_message", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2783, - "src": "7191:8:9", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Message_$4046_calldata_ptr", - "typeString": "struct IBridge.Message calldata" - } - }, - "id": 2894, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "7200:8:9", - "memberName": "srcOwner", - "nodeType": "MemberAccess", - "referencedDeclaration": 4035, - "src": "7191:17:9", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 2895, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "7209:18:9", - "memberName": "sendEtherAndVerify", - "nodeType": "MemberAccess", - "referencedDeclaration": 5495, - "src": "7191:36:9", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_uint256_$returns$__$attached_to$_t_address_$", - "typeString": "function (address,uint256,uint256)" - } - }, - "id": 2899, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "7191:75:9", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 2900, - "nodeType": "ExpressionStatement", - "src": "7191:75:9" - } - ] - }, - "id": 2902, - "nodeType": "IfStatement", - "src": "6666:611:9", - "trueBody": { - "id": 2890, - "nodeType": "Block", - "src": "6740:431:9", - "statements": [ - { - "expression": { - "arguments": [ - { - "id": 2851, - "name": "msgHash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2801, - "src": "6768:7:9", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "arguments": [ - { - "id": 2854, - "name": "this", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -28, - "src": "6785:4:9", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Bridge_$4009", - "typeString": "contract Bridge" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_contract$_Bridge_$4009", - "typeString": "contract Bridge" - } - ], - "id": 2853, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "6777:7:9", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_address_$", - "typeString": "type(address)" - }, - "typeName": { - "id": 2852, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "6777:7:9", - "typeDescriptions": {} - } - }, - "id": 2855, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "6777:13:9", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "expression": { - "id": 2856, - "name": "_message", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2783, - "src": "6792:8:9", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Message_$4046_calldata_ptr", - "typeString": "struct IBridge.Message calldata" - } - }, - "id": 2857, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "6801:10:9", - "memberName": "srcChainId", - "nodeType": "MemberAccess", - "referencedDeclaration": 4033, - "src": "6792:19:9", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - ], - "id": 2850, - "name": "_storeContext", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3733, - "src": "6754:13:9", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$_t_uint64_$returns$__$", - "typeString": "function (bytes32,address,uint64)" - } - }, - "id": 2858, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "6754:58:9", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 2859, - "nodeType": "ExpressionStatement", - "src": "6754:58:9" - }, - { - "expression": { - "arguments": [ - { - "id": 2868, - "name": "_message", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2783, - "src": "6946:8:9", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Message_$4046_calldata_ptr", - "typeString": "struct IBridge.Message calldata" - } - }, - { - "id": 2869, - "name": "msgHash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2801, - "src": "6956:7:9", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_struct$_Message_$4046_calldata_ptr", - "typeString": "struct IBridge.Message calldata" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_struct$_Message_$4046_calldata_ptr", - "typeString": "struct IBridge.Message calldata" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - ], - "expression": { - "arguments": [ - { - "expression": { - "id": 2861, - "name": "_message", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2783, - "src": "6875:8:9", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Message_$4046_calldata_ptr", - "typeString": "struct IBridge.Message calldata" - } - }, - "id": 2862, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "6884:4:9", - "memberName": "from", - "nodeType": "MemberAccess", - "referencedDeclaration": 4031, - "src": "6875:13:9", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": 2860, - "name": "IRecallableSender", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4164, - "src": "6857:17:9", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_IRecallableSender_$4164_$", - "typeString": "type(contract IRecallableSender)" - } - }, - "id": 2863, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "6857:32:9", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_contract$_IRecallableSender_$4164", - "typeString": "contract IRecallableSender" - } - }, - "id": 2864, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "6903:17:9", - "memberName": "onMessageRecalled", - "nodeType": "MemberAccess", - "referencedDeclaration": 4163, - "src": "6857:63:9", - "typeDescriptions": { - "typeIdentifier": "t_function_external_payable$_t_struct$_Message_$4046_memory_ptr_$_t_bytes32_$returns$__$", - "typeString": "function (struct IBridge.Message memory,bytes32) payable external" - } - }, - "id": 2867, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "names": [ - "value" - ], - "nodeType": "FunctionCallOptions", - "options": [ - { - "expression": { - "id": 2865, - "name": "_message", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2783, - "src": "6929:8:9", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Message_$4046_calldata_ptr", - "typeString": "struct IBridge.Message calldata" - } - }, - "id": 2866, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "6938:5:9", - "memberName": "value", - "nodeType": "MemberAccess", - "referencedDeclaration": 4043, - "src": "6929:14:9", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "src": "6857:88:9", - "typeDescriptions": { - "typeIdentifier": "t_function_external_payable$_t_struct$_Message_$4046_memory_ptr_$_t_bytes32_$returns$__$value", - "typeString": "function (struct IBridge.Message memory,bytes32) payable external" - } - }, - "id": 2870, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "6857:107:9", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 2871, - "nodeType": "ExpressionStatement", - "src": "6857:107:9" - }, - { - "expression": { - "arguments": [ - { - "arguments": [ - { - "id": 2875, - "name": "_PLACEHOLDER", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2527, - "src": "7079:12:9", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 2874, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "7071:7:9", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_bytes32_$", - "typeString": "type(bytes32)" - }, - "typeName": { - "id": 2873, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "7071:7:9", - "typeDescriptions": {} - } - }, - "id": 2876, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "typeConversion", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "7071:21:9", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "arguments": [ - { - "arguments": [ - { - "id": 2881, - "name": "_PLACEHOLDER", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2527, - "src": "7110:12:9", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 2880, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "7102:7:9", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_uint160_$", - "typeString": "type(uint160)" - }, - "typeName": { - "id": 2879, - "name": "uint160", - "nodeType": "ElementaryTypeName", - "src": "7102:7:9", - "typeDescriptions": {} - } - }, - "id": 2882, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "typeConversion", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "7102:21:9", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - ], - "id": 2878, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "7094:7:9", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_address_$", - "typeString": "type(address)" - }, - "typeName": { - "id": 2877, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "7094:7:9", - "typeDescriptions": {} - } - }, - "id": 2883, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "typeConversion", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "7094:30:9", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "arguments": [ - { - "id": 2886, - "name": "_PLACEHOLDER", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2527, - "src": "7133:12:9", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 2885, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "7126:6:9", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_uint64_$", - "typeString": "type(uint64)" - }, - "typeName": { - "id": 2884, - "name": "uint64", - "nodeType": "ElementaryTypeName", - "src": "7126:6:9", - "typeDescriptions": {} - } - }, - "id": 2887, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "typeConversion", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "7126:20:9", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - ], - "id": 2872, - "name": "_storeContext", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3733, - "src": "7040:13:9", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$_t_uint64_$returns$__$", - "typeString": "function (bytes32,address,uint64)" - } - }, - "id": 2888, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "7040:120:9", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 2889, - "nodeType": "ExpressionStatement", - "src": "7040:120:9" - } - ] - } - } - ] - }, - "baseFunctions": [ - 4090 - ], - "documentation": { - "id": 2780, - "nodeType": "StructuredDocumentation", - "src": "5875:23:9", - "text": "@inheritdoc IBridge" - }, - "functionSelector": "9efc7a2e", - "implemented": true, - "kind": "function", - "modifiers": [ - { - "arguments": [ - { - "expression": { - "id": 2788, - "name": "_message", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2783, - "src": "6033:8:9", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Message_$4046_calldata_ptr", - "typeString": "struct IBridge.Message calldata" - } - }, - "id": 2789, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "6042:10:9", - "memberName": "srcChainId", - "nodeType": "MemberAccess", - "referencedDeclaration": 4033, - "src": "6033:19:9", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - } - ], - "id": 2790, - "kind": "modifierInvocation", - "modifierName": { - "id": 2787, - "name": "sameChain", - "nameLocations": [ - "6023:9:9" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 2589, - "src": "6023:9:9" - }, - "nodeType": "ModifierInvocation", - "src": "6023:30:9" - }, - { - "arguments": [ - { - "expression": { - "id": 2792, - "name": "_message", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2783, - "src": "6072:8:9", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Message_$4046_calldata_ptr", - "typeString": "struct IBridge.Message calldata" - } - }, - "id": 2793, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "6081:11:9", - "memberName": "destChainId", - "nodeType": "MemberAccess", - "referencedDeclaration": 4037, - "src": "6072:20:9", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - } - ], - "id": 2794, - "kind": "modifierInvocation", - "modifierName": { - "id": 2791, - "name": "diffChain", - "nameLocations": [ - "6062:9:9" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 2599, - "src": "6062:9:9" - }, - "nodeType": "ModifierInvocation", - "src": "6062:31:9" - }, - { - "id": 2796, - "kind": "modifierInvocation", - "modifierName": { - "id": 2795, - "name": "whenNotPaused", - "nameLocations": [ - "6102:13:9" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 4398, - "src": "6102:13:9" - }, - "nodeType": "ModifierInvocation", - "src": "6102:13:9" - }, - { - "id": 2798, - "kind": "modifierInvocation", - "modifierName": { - "id": 2797, - "name": "nonReentrant", - "nameLocations": [ - "6124:12:9" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 4382, - "src": "6124:12:9" - }, - "nodeType": "ModifierInvocation", - "src": "6124:12:9" - } - ], - "name": "recallMessage", - "nameLocation": "5912:13:9", - "parameters": { - "id": 2786, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 2783, - "mutability": "mutable", - "name": "_message", - "nameLocation": "5952:8:9", - "nodeType": "VariableDeclaration", - "scope": 2904, - "src": "5935:25:9", - "stateVariable": false, - "storageLocation": "calldata", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Message_$4046_calldata_ptr", - "typeString": "struct IBridge.Message" - }, - "typeName": { - "id": 2782, - "nodeType": "UserDefinedTypeName", - "pathNode": { - "id": 2781, - "name": "Message", - "nameLocations": [ - "5935:7:9" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 4046, - "src": "5935:7:9" - }, - "referencedDeclaration": 4046, - "src": "5935:7:9", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Message_$4046_storage_ptr", - "typeString": "struct IBridge.Message" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 2785, - "mutability": "mutable", - "name": "_proof", - "nameLocation": "5985:6:9", - "nodeType": "VariableDeclaration", - "scope": 2904, - "src": "5970:21:9", - "stateVariable": false, - "storageLocation": "calldata", - "typeDescriptions": { - "typeIdentifier": "t_bytes_calldata_ptr", - "typeString": "bytes" - }, - "typeName": { - "id": 2784, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "5970:5:9", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes" - } - }, - "visibility": "internal" - } - ], - "src": "5925:72:9" - }, - "returnParameters": { - "id": 2799, - "nodeType": "ParameterList", - "parameters": [], - "src": "6141:0:9" - }, - "scope": 4009, - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "external" - }, - { - "id": 3214, - "nodeType": "FunctionDefinition", - "src": "7586:4212:9", - "nodes": [], - "body": { - "id": 3213, - "nodeType": "Block", - "src": "7801:3997:9", - "nodes": [], - "statements": [ - { - "assignments": [ - 2924 - ], - "declarations": [ - { - "constant": false, - "id": 2924, - "mutability": "mutable", - "name": "gasStart", - "nameLocation": "7819:8:9", - "nodeType": "VariableDeclaration", - "scope": 3213, - "src": "7811:16:9", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 2923, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "7811:7:9", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "id": 2927, - "initialValue": { - "arguments": [], - "expression": { - "argumentTypes": [], - "id": 2925, - "name": "gasleft", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -7, - "src": "7830:7:9", - "typeDescriptions": { - "typeIdentifier": "t_function_gasleft_view$__$returns$_t_uint256_$", - "typeString": "function () view returns (uint256)" - } - }, - "id": 2926, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "7830:9:9", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "7811:28:9" - }, - { - "condition": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 2932, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "expression": { - "id": 2928, - "name": "_message", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2908, - "src": "7934:8:9", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Message_$4046_calldata_ptr", - "typeString": "struct IBridge.Message calldata" - } - }, - "id": 2929, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "7943:11:9", - "memberName": "destChainId", - "nodeType": "MemberAccess", - "referencedDeclaration": 4037, - "src": "7934:20:9", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "expression": { - "id": 2930, - "name": "block", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -4, - "src": "7958:5:9", - "typeDescriptions": { - "typeIdentifier": "t_magic_block", - "typeString": "block" - } - }, - "id": 2931, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "7964:7:9", - "memberName": "chainid", - "nodeType": "MemberAccess", - "src": "7958:13:9", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "7934:37:9", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 2936, - "nodeType": "IfStatement", - "src": "7930:69:9", - "trueBody": { - "errorCall": { - "arguments": [], - "expression": { - "argumentTypes": [], - "id": 2933, - "name": "B_INVALID_CHAINID", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2557, - "src": "7980:17:9", - "typeDescriptions": { - "typeIdentifier": "t_function_error_pure$__$returns$_t_error_$", - "typeString": "function () pure returns (error)" - } - }, - "id": 2934, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "7980:19:9", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_error", - "typeString": "error" - } - }, - "id": 2935, - "nodeType": "RevertStatement", - "src": "7973:26:9" - } - }, - { - "condition": { - "commonType": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "id": 2946, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "commonType": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - }, - "id": 2940, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "expression": { - "id": 2937, - "name": "_message", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2908, - "src": "8093:8:9", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Message_$4046_calldata_ptr", - "typeString": "struct IBridge.Message calldata" - } - }, - "id": 2938, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "8102:10:9", - "memberName": "srcChainId", - "nodeType": "MemberAccess", - "referencedDeclaration": 4033, - "src": "8093:19:9", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "hexValue": "30", - "id": 2939, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "8116:1:9", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "8093:24:9", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "BinaryOperation", - "operator": "||", - "rightExpression": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 2945, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "expression": { - "id": 2941, - "name": "_message", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2908, - "src": "8121:8:9", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Message_$4046_calldata_ptr", - "typeString": "struct IBridge.Message calldata" - } - }, - "id": 2942, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "8130:10:9", - "memberName": "srcChainId", - "nodeType": "MemberAccess", - "referencedDeclaration": 4033, - "src": "8121:19:9", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "expression": { - "id": 2943, - "name": "block", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -4, - "src": "8144:5:9", - "typeDescriptions": { - "typeIdentifier": "t_magic_block", - "typeString": "block" - } - }, - "id": 2944, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "8150:7:9", - "memberName": "chainid", - "nodeType": "MemberAccess", - "src": "8144:13:9", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "8121:36:9", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "src": "8093:64:9", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 2951, - "nodeType": "IfStatement", - "src": "8089:121:9", - "trueBody": { - "id": 2950, - "nodeType": "Block", - "src": "8159:51:9", - "statements": [ - { - "errorCall": { - "arguments": [], - "expression": { - "argumentTypes": [], - "id": 2947, - "name": "B_INVALID_CHAINID", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2557, - "src": "8180:17:9", - "typeDescriptions": { - "typeIdentifier": "t_function_error_pure$__$returns$_t_error_$", - "typeString": "function () pure returns (error)" - } - }, - "id": 2948, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "8180:19:9", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_error", - "typeString": "error" - } - }, - "id": 2949, - "nodeType": "RevertStatement", - "src": "8173:26:9" - } - ] - } - }, - { - "assignments": [ - 2954 - ], - "declarations": [ - { - "constant": false, - "id": 2954, - "mutability": "mutable", - "name": "stats", - "nameLocation": "8243:5:9", - "nodeType": "VariableDeclaration", - "scope": 3213, - "src": "8220:28:9", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_struct$_ProcessingStats_$2488_memory_ptr", - "typeString": "struct Bridge.ProcessingStats" - }, - "typeName": { - "id": 2953, - "nodeType": "UserDefinedTypeName", - "pathNode": { - "id": 2952, - "name": "ProcessingStats", - "nameLocations": [ - "8220:15:9" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 2488, - "src": "8220:15:9" - }, - "referencedDeclaration": 2488, - "src": "8220:15:9", - "typeDescriptions": { - "typeIdentifier": "t_struct$_ProcessingStats_$2488_storage_ptr", - "typeString": "struct Bridge.ProcessingStats" - } - }, - "visibility": "internal" - } - ], - "id": 2955, - "nodeType": "VariableDeclarationStatement", - "src": "8220:28:9" - }, - { - "expression": { - "id": 2964, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "expression": { - "id": 2956, - "name": "stats", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2954, - "src": "8258:5:9", - "typeDescriptions": { - "typeIdentifier": "t_struct$_ProcessingStats_$2488_memory_ptr", - "typeString": "struct Bridge.ProcessingStats memory" - } - }, - "id": 2958, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "memberLocation": "8264:18:9", - "memberName": "processedByRelayer", - "nodeType": "MemberAccess", - "referencedDeclaration": 2487, - "src": "8258:24:9", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 2963, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "expression": { - "id": 2959, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -15, - "src": "8285:3:9", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 2960, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "8289:6:9", - "memberName": "sender", - "nodeType": "MemberAccess", - "src": "8285:10:9", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "expression": { - "id": 2961, - "name": "_message", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2908, - "src": "8299:8:9", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Message_$4046_calldata_ptr", - "typeString": "struct IBridge.Message calldata" - } - }, - "id": 2962, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "8308:9:9", - "memberName": "destOwner", - "nodeType": "MemberAccess", - "referencedDeclaration": 4039, - "src": "8299:18:9", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "8285:32:9", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "src": "8258:59:9", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 2965, - "nodeType": "ExpressionStatement", - "src": "8258:59:9" - }, - { - "condition": { - "expression": { - "id": 2966, - "name": "stats", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2954, - "src": "8416:5:9", - "typeDescriptions": { - "typeIdentifier": "t_struct$_ProcessingStats_$2488_memory_ptr", - "typeString": "struct Bridge.ProcessingStats memory" - } - }, - "id": 2967, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberLocation": "8422:18:9", - "memberName": "processedByRelayer", - "nodeType": "MemberAccess", - "referencedDeclaration": 2487, - "src": "8416:24:9", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 2985, - "nodeType": "IfStatement", - "src": "8412:196:9", - "trueBody": { - "id": 2984, - "nodeType": "Block", - "src": "8442:166:9", - "statements": [ - { - "condition": { - "commonType": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - }, - "id": 2971, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "expression": { - "id": 2968, - "name": "_message", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2908, - "src": "8460:8:9", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Message_$4046_calldata_ptr", - "typeString": "struct IBridge.Message calldata" - } - }, - "id": 2969, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "8469:8:9", - "memberName": "gasLimit", - "nodeType": "MemberAccess", - "referencedDeclaration": 4029, - "src": "8460:17:9", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "hexValue": "30", - "id": 2970, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "8481:1:9", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "8460:22:9", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 2975, - "nodeType": "IfStatement", - "src": "8456:56:9", - "trueBody": { - "errorCall": { - "arguments": [], - "expression": { - "argumentTypes": [], - "id": 2972, - "name": "B_PERMISSION_DENIED", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2573, - "src": "8491:19:9", - "typeDescriptions": { - "typeIdentifier": "t_function_error_pure$__$returns$_t_error_$", - "typeString": "function () pure returns (error)" - } - }, - "id": 2973, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "8491:21:9", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_error", - "typeString": "error" - } - }, - "id": 2974, - "nodeType": "RevertStatement", - "src": "8484:28:9" - } - }, - { - "condition": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 2979, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "expression": { - "id": 2976, - "name": "_proof", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2910, - "src": "8530:6:9", - "typeDescriptions": { - "typeIdentifier": "t_bytes_calldata_ptr", - "typeString": "bytes calldata" - } - }, - "id": 2977, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "8537:6:9", - "memberName": "length", - "nodeType": "MemberAccess", - "src": "8530:13:9", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": ">", - "rightExpression": { - "id": 2978, - "name": "RELAYER_MAX_PROOF_BYTES", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2511, - "src": "8546:23:9", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "8530:39:9", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 2983, - "nodeType": "IfStatement", - "src": "8526:71:9", - "trueBody": { - "errorCall": { - "arguments": [], - "expression": { - "argumentTypes": [], - "id": 2980, - "name": "B_PROOF_TOO_LARGE", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2575, - "src": "8578:17:9", - "typeDescriptions": { - "typeIdentifier": "t_function_error_pure$__$returns$_t_error_$", - "typeString": "function () pure returns (error)" - } - }, - "id": 2981, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "8578:19:9", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_error", - "typeString": "error" - } - }, - "id": 2982, - "nodeType": "RevertStatement", - "src": "8571:26:9" - } - } - ] - } - }, - { - "assignments": [ - 2987 - ], - "declarations": [ - { - "constant": false, - "id": 2987, - "mutability": "mutable", - "name": "msgHash", - "nameLocation": "8626:7:9", - "nodeType": "VariableDeclaration", - "scope": 3213, - "src": "8618:15:9", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 2986, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "8618:7:9", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "visibility": "internal" - } - ], - "id": 2991, - "initialValue": { - "arguments": [ - { - "id": 2989, - "name": "_message", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2908, - "src": "8648:8:9", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Message_$4046_calldata_ptr", - "typeString": "struct IBridge.Message calldata" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_struct$_Message_$4046_calldata_ptr", - "typeString": "struct IBridge.Message calldata" - } - ], - "id": 2988, - "name": "hashMessage", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3551, - "src": "8636:11:9", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_struct$_Message_$4046_memory_ptr_$returns$_t_bytes32_$", - "typeString": "function (struct IBridge.Message memory) pure returns (bytes32)" - } - }, - "id": 2990, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "8636:21:9", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "8618:39:9" - }, - { - "expression": { - "arguments": [ - { - "id": 2993, - "name": "msgHash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2987, - "src": "8681:7:9", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "expression": { - "id": 2994, - "name": "Status", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4018, - "src": "8690:6:9", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_enum$_Status_$4018_$", - "typeString": "type(enum IBridge.Status)" - } - }, - "id": 2995, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "memberLocation": "8697:3:9", - "memberName": "NEW", - "nodeType": "MemberAccess", - "referencedDeclaration": 4013, - "src": "8690:10:9", - "typeDescriptions": { - "typeIdentifier": "t_enum$_Status_$4018", - "typeString": "enum IBridge.Status" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_enum$_Status_$4018", - "typeString": "enum IBridge.Status" - } - ], - "id": 2992, - "name": "_checkStatus", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3844, - "src": "8668:12:9", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_enum$_Status_$4018_$returns$__$", - "typeString": "function (bytes32,enum IBridge.Status) view" - } - }, - "id": 2996, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "8668:33:9", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 2997, - "nodeType": "ExpressionStatement", - "src": "8668:33:9" - }, - { - "expression": { - "id": 3006, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "expression": { - "id": 2998, - "name": "stats", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2954, - "src": "8712:5:9", - "typeDescriptions": { - "typeIdentifier": "t_struct$_ProcessingStats_$2488_memory_ptr", - "typeString": "struct Bridge.ProcessingStats memory" - } - }, - "id": 3000, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "memberLocation": "8718:9:9", - "memberName": "proofSize", - "nodeType": "MemberAccess", - "referencedDeclaration": 2483, - "src": "8712:15:9", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "arguments": [ - { - "expression": { - "id": 3003, - "name": "_proof", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2910, - "src": "8737:6:9", - "typeDescriptions": { - "typeIdentifier": "t_bytes_calldata_ptr", - "typeString": "bytes calldata" - } - }, - "id": 3004, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "8744:6:9", - "memberName": "length", - "nodeType": "MemberAccess", - "src": "8737:13:9", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 3002, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "8730:6:9", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_uint32_$", - "typeString": "type(uint32)" - }, - "typeName": { - "id": 3001, - "name": "uint32", - "nodeType": "ElementaryTypeName", - "src": "8730:6:9", - "typeDescriptions": {} - } - }, - "id": 3005, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "8730:21:9", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - "src": "8712:39:9", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - "id": 3007, - "nodeType": "ExpressionStatement", - "src": "8712:39:9" - }, - { - "expression": { - "id": 3018, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "expression": { - "id": 3008, - "name": "stats", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2954, - "src": "8761:5:9", - "typeDescriptions": { - "typeIdentifier": "t_struct$_ProcessingStats_$2488_memory_ptr", - "typeString": "struct Bridge.ProcessingStats memory" - } - }, - "id": 3010, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "memberLocation": "8767:11:9", - "memberName": "numCacheOps", - "nodeType": "MemberAccess", - "referencedDeclaration": 2485, - "src": "8761:17:9", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "arguments": [ - { - "id": 3012, - "name": "signalService", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2530, - "src": "8814:13:9", - "typeDescriptions": { - "typeIdentifier": "t_contract$_ISignalService_$6277", - "typeString": "contract ISignalService" - } - }, - { - "id": 3013, - "name": "msgHash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2987, - "src": "8829:7:9", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "expression": { - "id": 3014, - "name": "_message", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2908, - "src": "8838:8:9", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Message_$4046_calldata_ptr", - "typeString": "struct IBridge.Message calldata" - } - }, - "id": 3015, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "8847:10:9", - "memberName": "srcChainId", - "nodeType": "MemberAccess", - "referencedDeclaration": 4033, - "src": "8838:19:9", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - }, - { - "id": 3016, - "name": "_proof", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2910, - "src": "8859:6:9", - "typeDescriptions": { - "typeIdentifier": "t_bytes_calldata_ptr", - "typeString": "bytes calldata" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_contract$_ISignalService_$6277", - "typeString": "contract ISignalService" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - }, - { - "typeIdentifier": "t_bytes_calldata_ptr", - "typeString": "bytes calldata" - } - ], - "id": 3011, - "name": "_proveSignalReceived", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3779, - "src": "8793:20:9", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_ISignalService_$6277_$_t_bytes32_$_t_uint64_$_t_bytes_calldata_ptr_$returns$_t_uint32_$", - "typeString": "function (contract ISignalService,bytes32,uint64,bytes calldata) returns (uint32)" - } - }, - "id": 3017, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "8793:73:9", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - "src": "8761:105:9", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - "id": 3019, - "nodeType": "ExpressionStatement", - "src": "8761:105:9" - }, - { - "assignments": [ - 3021 - ], - "declarations": [ - { - "constant": false, - "id": 3021, - "mutability": "mutable", - "name": "refundAmount", - "nameLocation": "8885:12:9", - "nodeType": "VariableDeclaration", - "scope": 3213, - "src": "8877:20:9", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 3020, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "8877:7:9", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "id": 3022, - "nodeType": "VariableDeclarationStatement", - "src": "8877:20:9" - }, - { - "condition": { - "arguments": [ - { - "id": 3024, - "name": "_message", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2908, - "src": "8938:8:9", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Message_$4046_calldata_ptr", - "typeString": "struct IBridge.Message calldata" - } - }, - { - "id": 3025, - "name": "signalService", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2530, - "src": "8948:13:9", - "typeDescriptions": { - "typeIdentifier": "t_contract$_ISignalService_$6277", - "typeString": "contract ISignalService" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_struct$_Message_$4046_calldata_ptr", - "typeString": "struct IBridge.Message calldata" - }, - { - "typeIdentifier": "t_contract$_ISignalService_$6277", - "typeString": "contract ISignalService" - } - ], - "id": 3023, - "name": "_unableToInvokeMessageCall", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3907, - "src": "8911:26:9", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_struct$_Message_$4046_calldata_ptr_$_t_contract$_ISignalService_$6277_$returns$_t_bool_$", - "typeString": "function (struct IBridge.Message calldata,contract ISignalService) view returns (bool)" - } - }, - "id": 3026, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "8911:51:9", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": { - "id": 3084, - "nodeType": "Block", - "src": "9300:436:9", - "statements": [ - { - "assignments": [ - 3044 - ], - "declarations": [ - { - "constant": false, - "id": 3044, - "mutability": "mutable", - "name": "gasLimit", - "nameLocation": "9322:8:9", - "nodeType": "VariableDeclaration", - "scope": 3084, - "src": "9314:16:9", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 3043, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "9314:7:9", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "id": 3053, - "initialValue": { - "condition": { - "expression": { - "id": 3045, - "name": "stats", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2954, - "src": "9333:5:9", - "typeDescriptions": { - "typeIdentifier": "t_struct$_ProcessingStats_$2488_memory_ptr", - "typeString": "struct Bridge.ProcessingStats memory" - } - }, - "id": 3046, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberLocation": "9339:18:9", - "memberName": "processedByRelayer", - "nodeType": "MemberAccess", - "referencedDeclaration": 2487, - "src": "9333:24:9", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseExpression": { - "arguments": [], - "expression": { - "argumentTypes": [], - "id": 3050, - "name": "gasleft", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -7, - "src": "9392:7:9", - "typeDescriptions": { - "typeIdentifier": "t_function_gasleft_view$__$returns$_t_uint256_$", - "typeString": "function () view returns (uint256)" - } - }, - "id": 3051, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "9392:9:9", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 3052, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "Conditional", - "src": "9333:68:9", - "trueExpression": { - "arguments": [ - { - "id": 3048, - "name": "_message", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2908, - "src": "9380:8:9", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Message_$4046_calldata_ptr", - "typeString": "struct IBridge.Message calldata" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_struct$_Message_$4046_calldata_ptr", - "typeString": "struct IBridge.Message calldata" - } - ], - "id": 3047, - "name": "_invocationGasLimit", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3933, - "src": "9360:19:9", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_struct$_Message_$4046_calldata_ptr_$returns$_t_uint256_$", - "typeString": "function (struct IBridge.Message calldata) pure returns (uint256)" - } - }, - "id": 3049, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "9360:29:9", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "9314:87:9" - }, - { - "condition": { - "arguments": [ - { - "id": 3055, - "name": "_message", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2908, - "src": "9439:8:9", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Message_$4046_calldata_ptr", - "typeString": "struct IBridge.Message calldata" - } - }, - { - "id": 3056, - "name": "msgHash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2987, - "src": "9449:7:9", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "id": 3057, - "name": "gasLimit", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3044, - "src": "9458:8:9", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "expression": { - "id": 3058, - "name": "stats", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2954, - "src": "9468:5:9", - "typeDescriptions": { - "typeIdentifier": "t_struct$_ProcessingStats_$2488_memory_ptr", - "typeString": "struct Bridge.ProcessingStats memory" - } - }, - "id": 3059, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberLocation": "9474:18:9", - "memberName": "processedByRelayer", - "nodeType": "MemberAccess", - "referencedDeclaration": 2487, - "src": "9468:24:9", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_struct$_Message_$4046_calldata_ptr", - "typeString": "struct IBridge.Message calldata" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 3054, - "name": "_invokeMessageCall", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3684, - "src": "9420:18:9", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Message_$4046_calldata_ptr_$_t_bytes32_$_t_uint256_$_t_bool_$returns$_t_bool_$", - "typeString": "function (struct IBridge.Message calldata,bytes32,uint256,bool) returns (bool)" - } - }, - "id": 3060, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "9420:73:9", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": { - "id": 3082, - "nodeType": "Block", - "src": "9609:117:9", - "statements": [ - { - "expression": { - "id": 3075, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 3072, - "name": "status_", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2918, - "src": "9627:7:9", - "typeDescriptions": { - "typeIdentifier": "t_enum$_Status_$4018", - "typeString": "enum IBridge.Status" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "expression": { - "id": 3073, - "name": "Status", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4018, - "src": "9637:6:9", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_enum$_Status_$4018_$", - "typeString": "type(enum IBridge.Status)" - } - }, - "id": 3074, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "memberLocation": "9644:9:9", - "memberName": "RETRIABLE", - "nodeType": "MemberAccess", - "referencedDeclaration": 4014, - "src": "9637:16:9", - "typeDescriptions": { - "typeIdentifier": "t_enum$_Status_$4018", - "typeString": "enum IBridge.Status" - } - }, - "src": "9627:26:9", - "typeDescriptions": { - "typeIdentifier": "t_enum$_Status_$4018", - "typeString": "enum IBridge.Status" - } - }, - "id": 3076, - "nodeType": "ExpressionStatement", - "src": "9627:26:9" - }, - { - "expression": { - "id": 3080, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 3077, - "name": "reason_", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2921, - "src": "9671:7:9", - "typeDescriptions": { - "typeIdentifier": "t_enum$_StatusReason_$4023", - "typeString": "enum IBridge.StatusReason" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "expression": { - "id": 3078, - "name": "StatusReason", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4023, - "src": "9681:12:9", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_enum$_StatusReason_$4023_$", - "typeString": "type(enum IBridge.StatusReason)" - } - }, - "id": 3079, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "memberLocation": "9694:17:9", - "memberName": "INVOCATION_FAILED", - "nodeType": "MemberAccess", - "referencedDeclaration": 4021, - "src": "9681:30:9", - "typeDescriptions": { - "typeIdentifier": "t_enum$_StatusReason_$4023", - "typeString": "enum IBridge.StatusReason" - } - }, - "src": "9671:40:9", - "typeDescriptions": { - "typeIdentifier": "t_enum$_StatusReason_$4023", - "typeString": "enum IBridge.StatusReason" - } - }, - "id": 3081, - "nodeType": "ExpressionStatement", - "src": "9671:40:9" - } - ] - }, - "id": 3083, - "nodeType": "IfStatement", - "src": "9416:310:9", - "trueBody": { - "id": 3071, - "nodeType": "Block", - "src": "9495:108:9", - "statements": [ - { - "expression": { - "id": 3064, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 3061, - "name": "status_", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2918, - "src": "9513:7:9", - "typeDescriptions": { - "typeIdentifier": "t_enum$_Status_$4018", - "typeString": "enum IBridge.Status" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "expression": { - "id": 3062, - "name": "Status", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4018, - "src": "9523:6:9", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_enum$_Status_$4018_$", - "typeString": "type(enum IBridge.Status)" - } - }, - "id": 3063, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "memberLocation": "9530:4:9", - "memberName": "DONE", - "nodeType": "MemberAccess", - "referencedDeclaration": 4015, - "src": "9523:11:9", - "typeDescriptions": { - "typeIdentifier": "t_enum$_Status_$4018", - "typeString": "enum IBridge.Status" - } - }, - "src": "9513:21:9", - "typeDescriptions": { - "typeIdentifier": "t_enum$_Status_$4018", - "typeString": "enum IBridge.Status" - } - }, - "id": 3065, - "nodeType": "ExpressionStatement", - "src": "9513:21:9" - }, - { - "expression": { - "id": 3069, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 3066, - "name": "reason_", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2921, - "src": "9552:7:9", - "typeDescriptions": { - "typeIdentifier": "t_enum$_StatusReason_$4023", - "typeString": "enum IBridge.StatusReason" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "expression": { - "id": 3067, - "name": "StatusReason", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4023, - "src": "9562:12:9", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_enum$_StatusReason_$4023_$", - "typeString": "type(enum IBridge.StatusReason)" - } - }, - "id": 3068, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "memberLocation": "9575:13:9", - "memberName": "INVOCATION_OK", - "nodeType": "MemberAccess", - "referencedDeclaration": 4019, - "src": "9562:26:9", - "typeDescriptions": { - "typeIdentifier": "t_enum$_StatusReason_$4023", - "typeString": "enum IBridge.StatusReason" - } - }, - "src": "9552:36:9", - "typeDescriptions": { - "typeIdentifier": "t_enum$_StatusReason_$4023", - "typeString": "enum IBridge.StatusReason" - } - }, - "id": 3070, - "nodeType": "ExpressionStatement", - "src": "9552:36:9" - } - ] - } - } - ] - }, - "id": 3085, - "nodeType": "IfStatement", - "src": "8907:829:9", - "trueBody": { - "id": 3042, - "nodeType": "Block", - "src": "8964:330:9", - "statements": [ - { - "expression": { - "id": 3030, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 3027, - "name": "refundAmount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3021, - "src": "9161:12:9", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "expression": { - "id": 3028, - "name": "_message", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2908, - "src": "9176:8:9", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Message_$4046_calldata_ptr", - "typeString": "struct IBridge.Message calldata" - } - }, - "id": 3029, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "9185:5:9", - "memberName": "value", - "nodeType": "MemberAccess", - "referencedDeclaration": 4043, - "src": "9176:14:9", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "9161:29:9", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 3031, - "nodeType": "ExpressionStatement", - "src": "9161:29:9" - }, - { - "expression": { - "id": 3035, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 3032, - "name": "status_", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2918, - "src": "9204:7:9", - "typeDescriptions": { - "typeIdentifier": "t_enum$_Status_$4018", - "typeString": "enum IBridge.Status" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "expression": { - "id": 3033, - "name": "Status", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4018, - "src": "9214:6:9", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_enum$_Status_$4018_$", - "typeString": "type(enum IBridge.Status)" - } - }, - "id": 3034, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "memberLocation": "9221:4:9", - "memberName": "DONE", - "nodeType": "MemberAccess", - "referencedDeclaration": 4015, - "src": "9214:11:9", - "typeDescriptions": { - "typeIdentifier": "t_enum$_Status_$4018", - "typeString": "enum IBridge.Status" - } - }, - "src": "9204:21:9", - "typeDescriptions": { - "typeIdentifier": "t_enum$_Status_$4018", - "typeString": "enum IBridge.Status" - } - }, - "id": 3036, - "nodeType": "ExpressionStatement", - "src": "9204:21:9" - }, - { - "expression": { - "id": 3040, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 3037, - "name": "reason_", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2921, - "src": "9239:7:9", - "typeDescriptions": { - "typeIdentifier": "t_enum$_StatusReason_$4023", - "typeString": "enum IBridge.StatusReason" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "expression": { - "id": 3038, - "name": "StatusReason", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4023, - "src": "9249:12:9", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_enum$_StatusReason_$4023_$", - "typeString": "type(enum IBridge.StatusReason)" - } - }, - "id": 3039, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "memberLocation": "9262:21:9", - "memberName": "INVOCATION_PROHIBITED", - "nodeType": "MemberAccess", - "referencedDeclaration": 4020, - "src": "9249:34:9", - "typeDescriptions": { - "typeIdentifier": "t_enum$_StatusReason_$4023", - "typeString": "enum IBridge.StatusReason" - } - }, - "src": "9239:44:9", - "typeDescriptions": { - "typeIdentifier": "t_enum$_StatusReason_$4023", - "typeString": "enum IBridge.StatusReason" - } - }, - "id": 3041, - "nodeType": "ExpressionStatement", - "src": "9239:44:9" - } - ] - } - }, - { - "condition": { - "commonType": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - }, - "id": 3089, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "expression": { - "id": 3086, - "name": "_message", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2908, - "src": "9750:8:9", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Message_$4046_calldata_ptr", - "typeString": "struct IBridge.Message calldata" - } - }, - "id": 3087, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "9759:3:9", - "memberName": "fee", - "nodeType": "MemberAccess", - "referencedDeclaration": 4027, - "src": "9750:12:9", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "hexValue": "30", - "id": 3088, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "9766:1:9", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "9750:17:9", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 3192, - "nodeType": "IfStatement", - "src": "9746:1855:9", - "trueBody": { - "id": 3191, - "nodeType": "Block", - "src": "9769:1832:9", - "statements": [ - { - "expression": { - "id": 3093, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 3090, - "name": "refundAmount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3021, - "src": "9783:12:9", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "+=", - "rightHandSide": { - "expression": { - "id": 3091, - "name": "_message", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2908, - "src": "9799:8:9", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Message_$4046_calldata_ptr", - "typeString": "struct IBridge.Message calldata" - } - }, - "id": 3092, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "9808:3:9", - "memberName": "fee", - "nodeType": "MemberAccess", - "referencedDeclaration": 4027, - "src": "9799:12:9", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - }, - "src": "9783:28:9", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 3094, - "nodeType": "ExpressionStatement", - "src": "9783:28:9" - }, - { - "condition": { - "commonType": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "id": 3101, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "expression": { - "id": 3095, - "name": "stats", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2954, - "src": "9830:5:9", - "typeDescriptions": { - "typeIdentifier": "t_struct$_ProcessingStats_$2488_memory_ptr", - "typeString": "struct Bridge.ProcessingStats memory" - } - }, - "id": 3096, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberLocation": "9836:18:9", - "memberName": "processedByRelayer", - "nodeType": "MemberAccess", - "referencedDeclaration": 2487, - "src": "9830:24:9", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "BinaryOperation", - "operator": "&&", - "rightExpression": { - "commonType": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - }, - "id": 3100, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "expression": { - "id": 3097, - "name": "_message", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2908, - "src": "9858:8:9", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Message_$4046_calldata_ptr", - "typeString": "struct IBridge.Message calldata" - } - }, - "id": 3098, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "9867:8:9", - "memberName": "gasLimit", - "nodeType": "MemberAccess", - "referencedDeclaration": 4029, - "src": "9858:17:9", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "hexValue": "30", - "id": 3099, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "9879:1:9", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "9858:22:9", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "src": "9830:50:9", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 3190, - "nodeType": "IfStatement", - "src": "9826:1765:9", - "trueBody": { - "id": 3189, - "nodeType": "Block", - "src": "9882:1709:9", - "statements": [ - { - "id": 3188, - "nodeType": "UncheckedBlock", - "src": "9900:1677:9", - "statements": [ - { - "assignments": [ - 3103 - ], - "declarations": [ - { - "constant": false, - "id": 3103, - "mutability": "mutable", - "name": "refund", - "nameLocation": "10607:6:9", - "nodeType": "VariableDeclaration", - "scope": 3188, - "src": "10599:14:9", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 3102, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "10599:7:9", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "id": 3108, - "initialValue": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 3107, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "expression": { - "id": 3104, - "name": "stats", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2954, - "src": "10616:5:9", - "typeDescriptions": { - "typeIdentifier": "t_struct$_ProcessingStats_$2488_memory_ptr", - "typeString": "struct Bridge.ProcessingStats memory" - } - }, - "id": 3105, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberLocation": "10622:11:9", - "memberName": "numCacheOps", - "nodeType": "MemberAccess", - "referencedDeclaration": 2485, - "src": "10616:17:9", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - "nodeType": "BinaryOperation", - "operator": "*", - "rightExpression": { - "id": 3106, - "name": "_GAS_REFUND_PER_CACHE_OPERATION", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2515, - "src": "10636:31:9", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "10616:51:9", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "10599:68:9" - }, - { - "expression": { - "id": 3127, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "expression": { - "id": 3109, - "name": "stats", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2954, - "src": "10881:5:9", - "typeDescriptions": { - "typeIdentifier": "t_struct$_ProcessingStats_$2488_memory_ptr", - "typeString": "struct Bridge.ProcessingStats memory" - } - }, - "id": 3111, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "memberLocation": "10887:16:9", - "memberName": "gasUsedInFeeCalc", - "nodeType": "MemberAccess", - "referencedDeclaration": 2481, - "src": "10881:22:9", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "arguments": [ - { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 3125, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 3122, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 3116, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 3114, - "name": "GAS_OVERHEAD", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2507, - "src": "10938:12:9", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - "nodeType": "BinaryOperation", - "operator": "+", - "rightExpression": { - "id": 3115, - "name": "gasStart", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2924, - "src": "10953:8:9", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "10938:23:9", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "+", - "rightExpression": { - "arguments": [ - { - "expression": { - "expression": { - "id": 3118, - "name": "_message", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2908, - "src": "10985:8:9", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Message_$4046_calldata_ptr", - "typeString": "struct IBridge.Message calldata" - } - }, - "id": 3119, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "10994:4:9", - "memberName": "data", - "nodeType": "MemberAccess", - "referencedDeclaration": 4045, - "src": "10985:13:9", - "typeDescriptions": { - "typeIdentifier": "t_bytes_calldata_ptr", - "typeString": "bytes calldata" - } - }, - "id": 3120, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "10999:6:9", - "memberName": "length", - "nodeType": "MemberAccess", - "src": "10985:20:9", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 3117, - "name": "_messageCalldataCost", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3959, - "src": "10964:20:9", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint32_$", - "typeString": "function (uint256) pure returns (uint32)" - } - }, - "id": 3121, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "10964:42:9", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - "src": "10938:68:9", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "-", - "rightExpression": { - "arguments": [], - "expression": { - "argumentTypes": [], - "id": 3123, - "name": "gasleft", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -7, - "src": "11037:7:9", - "typeDescriptions": { - "typeIdentifier": "t_function_gasleft_view$__$returns$_t_uint256_$", - "typeString": "function () view returns (uint256)" - } - }, - "id": 3124, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "11037:9:9", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "10938:108:9", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 3113, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "10906:6:9", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_uint32_$", - "typeString": "type(uint32)" - }, - "typeName": { - "id": 3112, - "name": "uint32", - "nodeType": "ElementaryTypeName", - "src": "10906:6:9", - "typeDescriptions": {} - } - }, - "id": 3126, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "10906:162:9", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - "src": "10881:187:9", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - "id": 3128, - "nodeType": "ExpressionStatement", - "src": "10881:187:9" - }, - { - "assignments": [ - 3130 - ], - "declarations": [ - { - "constant": false, - "id": 3130, - "mutability": "mutable", - "name": "gasCharged", - "nameLocation": "11099:10:9", - "nodeType": "VariableDeclaration", - "scope": 3188, - "src": "11091:18:9", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 3129, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "11091:7:9", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "id": 3138, - "initialValue": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 3137, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "arguments": [ - { - "expression": { - "id": 3133, - "name": "stats", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2954, - "src": "11123:5:9", - "typeDescriptions": { - "typeIdentifier": "t_struct$_ProcessingStats_$2488_memory_ptr", - "typeString": "struct Bridge.ProcessingStats memory" - } - }, - "id": 3134, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberLocation": "11129:16:9", - "memberName": "gasUsedInFeeCalc", - "nodeType": "MemberAccess", - "referencedDeclaration": 2481, - "src": "11123:22:9", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - ], - "expression": { - "id": 3131, - "name": "refund", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3103, - "src": "11112:6:9", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 3132, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "11119:3:9", - "memberName": "max", - "nodeType": "MemberAccess", - "referencedDeclaration": 5766, - "src": "11112:10:9", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$attached_to$_t_uint256_$", - "typeString": "function (uint256,uint256) pure returns (uint256)" - } - }, - "id": 3135, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "11112:34:9", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "-", - "rightExpression": { - "id": 3136, - "name": "refund", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3103, - "src": "11149:6:9", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "11112:43:9", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "11091:64:9" - }, - { - "assignments": [ - 3140 - ], - "declarations": [ - { - "constant": false, - "id": 3140, - "mutability": "mutable", - "name": "maxFee", - "nameLocation": "11185:6:9", - "nodeType": "VariableDeclaration", - "scope": 3188, - "src": "11177:14:9", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 3139, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "11177:7:9", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "id": 3148, - "initialValue": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 3147, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 3144, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 3141, - "name": "gasCharged", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3130, - "src": "11194:10:9", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "*", - "rightExpression": { - "expression": { - "id": 3142, - "name": "_message", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2908, - "src": "11207:8:9", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Message_$4046_calldata_ptr", - "typeString": "struct IBridge.Message calldata" - } - }, - "id": 3143, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "11216:3:9", - "memberName": "fee", - "nodeType": "MemberAccess", - "referencedDeclaration": 4027, - "src": "11207:12:9", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - }, - "src": "11194:25:9", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "/", - "rightExpression": { - "expression": { - "id": 3145, - "name": "_message", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2908, - "src": "11222:8:9", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Message_$4046_calldata_ptr", - "typeString": "struct IBridge.Message calldata" - } - }, - "id": 3146, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "11231:8:9", - "memberName": "gasLimit", - "nodeType": "MemberAccess", - "referencedDeclaration": 4029, - "src": "11222:17:9", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - "src": "11194:45:9", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "11177:62:9" - }, - { - "assignments": [ - 3150 - ], - "declarations": [ - { - "constant": false, - "id": 3150, - "mutability": "mutable", - "name": "baseFee", - "nameLocation": "11269:7:9", - "nodeType": "VariableDeclaration", - "scope": 3188, - "src": "11261:15:9", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 3149, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "11261:7:9", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "id": 3155, - "initialValue": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 3154, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 3151, - "name": "gasCharged", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3130, - "src": "11279:10:9", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "*", - "rightExpression": { - "expression": { - "id": 3152, - "name": "block", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -4, - "src": "11292:5:9", - "typeDescriptions": { - "typeIdentifier": "t_magic_block", - "typeString": "block" - } - }, - "id": 3153, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "11298:7:9", - "memberName": "basefee", - "nodeType": "MemberAccess", - "src": "11292:13:9", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "11279:26:9", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "11261:44:9" - }, - { - "assignments": [ - 3157 - ], - "declarations": [ - { - "constant": false, - "id": 3157, - "mutability": "mutable", - "name": "fee", - "nameLocation": "11335:3:9", - "nodeType": "VariableDeclaration", - "scope": 3188, - "src": "11327:11:9", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 3156, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "11327:7:9", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "id": 3174, - "initialValue": { - "arguments": [ - { - "expression": { - "id": 3171, - "name": "_message", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2908, - "src": "11424:8:9", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Message_$4046_calldata_ptr", - "typeString": "struct IBridge.Message calldata" - } - }, - "id": 3172, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "11433:3:9", - "memberName": "fee", - "nodeType": "MemberAccess", - "referencedDeclaration": 4027, - "src": "11424:12:9", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - ], - "expression": { - "components": [ - { - "condition": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 3160, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 3158, - "name": "baseFee", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3150, - "src": "11366:7:9", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": ">=", - "rightExpression": { - "id": 3159, - "name": "maxFee", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3140, - "src": "11377:6:9", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "11366:17:9", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseExpression": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 3167, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "components": [ - { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 3164, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 3162, - "name": "maxFee", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3140, - "src": "11396:6:9", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "+", - "rightExpression": { - "id": 3163, - "name": "baseFee", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3150, - "src": "11405:7:9", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "11396:16:9", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "id": 3165, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "11395:18:9", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": ">>", - "rightExpression": { - "hexValue": "31", - "id": 3166, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "11417:1:9", - "typeDescriptions": { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - }, - "value": "1" - }, - "src": "11395:23:9", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 3168, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "Conditional", - "src": "11366:52:9", - "trueExpression": { - "id": 3161, - "name": "maxFee", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3140, - "src": "11386:6:9", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "id": 3169, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "11365:54:9", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 3170, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "11420:3:9", - "memberName": "min", - "nodeType": "MemberAccess", - "referencedDeclaration": 5748, - "src": "11365:58:9", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$attached_to$_t_uint256_$", - "typeString": "function (uint256,uint256) pure returns (uint256)" - } - }, - "id": 3173, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "11365:72:9", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "11327:110:9" - }, - { - "expression": { - "id": 3177, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 3175, - "name": "refundAmount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3021, - "src": "11460:12:9", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "-=", - "rightHandSide": { - "id": 3176, - "name": "fee", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3157, - "src": "11476:3:9", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "11460:19:9", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 3178, - "nodeType": "ExpressionStatement", - "src": "11460:19:9" - }, - { - "expression": { - "arguments": [ - { - "id": 3184, - "name": "fee", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3157, - "src": "11531:3:9", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "id": 3185, - "name": "_SEND_ETHER_GAS_LIMIT", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2519, - "src": "11536:21:9", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "expression": { - "expression": { - "id": 3179, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -15, - "src": "11501:3:9", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 3182, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "11505:6:9", - "memberName": "sender", - "nodeType": "MemberAccess", - "src": "11501:10:9", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 3183, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "11512:18:9", - "memberName": "sendEtherAndVerify", - "nodeType": "MemberAccess", - "referencedDeclaration": 5495, - "src": "11501:29:9", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_uint256_$returns$__$attached_to$_t_address_$", - "typeString": "function (address,uint256,uint256)" - } - }, - "id": 3186, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "11501:57:9", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 3187, - "nodeType": "ExpressionStatement", - "src": "11501:57:9" - } - ] - } - ] - } - } - ] - } - }, - { - "expression": { - "arguments": [ - { - "id": 3198, - "name": "refundAmount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3021, - "src": "11649:12:9", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "id": 3199, - "name": "_SEND_ETHER_GAS_LIMIT", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2519, - "src": "11663:21:9", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "expression": { - "expression": { - "id": 3193, - "name": "_message", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2908, - "src": "11611:8:9", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Message_$4046_calldata_ptr", - "typeString": "struct IBridge.Message calldata" - } - }, - "id": 3196, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "11620:9:9", - "memberName": "destOwner", - "nodeType": "MemberAccess", - "referencedDeclaration": 4039, - "src": "11611:18:9", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 3197, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "11630:18:9", - "memberName": "sendEtherAndVerify", - "nodeType": "MemberAccess", - "referencedDeclaration": 5495, - "src": "11611:37:9", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_uint256_$returns$__$attached_to$_t_address_$", - "typeString": "function (address,uint256,uint256)" - } - }, - "id": 3200, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "11611:74:9", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 3201, - "nodeType": "ExpressionStatement", - "src": "11611:74:9" - }, - { - "expression": { - "arguments": [ - { - "id": 3203, - "name": "msgHash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2987, - "src": "11717:7:9", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "id": 3204, - "name": "status_", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2918, - "src": "11726:7:9", - "typeDescriptions": { - "typeIdentifier": "t_enum$_Status_$4018", - "typeString": "enum IBridge.Status" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_enum$_Status_$4018", - "typeString": "enum IBridge.Status" - } - ], - "id": 3202, - "name": "_updateMessageStatus", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3714, - "src": "11696:20:9", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_enum$_Status_$4018_$returns$__$", - "typeString": "function (bytes32,enum IBridge.Status)" - } - }, - "id": 3205, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "11696:38:9", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 3206, - "nodeType": "ExpressionStatement", - "src": "11696:38:9" - }, - { - "eventCall": { - "arguments": [ - { - "id": 3208, - "name": "msgHash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2987, - "src": "11766:7:9", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "id": 3209, - "name": "_message", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2908, - "src": "11775:8:9", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Message_$4046_calldata_ptr", - "typeString": "struct IBridge.Message calldata" - } - }, - { - "id": 3210, - "name": "stats", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2954, - "src": "11785:5:9", - "typeDescriptions": { - "typeIdentifier": "t_struct$_ProcessingStats_$2488_memory_ptr", - "typeString": "struct Bridge.ProcessingStats memory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_struct$_Message_$4046_calldata_ptr", - "typeString": "struct IBridge.Message calldata" - }, - { - "typeIdentifier": "t_struct$_ProcessingStats_$2488_memory_ptr", - "typeString": "struct Bridge.ProcessingStats memory" - } - ], - "id": 3207, - "name": "MessageProcessed", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2499, - "src": "11749:16:9", - "typeDescriptions": { - "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_struct$_Message_$4046_memory_ptr_$_t_struct$_ProcessingStats_$2488_memory_ptr_$returns$__$", - "typeString": "function (bytes32,struct IBridge.Message memory,struct Bridge.ProcessingStats memory)" - } - }, - "id": 3211, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "11749:42:9", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 3212, - "nodeType": "EmitStatement", - "src": "11744:47:9" - } - ] - }, - "baseFunctions": [ - 4105 - ], - "documentation": { - "id": 2905, - "nodeType": "StructuredDocumentation", - "src": "7289:292:9", - "text": "@inheritdoc IBridge\n @dev To ensure successful execution, we recommend this transaction's gas limit not to be\n smaller than:\n `(message.gasLimit - GAS_RESERVE) * 64 / 63 + GAS_RESERVE`,\n Or we can use a simplified rule: `tx.gaslimit = message.gaslimit * 102%`." - }, - "functionSelector": "2035065e", - "implemented": true, - "kind": "function", - "modifiers": [ - { - "id": 2913, - "kind": "modifierInvocation", - "modifierName": { - "id": 2912, - "name": "whenNotPaused", - "nameLocations": [ - "7707:13:9" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 4398, - "src": "7707:13:9" - }, - "nodeType": "ModifierInvocation", - "src": "7707:13:9" - }, - { - "id": 2915, - "kind": "modifierInvocation", - "modifierName": { - "id": 2914, - "name": "nonReentrant", - "nameLocations": [ - "7729:12:9" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 4382, - "src": "7729:12:9" - }, - "nodeType": "ModifierInvocation", - "src": "7729:12:9" - } - ], - "name": "processMessage", - "nameLocation": "7595:14:9", - "parameters": { - "id": 2911, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 2908, - "mutability": "mutable", - "name": "_message", - "nameLocation": "7636:8:9", - "nodeType": "VariableDeclaration", - "scope": 3214, - "src": "7619:25:9", - "stateVariable": false, - "storageLocation": "calldata", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Message_$4046_calldata_ptr", - "typeString": "struct IBridge.Message" - }, - "typeName": { - "id": 2907, - "nodeType": "UserDefinedTypeName", - "pathNode": { - "id": 2906, - "name": "Message", - "nameLocations": [ - "7619:7:9" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 4046, - "src": "7619:7:9" - }, - "referencedDeclaration": 4046, - "src": "7619:7:9", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Message_$4046_storage_ptr", - "typeString": "struct IBridge.Message" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 2910, - "mutability": "mutable", - "name": "_proof", - "nameLocation": "7669:6:9", - "nodeType": "VariableDeclaration", - "scope": 3214, - "src": "7654:21:9", - "stateVariable": false, - "storageLocation": "calldata", - "typeDescriptions": { - "typeIdentifier": "t_bytes_calldata_ptr", - "typeString": "bytes" - }, - "typeName": { - "id": 2909, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "7654:5:9", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes" - } - }, - "visibility": "internal" - } - ], - "src": "7609:72:9" - }, - "returnParameters": { - "id": 2922, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 2918, - "mutability": "mutable", - "name": "status_", - "nameLocation": "7766:7:9", - "nodeType": "VariableDeclaration", - "scope": 3214, - "src": "7759:14:9", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_enum$_Status_$4018", - "typeString": "enum IBridge.Status" - }, - "typeName": { - "id": 2917, - "nodeType": "UserDefinedTypeName", - "pathNode": { - "id": 2916, - "name": "Status", - "nameLocations": [ - "7759:6:9" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 4018, - "src": "7759:6:9" - }, - "referencedDeclaration": 4018, - "src": "7759:6:9", - "typeDescriptions": { - "typeIdentifier": "t_enum$_Status_$4018", - "typeString": "enum IBridge.Status" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 2921, - "mutability": "mutable", - "name": "reason_", - "nameLocation": "7788:7:9", - "nodeType": "VariableDeclaration", - "scope": 3214, - "src": "7775:20:9", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_enum$_StatusReason_$4023", - "typeString": "enum IBridge.StatusReason" - }, - "typeName": { - "id": 2920, - "nodeType": "UserDefinedTypeName", - "pathNode": { - "id": 2919, - "name": "StatusReason", - "nameLocations": [ - "7775:12:9" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 4023, - "src": "7775:12:9" - }, - "referencedDeclaration": 4023, - "src": "7775:12:9", - "typeDescriptions": { - "typeIdentifier": "t_enum$_StatusReason_$4023", - "typeString": "enum IBridge.StatusReason" - } - }, - "visibility": "internal" - } - ], - "src": "7758:38:9" - }, - "scope": 4009, - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "external" - }, - { - "id": 3327, - "nodeType": "FunctionDefinition", - "src": "11832:1159:9", - "nodes": [], - "body": { - "id": 3326, - "nodeType": "Block", - "src": "12067:924:9", - "nodes": [], - "statements": [ - { - "assignments": [ - 3236 - ], - "declarations": [ - { - "constant": false, - "id": 3236, - "mutability": "mutable", - "name": "msgHash", - "nameLocation": "12085:7:9", - "nodeType": "VariableDeclaration", - "scope": 3326, - "src": "12077:15:9", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 3235, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "12077:7:9", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "visibility": "internal" - } - ], - "id": 3240, - "initialValue": { - "arguments": [ - { - "id": 3238, - "name": "_message", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3218, - "src": "12107:8:9", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Message_$4046_calldata_ptr", - "typeString": "struct IBridge.Message calldata" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_struct$_Message_$4046_calldata_ptr", - "typeString": "struct IBridge.Message calldata" - } - ], - "id": 3237, - "name": "hashMessage", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3551, - "src": "12095:11:9", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_struct$_Message_$4046_memory_ptr_$returns$_t_bytes32_$", - "typeString": "function (struct IBridge.Message memory) pure returns (bytes32)" - } - }, - "id": 3239, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "12095:21:9", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "12077:39:9" - }, - { - "expression": { - "arguments": [ - { - "id": 3242, - "name": "msgHash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3236, - "src": "12139:7:9", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "expression": { - "id": 3243, - "name": "Status", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4018, - "src": "12148:6:9", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_enum$_Status_$4018_$", - "typeString": "type(enum IBridge.Status)" - } - }, - "id": 3244, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "memberLocation": "12155:9:9", - "memberName": "RETRIABLE", - "nodeType": "MemberAccess", - "referencedDeclaration": 4014, - "src": "12148:16:9", - "typeDescriptions": { - "typeIdentifier": "t_enum$_Status_$4018", - "typeString": "enum IBridge.Status" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_enum$_Status_$4018", - "typeString": "enum IBridge.Status" - } - ], - "id": 3241, - "name": "_checkStatus", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3844, - "src": "12126:12:9", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_enum$_Status_$4018_$returns$__$", - "typeString": "function (bytes32,enum IBridge.Status) view" - } - }, - "id": 3245, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "12126:39:9", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 3246, - "nodeType": "ExpressionStatement", - "src": "12126:39:9" - }, - { - "assignments": [ - 3248 - ], - "declarations": [ - { - "constant": false, - "id": 3248, - "mutability": "mutable", - "name": "succeeded", - "nameLocation": "12181:9:9", - "nodeType": "VariableDeclaration", - "scope": 3326, - "src": "12176:14:9", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 3247, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "12176:4:9", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "visibility": "internal" - } - ], - "id": 3249, - "nodeType": "VariableDeclarationStatement", - "src": "12176:14:9" - }, - { - "condition": { - "arguments": [ - { - "id": 3251, - "name": "_message", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3218, - "src": "12231:8:9", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Message_$4046_calldata_ptr", - "typeString": "struct IBridge.Message calldata" - } - }, - { - "id": 3252, - "name": "signalService", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2530, - "src": "12241:13:9", - "typeDescriptions": { - "typeIdentifier": "t_contract$_ISignalService_$6277", - "typeString": "contract ISignalService" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_struct$_Message_$4046_calldata_ptr", - "typeString": "struct IBridge.Message calldata" - }, - { - "typeIdentifier": "t_contract$_ISignalService_$6277", - "typeString": "contract ISignalService" - } - ], - "id": 3250, - "name": "_unableToInvokeMessageCall", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3907, - "src": "12204:26:9", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_struct$_Message_$4046_calldata_ptr_$_t_contract$_ISignalService_$6277_$returns$_t_bool_$", - "typeString": "function (struct IBridge.Message calldata,contract ISignalService) view returns (bool)" - } - }, - "id": 3253, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "12204:51:9", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": { - "id": 3294, - "nodeType": "Block", - "src": "12371:301:9", - "statements": [ - { - "condition": { - "commonType": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "id": 3278, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "components": [ - { - "commonType": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "id": 3271, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "commonType": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - }, - "id": 3269, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "expression": { - "id": 3266, - "name": "_message", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3218, - "src": "12390:8:9", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Message_$4046_calldata_ptr", - "typeString": "struct IBridge.Message calldata" - } - }, - "id": 3267, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "12399:8:9", - "memberName": "gasLimit", - "nodeType": "MemberAccess", - "referencedDeclaration": 4029, - "src": "12390:17:9", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "hexValue": "30", - "id": 3268, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "12411:1:9", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "12390:22:9", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "BinaryOperation", - "operator": "||", - "rightExpression": { - "id": 3270, - "name": "_isLastAttempt", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3220, - "src": "12416:14:9", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "src": "12390:40:9", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "id": 3272, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "12389:42:9", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "BinaryOperation", - "operator": "&&", - "rightExpression": { - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 3277, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "expression": { - "id": 3273, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -15, - "src": "12435:3:9", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 3274, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "12439:6:9", - "memberName": "sender", - "nodeType": "MemberAccess", - "src": "12435:10:9", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "expression": { - "id": 3275, - "name": "_message", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3218, - "src": "12449:8:9", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Message_$4046_calldata_ptr", - "typeString": "struct IBridge.Message calldata" - } - }, - "id": 3276, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "12458:9:9", - "memberName": "destOwner", - "nodeType": "MemberAccess", - "referencedDeclaration": 4039, - "src": "12449:18:9", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "12435:32:9", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "src": "12389:78:9", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 3283, - "nodeType": "IfStatement", - "src": "12385:145:9", - "trueBody": { - "id": 3282, - "nodeType": "Block", - "src": "12469:61:9", - "statements": [ - { - "errorCall": { - "arguments": [], - "expression": { - "argumentTypes": [], - "id": 3279, - "name": "B_PERMISSION_DENIED", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2573, - "src": "12494:19:9", - "typeDescriptions": { - "typeIdentifier": "t_function_error_pure$__$returns$_t_error_$", - "typeString": "function () pure returns (error)" - } - }, - "id": 3280, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "12494:21:9", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_error", - "typeString": "error" - } - }, - "id": 3281, - "nodeType": "RevertStatement", - "src": "12487:28:9" - } - ] - } - }, - { - "expression": { - "id": 3292, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 3284, - "name": "succeeded", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3248, - "src": "12594:9:9", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "arguments": [ - { - "id": 3286, - "name": "_message", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3218, - "src": "12625:8:9", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Message_$4046_calldata_ptr", - "typeString": "struct IBridge.Message calldata" - } - }, - { - "id": 3287, - "name": "msgHash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3236, - "src": "12635:7:9", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "arguments": [], - "expression": { - "argumentTypes": [], - "id": 3288, - "name": "gasleft", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -7, - "src": "12644:7:9", - "typeDescriptions": { - "typeIdentifier": "t_function_gasleft_view$__$returns$_t_uint256_$", - "typeString": "function () view returns (uint256)" - } - }, - "id": 3289, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "12644:9:9", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "hexValue": "66616c7365", - "id": 3290, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "12655:5:9", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "false" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_struct$_Message_$4046_calldata_ptr", - "typeString": "struct IBridge.Message calldata" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 3285, - "name": "_invokeMessageCall", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3684, - "src": "12606:18:9", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Message_$4046_calldata_ptr_$_t_bytes32_$_t_uint256_$_t_bool_$returns$_t_bool_$", - "typeString": "function (struct IBridge.Message calldata,bytes32,uint256,bool) returns (bool)" - } - }, - "id": 3291, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "12606:55:9", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "src": "12594:67:9", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 3293, - "nodeType": "ExpressionStatement", - "src": "12594:67:9" - } - ] - }, - "id": 3295, - "nodeType": "IfStatement", - "src": "12200:472:9", - "trueBody": { - "id": 3265, - "nodeType": "Block", - "src": "12257:108:9", - "statements": [ - { - "expression": { - "id": 3263, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 3254, - "name": "succeeded", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3248, - "src": "12271:9:9", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "arguments": [ - { - "expression": { - "id": 3258, - "name": "_message", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3218, - "src": "12312:8:9", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Message_$4046_calldata_ptr", - "typeString": "struct IBridge.Message calldata" - } - }, - "id": 3259, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "12321:5:9", - "memberName": "value", - "nodeType": "MemberAccess", - "referencedDeclaration": 4043, - "src": "12312:14:9", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "id": 3260, - "name": "_SEND_ETHER_GAS_LIMIT", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2519, - "src": "12328:21:9", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "hexValue": "", - "id": 3261, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "12351:2:9", - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", - "typeString": "literal_string \"\"" - }, - "value": "" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", - "typeString": "literal_string \"\"" - } - ], - "expression": { - "expression": { - "id": 3255, - "name": "_message", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3218, - "src": "12283:8:9", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Message_$4046_calldata_ptr", - "typeString": "struct IBridge.Message calldata" - } - }, - "id": 3256, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "12292:9:9", - "memberName": "destOwner", - "nodeType": "MemberAccess", - "referencedDeclaration": 4039, - "src": "12283:18:9", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 3257, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "12302:9:9", - "memberName": "sendEther", - "nodeType": "MemberAccess", - "referencedDeclaration": 5468, - "src": "12283:28:9", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bool_$attached_to$_t_address_$", - "typeString": "function (address,uint256,uint256,bytes memory) returns (bool)" - } - }, - "id": 3262, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "12283:71:9", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "src": "12271:83:9", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 3264, - "nodeType": "ExpressionStatement", - "src": "12271:83:9" - } - ] - } - }, - { - "condition": { - "id": 3296, - "name": "succeeded", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3248, - "src": "12686:9:9", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": { - "condition": { - "id": 3304, - "name": "_isLastAttempt", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3220, - "src": "12774:14:9", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": { - "id": 3323, - "nodeType": "Block", - "src": "12937:48:9", - "statements": [ - { - "errorCall": { - "arguments": [], - "expression": { - "argumentTypes": [], - "id": 3320, - "name": "B_RETRY_FAILED", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2577, - "src": "12958:14:9", - "typeDescriptions": { - "typeIdentifier": "t_function_error_pure$__$returns$_t_error_$", - "typeString": "function () pure returns (error)" - } - }, - "id": 3321, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "12958:16:9", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_error", - "typeString": "error" - } - }, - "id": 3322, - "nodeType": "RevertStatement", - "src": "12951:23:9" - } - ] - }, - "id": 3324, - "nodeType": "IfStatement", - "src": "12770:215:9", - "trueBody": { - "id": 3319, - "nodeType": "Block", - "src": "12790:141:9", - "statements": [ - { - "expression": { - "arguments": [ - { - "id": 3306, - "name": "msgHash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3236, - "src": "12825:7:9", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "expression": { - "id": 3307, - "name": "Status", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4018, - "src": "12834:6:9", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_enum$_Status_$4018_$", - "typeString": "type(enum IBridge.Status)" - } - }, - "id": 3308, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "memberLocation": "12841:6:9", - "memberName": "FAILED", - "nodeType": "MemberAccess", - "referencedDeclaration": 4016, - "src": "12834:13:9", - "typeDescriptions": { - "typeIdentifier": "t_enum$_Status_$4018", - "typeString": "enum IBridge.Status" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_enum$_Status_$4018", - "typeString": "enum IBridge.Status" - } - ], - "id": 3305, - "name": "_updateMessageStatus", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3714, - "src": "12804:20:9", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_enum$_Status_$4018_$returns$__$", - "typeString": "function (bytes32,enum IBridge.Status)" - } - }, - "id": 3309, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "12804:44:9", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 3310, - "nodeType": "ExpressionStatement", - "src": "12804:44:9" - }, - { - "expression": { - "arguments": [ - { - "arguments": [ - { - "id": 3315, - "name": "msgHash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3236, - "src": "12911:7:9", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - ], - "id": 3314, - "name": "signalForFailedMessage", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3571, - "src": "12888:22:9", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_bytes32_$", - "typeString": "function (bytes32) pure returns (bytes32)" - } - }, - "id": 3316, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "12888:31:9", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - ], - "expression": { - "id": 3311, - "name": "signalService", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2530, - "src": "12863:13:9", - "typeDescriptions": { - "typeIdentifier": "t_contract$_ISignalService_$6277", - "typeString": "contract ISignalService" - } - }, - "id": 3313, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "12877:10:9", - "memberName": "sendSignal", - "nodeType": "MemberAccess", - "referencedDeclaration": 6232, - "src": "12863:24:9", - "typeDescriptions": { - "typeIdentifier": "t_function_external_nonpayable$_t_bytes32_$returns$_t_bytes32_$", - "typeString": "function (bytes32) external returns (bytes32)" - } - }, - "id": 3317, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "12863:57:9", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "id": 3318, - "nodeType": "ExpressionStatement", - "src": "12863:57:9" - } - ] - } - }, - "id": 3325, - "nodeType": "IfStatement", - "src": "12682:303:9", - "trueBody": { - "id": 3303, - "nodeType": "Block", - "src": "12697:67:9", - "statements": [ - { - "expression": { - "arguments": [ - { - "id": 3298, - "name": "msgHash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3236, - "src": "12732:7:9", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "expression": { - "id": 3299, - "name": "Status", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4018, - "src": "12741:6:9", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_enum$_Status_$4018_$", - "typeString": "type(enum IBridge.Status)" - } - }, - "id": 3300, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "memberLocation": "12748:4:9", - "memberName": "DONE", - "nodeType": "MemberAccess", - "referencedDeclaration": 4015, - "src": "12741:11:9", - "typeDescriptions": { - "typeIdentifier": "t_enum$_Status_$4018", - "typeString": "enum IBridge.Status" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_enum$_Status_$4018", - "typeString": "enum IBridge.Status" - } - ], - "id": 3297, - "name": "_updateMessageStatus", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3714, - "src": "12711:20:9", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_enum$_Status_$4018_$returns$__$", - "typeString": "function (bytes32,enum IBridge.Status)" - } - }, - "id": 3301, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "12711:42:9", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 3302, - "nodeType": "ExpressionStatement", - "src": "12711:42:9" - } - ] - } - } - ] - }, - "baseFunctions": [ - 4114 - ], - "documentation": { - "id": 3215, - "nodeType": "StructuredDocumentation", - "src": "11804:23:9", - "text": "@inheritdoc IBridge" - }, - "functionSelector": "0432873c", - "implemented": true, - "kind": "function", - "modifiers": [ - { - "arguments": [ - { - "expression": { - "id": 3223, - "name": "_message", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3218, - "src": "11959:8:9", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Message_$4046_calldata_ptr", - "typeString": "struct IBridge.Message calldata" - } - }, - "id": 3224, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "11968:11:9", - "memberName": "destChainId", - "nodeType": "MemberAccess", - "referencedDeclaration": 4037, - "src": "11959:20:9", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - } - ], - "id": 3225, - "kind": "modifierInvocation", - "modifierName": { - "id": 3222, - "name": "sameChain", - "nameLocations": [ - "11949:9:9" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 2589, - "src": "11949:9:9" - }, - "nodeType": "ModifierInvocation", - "src": "11949:31:9" - }, - { - "arguments": [ - { - "expression": { - "id": 3227, - "name": "_message", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3218, - "src": "11999:8:9", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Message_$4046_calldata_ptr", - "typeString": "struct IBridge.Message calldata" - } - }, - "id": 3228, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "12008:10:9", - "memberName": "srcChainId", - "nodeType": "MemberAccess", - "referencedDeclaration": 4033, - "src": "11999:19:9", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - } - ], - "id": 3229, - "kind": "modifierInvocation", - "modifierName": { - "id": 3226, - "name": "diffChain", - "nameLocations": [ - "11989:9:9" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 2599, - "src": "11989:9:9" - }, - "nodeType": "ModifierInvocation", - "src": "11989:30:9" - }, - { - "id": 3231, - "kind": "modifierInvocation", - "modifierName": { - "id": 3230, - "name": "whenNotPaused", - "nameLocations": [ - "12028:13:9" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 4398, - "src": "12028:13:9" - }, - "nodeType": "ModifierInvocation", - "src": "12028:13:9" - }, - { - "id": 3233, - "kind": "modifierInvocation", - "modifierName": { - "id": 3232, - "name": "nonReentrant", - "nameLocations": [ - "12050:12:9" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 4382, - "src": "12050:12:9" - }, - "nodeType": "ModifierInvocation", - "src": "12050:12:9" - } - ], - "name": "retryMessage", - "nameLocation": "11841:12:9", - "parameters": { - "id": 3221, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 3218, - "mutability": "mutable", - "name": "_message", - "nameLocation": "11880:8:9", - "nodeType": "VariableDeclaration", - "scope": 3327, - "src": "11863:25:9", - "stateVariable": false, - "storageLocation": "calldata", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Message_$4046_calldata_ptr", - "typeString": "struct IBridge.Message" - }, - "typeName": { - "id": 3217, - "nodeType": "UserDefinedTypeName", - "pathNode": { - "id": 3216, - "name": "Message", - "nameLocations": [ - "11863:7:9" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 4046, - "src": "11863:7:9" - }, - "referencedDeclaration": 4046, - "src": "11863:7:9", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Message_$4046_storage_ptr", - "typeString": "struct IBridge.Message" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 3220, - "mutability": "mutable", - "name": "_isLastAttempt", - "nameLocation": "11903:14:9", - "nodeType": "VariableDeclaration", - "scope": 3327, - "src": "11898:19:9", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 3219, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "11898:4:9", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "visibility": "internal" - } - ], - "src": "11853:70:9" - }, - "returnParameters": { - "id": 3234, - "nodeType": "ParameterList", - "parameters": [], - "src": "12067:0:9" - }, - "scope": 4009, - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "external" - }, - { - "id": 3383, - "nodeType": "FunctionDefinition", - "src": "13025:519:9", - "nodes": [], - "body": { - "id": 3382, - "nodeType": "Block", - "src": "13216:328:9", - "nodes": [], - "statements": [ - { - "condition": { - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 3350, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "expression": { - "id": 3346, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -15, - "src": "13230:3:9", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 3347, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "13234:6:9", - "memberName": "sender", - "nodeType": "MemberAccess", - "src": "13230:10:9", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "expression": { - "id": 3348, - "name": "_message", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3331, - "src": "13244:8:9", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Message_$4046_calldata_ptr", - "typeString": "struct IBridge.Message calldata" - } - }, - "id": 3349, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "13253:9:9", - "memberName": "destOwner", - "nodeType": "MemberAccess", - "referencedDeclaration": 4039, - "src": "13244:18:9", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "13230:32:9", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 3355, - "nodeType": "IfStatement", - "src": "13226:91:9", - "trueBody": { - "id": 3354, - "nodeType": "Block", - "src": "13264:53:9", - "statements": [ - { - "errorCall": { - "arguments": [], - "expression": { - "argumentTypes": [], - "id": 3351, - "name": "B_PERMISSION_DENIED", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2573, - "src": "13285:19:9", - "typeDescriptions": { - "typeIdentifier": "t_function_error_pure$__$returns$_t_error_$", - "typeString": "function () pure returns (error)" - } - }, - "id": 3352, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "13285:21:9", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_error", - "typeString": "error" - } - }, - "id": 3353, - "nodeType": "RevertStatement", - "src": "13278:28:9" - } - ] - } - }, - { - "assignments": [ - 3357 - ], - "declarations": [ - { - "constant": false, - "id": 3357, - "mutability": "mutable", - "name": "msgHash", - "nameLocation": "13335:7:9", - "nodeType": "VariableDeclaration", - "scope": 3382, - "src": "13327:15:9", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 3356, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "13327:7:9", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "visibility": "internal" - } - ], - "id": 3361, - "initialValue": { - "arguments": [ - { - "id": 3359, - "name": "_message", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3331, - "src": "13357:8:9", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Message_$4046_calldata_ptr", - "typeString": "struct IBridge.Message calldata" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_struct$_Message_$4046_calldata_ptr", - "typeString": "struct IBridge.Message calldata" - } - ], - "id": 3358, - "name": "hashMessage", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3551, - "src": "13345:11:9", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_struct$_Message_$4046_memory_ptr_$returns$_t_bytes32_$", - "typeString": "function (struct IBridge.Message memory) pure returns (bytes32)" - } - }, - "id": 3360, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "13345:21:9", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "13327:39:9" - }, - { - "expression": { - "arguments": [ - { - "id": 3363, - "name": "msgHash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3357, - "src": "13389:7:9", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "expression": { - "id": 3364, - "name": "Status", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4018, - "src": "13398:6:9", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_enum$_Status_$4018_$", - "typeString": "type(enum IBridge.Status)" - } - }, - "id": 3365, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "memberLocation": "13405:9:9", - "memberName": "RETRIABLE", - "nodeType": "MemberAccess", - "referencedDeclaration": 4014, - "src": "13398:16:9", - "typeDescriptions": { - "typeIdentifier": "t_enum$_Status_$4018", - "typeString": "enum IBridge.Status" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_enum$_Status_$4018", - "typeString": "enum IBridge.Status" - } - ], - "id": 3362, - "name": "_checkStatus", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3844, - "src": "13376:12:9", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_enum$_Status_$4018_$returns$__$", - "typeString": "function (bytes32,enum IBridge.Status) view" - } - }, - "id": 3366, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "13376:39:9", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 3367, - "nodeType": "ExpressionStatement", - "src": "13376:39:9" - }, - { - "expression": { - "arguments": [ - { - "id": 3369, - "name": "msgHash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3357, - "src": "13447:7:9", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "expression": { - "id": 3370, - "name": "Status", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4018, - "src": "13456:6:9", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_enum$_Status_$4018_$", - "typeString": "type(enum IBridge.Status)" - } - }, - "id": 3371, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "memberLocation": "13463:6:9", - "memberName": "FAILED", - "nodeType": "MemberAccess", - "referencedDeclaration": 4016, - "src": "13456:13:9", - "typeDescriptions": { - "typeIdentifier": "t_enum$_Status_$4018", - "typeString": "enum IBridge.Status" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_enum$_Status_$4018", - "typeString": "enum IBridge.Status" - } - ], - "id": 3368, - "name": "_updateMessageStatus", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3714, - "src": "13426:20:9", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_enum$_Status_$4018_$returns$__$", - "typeString": "function (bytes32,enum IBridge.Status)" - } - }, - "id": 3372, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "13426:44:9", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 3373, - "nodeType": "ExpressionStatement", - "src": "13426:44:9" - }, - { - "expression": { - "arguments": [ - { - "arguments": [ - { - "id": 3378, - "name": "msgHash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3357, - "src": "13528:7:9", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - ], - "id": 3377, - "name": "signalForFailedMessage", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3571, - "src": "13505:22:9", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_bytes32_$", - "typeString": "function (bytes32) pure returns (bytes32)" - } - }, - "id": 3379, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "13505:31:9", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - ], - "expression": { - "id": 3374, - "name": "signalService", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2530, - "src": "13480:13:9", - "typeDescriptions": { - "typeIdentifier": "t_contract$_ISignalService_$6277", - "typeString": "contract ISignalService" - } - }, - "id": 3376, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "13494:10:9", - "memberName": "sendSignal", - "nodeType": "MemberAccess", - "referencedDeclaration": 6232, - "src": "13480:24:9", - "typeDescriptions": { - "typeIdentifier": "t_function_external_nonpayable$_t_bytes32_$returns$_t_bytes32_$", - "typeString": "function (bytes32) external returns (bytes32)" - } - }, - "id": 3380, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "13480:57:9", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "id": 3381, - "nodeType": "ExpressionStatement", - "src": "13480:57:9" - } - ] - }, - "baseFunctions": [ - 4121 - ], - "documentation": { - "id": 3328, - "nodeType": "StructuredDocumentation", - "src": "12997:23:9", - "text": "@inheritdoc IBridge" - }, - "functionSelector": "913b16cb", - "implemented": true, - "kind": "function", - "modifiers": [ - { - "arguments": [ - { - "expression": { - "id": 3334, - "name": "_message", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3331, - "src": "13108:8:9", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Message_$4046_calldata_ptr", - "typeString": "struct IBridge.Message calldata" - } - }, - "id": 3335, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "13117:11:9", - "memberName": "destChainId", - "nodeType": "MemberAccess", - "referencedDeclaration": 4037, - "src": "13108:20:9", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - } - ], - "id": 3336, - "kind": "modifierInvocation", - "modifierName": { - "id": 3333, - "name": "sameChain", - "nameLocations": [ - "13098:9:9" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 2589, - "src": "13098:9:9" - }, - "nodeType": "ModifierInvocation", - "src": "13098:31:9" - }, - { - "arguments": [ - { - "expression": { - "id": 3338, - "name": "_message", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3331, - "src": "13148:8:9", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Message_$4046_calldata_ptr", - "typeString": "struct IBridge.Message calldata" - } - }, - "id": 3339, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "13157:10:9", - "memberName": "srcChainId", - "nodeType": "MemberAccess", - "referencedDeclaration": 4033, - "src": "13148:19:9", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - } - ], - "id": 3340, - "kind": "modifierInvocation", - "modifierName": { - "id": 3337, - "name": "diffChain", - "nameLocations": [ - "13138:9:9" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 2599, - "src": "13138:9:9" - }, - "nodeType": "ModifierInvocation", - "src": "13138:30:9" - }, - { - "id": 3342, - "kind": "modifierInvocation", - "modifierName": { - "id": 3341, - "name": "whenNotPaused", - "nameLocations": [ - "13177:13:9" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 4398, - "src": "13177:13:9" - }, - "nodeType": "ModifierInvocation", - "src": "13177:13:9" - }, - { - "id": 3344, - "kind": "modifierInvocation", - "modifierName": { - "id": 3343, - "name": "nonReentrant", - "nameLocations": [ - "13199:12:9" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 4382, - "src": "13199:12:9" - }, - "nodeType": "ModifierInvocation", - "src": "13199:12:9" - } - ], - "name": "failMessage", - "nameLocation": "13034:11:9", - "parameters": { - "id": 3332, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 3331, - "mutability": "mutable", - "name": "_message", - "nameLocation": "13063:8:9", - "nodeType": "VariableDeclaration", - "scope": 3383, - "src": "13046:25:9", - "stateVariable": false, - "storageLocation": "calldata", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Message_$4046_calldata_ptr", - "typeString": "struct IBridge.Message" - }, - "typeName": { - "id": 3330, - "nodeType": "UserDefinedTypeName", - "pathNode": { - "id": 3329, - "name": "Message", - "nameLocations": [ - "13046:7:9" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 4046, - "src": "13046:7:9" - }, - "referencedDeclaration": 4046, - "src": "13046:7:9", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Message_$4046_storage_ptr", - "typeString": "struct IBridge.Message" - } - }, - "visibility": "internal" - } - ], - "src": "13045:27:9" - }, - "returnParameters": { - "id": 3345, - "nodeType": "ParameterList", - "parameters": [], - "src": "13216:0:9" - }, - "scope": 4009, - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "external" - }, - { - "id": 3412, - "nodeType": "FunctionDefinition", - "src": "13578:250:9", - "nodes": [], - "body": { - "id": 3411, - "nodeType": "Block", - "src": "13657:171:9", - "nodes": [], - "statements": [ - { - "condition": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 3396, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "expression": { - "id": 3392, - "name": "_message", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3387, - "src": "13671:8:9", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Message_$4046_calldata_ptr", - "typeString": "struct IBridge.Message calldata" - } - }, - "id": 3393, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "13680:10:9", - "memberName": "srcChainId", - "nodeType": "MemberAccess", - "referencedDeclaration": 4033, - "src": "13671:19:9", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "expression": { - "id": 3394, - "name": "block", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -4, - "src": "13694:5:9", - "typeDescriptions": { - "typeIdentifier": "t_magic_block", - "typeString": "block" - } - }, - "id": 3395, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "13700:7:9", - "memberName": "chainid", - "nodeType": "MemberAccess", - "src": "13694:13:9", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "13671:36:9", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 3399, - "nodeType": "IfStatement", - "src": "13667:54:9", - "trueBody": { - "expression": { - "hexValue": "66616c7365", - "id": 3397, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "13716:5:9", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "false" - }, - "functionReturnParameters": 3391, - "id": 3398, - "nodeType": "Return", - "src": "13709:12:9" - } - }, - { - "expression": { - "arguments": [ - { - "arguments": [ - { - "id": 3404, - "name": "this", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -28, - "src": "13781:4:9", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Bridge_$4009", - "typeString": "contract Bridge" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_contract$_Bridge_$4009", - "typeString": "contract Bridge" - } - ], - "id": 3403, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "13773:7:9", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_address_$", - "typeString": "type(address)" - }, - "typeName": { - "id": 3402, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "13773:7:9", - "typeDescriptions": {} - } - }, - "id": 3405, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "13773:13:9", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "arguments": [ - { - "id": 3407, - "name": "_message", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3387, - "src": "13809:8:9", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Message_$4046_calldata_ptr", - "typeString": "struct IBridge.Message calldata" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_struct$_Message_$4046_calldata_ptr", - "typeString": "struct IBridge.Message calldata" - } - ], - "id": 3406, - "name": "hashMessage", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3551, - "src": "13797:11:9", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_struct$_Message_$4046_memory_ptr_$returns$_t_bytes32_$", - "typeString": "function (struct IBridge.Message memory) pure returns (bytes32)" - } - }, - "id": 3408, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "13797:21:9", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - ], - "expression": { - "id": 3400, - "name": "signalService", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2530, - "src": "13738:13:9", - "typeDescriptions": { - "typeIdentifier": "t_contract$_ISignalService_$6277", - "typeString": "contract ISignalService" - } - }, - "id": 3401, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "13752:12:9", - "memberName": "isSignalSent", - "nodeType": "MemberAccess", - "referencedDeclaration": 6268, - "src": "13738:26:9", - "typeDescriptions": { - "typeIdentifier": "t_function_external_view$_t_address_$_t_bytes32_$returns$_t_bool_$", - "typeString": "function (address,bytes32) view external returns (bool)" - } - }, - "id": 3409, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [ - "13767:4:9", - "13788:7:9" - ], - "names": [ - "_app", - "_signal" - ], - "nodeType": "FunctionCall", - "src": "13738:83:9", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "functionReturnParameters": 3391, - "id": 3410, - "nodeType": "Return", - "src": "13731:90:9" - } - ] - }, - "baseFunctions": [ - 4137 - ], - "documentation": { - "id": 3384, - "nodeType": "StructuredDocumentation", - "src": "13550:23:9", - "text": "@inheritdoc IBridge" - }, - "functionSelector": "60620c6b", - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "isMessageSent", - "nameLocation": "13587:13:9", - "parameters": { - "id": 3388, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 3387, - "mutability": "mutable", - "name": "_message", - "nameLocation": "13618:8:9", - "nodeType": "VariableDeclaration", - "scope": 3412, - "src": "13601:25:9", - "stateVariable": false, - "storageLocation": "calldata", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Message_$4046_calldata_ptr", - "typeString": "struct IBridge.Message" - }, - "typeName": { - "id": 3386, - "nodeType": "UserDefinedTypeName", - "pathNode": { - "id": 3385, - "name": "Message", - "nameLocations": [ - "13601:7:9" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 4046, - "src": "13601:7:9" - }, - "referencedDeclaration": 4046, - "src": "13601:7:9", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Message_$4046_storage_ptr", - "typeString": "struct IBridge.Message" - } - }, - "visibility": "internal" - } - ], - "src": "13600:27:9" - }, - "returnParameters": { - "id": 3391, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 3390, - "mutability": "mutable", - "name": "", - "nameLocation": "-1:-1:-1", - "nodeType": "VariableDeclaration", - "scope": 3412, - "src": "13651:4:9", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 3389, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "13651:4:9", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "visibility": "internal" - } - ], - "src": "13650:6:9" - }, - "scope": 4009, - "stateMutability": "view", - "virtual": false, - "visibility": "external" - }, - { - "id": 3444, - "nodeType": "FunctionDefinition", - "src": "14121:410:9", - "nodes": [], - "body": { - "id": 3443, - "nodeType": "Block", - "src": "14275:256:9", - "nodes": [], - "statements": [ - { - "condition": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 3427, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "expression": { - "id": 3423, - "name": "_message", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3416, - "src": "14289:8:9", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Message_$4046_calldata_ptr", - "typeString": "struct IBridge.Message calldata" - } - }, - "id": 3424, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "14298:10:9", - "memberName": "srcChainId", - "nodeType": "MemberAccess", - "referencedDeclaration": 4033, - "src": "14289:19:9", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "expression": { - "id": 3425, - "name": "block", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -4, - "src": "14312:5:9", - "typeDescriptions": { - "typeIdentifier": "t_magic_block", - "typeString": "block" - } - }, - "id": 3426, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "14318:7:9", - "memberName": "chainid", - "nodeType": "MemberAccess", - "src": "14312:13:9", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "14289:36:9", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 3430, - "nodeType": "IfStatement", - "src": "14285:54:9", - "trueBody": { - "expression": { - "hexValue": "66616c7365", - "id": 3428, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "14334:5:9", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "false" - }, - "functionReturnParameters": 3422, - "id": 3429, - "nodeType": "Return", - "src": "14327:12:9" - } - }, - { - "expression": { - "arguments": [ - { - "id": 3432, - "name": "signalService", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2530, - "src": "14388:13:9", - "typeDescriptions": { - "typeIdentifier": "t_contract$_ISignalService_$6277", - "typeString": "contract ISignalService" - } - }, - { - "arguments": [ - { - "arguments": [ - { - "id": 3435, - "name": "_message", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3416, - "src": "14450:8:9", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Message_$4046_calldata_ptr", - "typeString": "struct IBridge.Message calldata" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_struct$_Message_$4046_calldata_ptr", - "typeString": "struct IBridge.Message calldata" - } - ], - "id": 3434, - "name": "hashMessage", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3551, - "src": "14438:11:9", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_struct$_Message_$4046_memory_ptr_$returns$_t_bytes32_$", - "typeString": "function (struct IBridge.Message memory) pure returns (bytes32)" - } - }, - "id": 3436, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "14438:21:9", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - ], - "id": 3433, - "name": "signalForFailedMessage", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3571, - "src": "14415:22:9", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_bytes32_$", - "typeString": "function (bytes32) pure returns (bytes32)" - } - }, - "id": 3437, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "14415:45:9", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "expression": { - "id": 3438, - "name": "_message", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3416, - "src": "14474:8:9", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Message_$4046_calldata_ptr", - "typeString": "struct IBridge.Message calldata" - } - }, - "id": 3439, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "14483:11:9", - "memberName": "destChainId", - "nodeType": "MemberAccess", - "referencedDeclaration": 4037, - "src": "14474:20:9", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - }, - { - "id": 3440, - "name": "_proof", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3418, - "src": "14508:6:9", - "typeDescriptions": { - "typeIdentifier": "t_bytes_calldata_ptr", - "typeString": "bytes calldata" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_contract$_ISignalService_$6277", - "typeString": "contract ISignalService" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - }, - { - "typeIdentifier": "t_bytes_calldata_ptr", - "typeString": "bytes calldata" - } - ], - "id": 3431, - "name": "_isSignalReceived", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3826, - "src": "14357:17:9", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_contract$_ISignalService_$6277_$_t_bytes32_$_t_uint64_$_t_bytes_calldata_ptr_$returns$_t_bool_$", - "typeString": "function (contract ISignalService,bytes32,uint64,bytes calldata) view returns (bool)" - } - }, - "id": 3441, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "14357:167:9", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "functionReturnParameters": 3422, - "id": 3442, - "nodeType": "Return", - "src": "14350:174:9" - } - ] - }, - "documentation": { - "id": 3413, - "nodeType": "StructuredDocumentation", - "src": "13834:282:9", - "text": "@notice Checks if a msgHash has failed on its destination chain.\n This is the 'readonly' version of proveMessageFailed.\n @param _message The message.\n @param _proof The merkle inclusion proof.\n @return true if the message has failed, false otherwise." - }, - "functionSelector": "5862f6e1", - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "isMessageFailed", - "nameLocation": "14130:15:9", - "parameters": { - "id": 3419, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 3416, - "mutability": "mutable", - "name": "_message", - "nameLocation": "14172:8:9", - "nodeType": "VariableDeclaration", - "scope": 3444, - "src": "14155:25:9", - "stateVariable": false, - "storageLocation": "calldata", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Message_$4046_calldata_ptr", - "typeString": "struct IBridge.Message" - }, - "typeName": { - "id": 3415, - "nodeType": "UserDefinedTypeName", - "pathNode": { - "id": 3414, - "name": "Message", - "nameLocations": [ - "14155:7:9" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 4046, - "src": "14155:7:9" - }, - "referencedDeclaration": 4046, - "src": "14155:7:9", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Message_$4046_storage_ptr", - "typeString": "struct IBridge.Message" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 3418, - "mutability": "mutable", - "name": "_proof", - "nameLocation": "14205:6:9", - "nodeType": "VariableDeclaration", - "scope": 3444, - "src": "14190:21:9", - "stateVariable": false, - "storageLocation": "calldata", - "typeDescriptions": { - "typeIdentifier": "t_bytes_calldata_ptr", - "typeString": "bytes" - }, - "typeName": { - "id": 3417, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "14190:5:9", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes" - } - }, - "visibility": "internal" - } - ], - "src": "14145:72:9" - }, - "returnParameters": { - "id": 3422, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 3421, - "mutability": "mutable", - "name": "", - "nameLocation": "-1:-1:-1", - "nodeType": "VariableDeclaration", - "scope": 3444, - "src": "14265:4:9", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 3420, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "14265:4:9", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "visibility": "internal" - } - ], - "src": "14264:6:9" - }, - "scope": 4009, - "stateMutability": "view", - "virtual": false, - "visibility": "external" - }, - { - "id": 3474, - "nodeType": "FunctionDefinition", - "src": "14835:329:9", - "nodes": [], - "body": { - "id": 3473, - "nodeType": "Block", - "src": "14991:173:9", - "nodes": [], - "statements": [ - { - "condition": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 3459, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "expression": { - "id": 3455, - "name": "_message", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3448, - "src": "15005:8:9", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Message_$4046_calldata_ptr", - "typeString": "struct IBridge.Message calldata" - } - }, - "id": 3456, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "15014:11:9", - "memberName": "destChainId", - "nodeType": "MemberAccess", - "referencedDeclaration": 4037, - "src": "15005:20:9", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "expression": { - "id": 3457, - "name": "block", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -4, - "src": "15029:5:9", - "typeDescriptions": { - "typeIdentifier": "t_magic_block", - "typeString": "block" - } - }, - "id": 3458, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "15035:7:9", - "memberName": "chainid", - "nodeType": "MemberAccess", - "src": "15029:13:9", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "15005:37:9", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 3462, - "nodeType": "IfStatement", - "src": "15001:55:9", - "trueBody": { - "expression": { - "hexValue": "66616c7365", - "id": 3460, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "15051:5:9", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "false" - }, - "functionReturnParameters": 3454, - "id": 3461, - "nodeType": "Return", - "src": "15044:12:9" - } - }, - { - "expression": { - "arguments": [ - { - "id": 3464, - "name": "signalService", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2530, - "src": "15091:13:9", - "typeDescriptions": { - "typeIdentifier": "t_contract$_ISignalService_$6277", - "typeString": "contract ISignalService" - } - }, - { - "arguments": [ - { - "id": 3466, - "name": "_message", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3448, - "src": "15118:8:9", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Message_$4046_calldata_ptr", - "typeString": "struct IBridge.Message calldata" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_struct$_Message_$4046_calldata_ptr", - "typeString": "struct IBridge.Message calldata" - } - ], - "id": 3465, - "name": "hashMessage", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3551, - "src": "15106:11:9", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_struct$_Message_$4046_memory_ptr_$returns$_t_bytes32_$", - "typeString": "function (struct IBridge.Message memory) pure returns (bytes32)" - } - }, - "id": 3467, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "15106:21:9", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "expression": { - "id": 3468, - "name": "_message", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3448, - "src": "15129:8:9", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Message_$4046_calldata_ptr", - "typeString": "struct IBridge.Message calldata" - } - }, - "id": 3469, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "15138:10:9", - "memberName": "srcChainId", - "nodeType": "MemberAccess", - "referencedDeclaration": 4033, - "src": "15129:19:9", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - }, - { - "id": 3470, - "name": "_proof", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3450, - "src": "15150:6:9", - "typeDescriptions": { - "typeIdentifier": "t_bytes_calldata_ptr", - "typeString": "bytes calldata" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_contract$_ISignalService_$6277", - "typeString": "contract ISignalService" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - }, - { - "typeIdentifier": "t_bytes_calldata_ptr", - "typeString": "bytes calldata" - } - ], - "id": 3463, - "name": "_isSignalReceived", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3826, - "src": "15073:17:9", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_contract$_ISignalService_$6277_$_t_bytes32_$_t_uint64_$_t_bytes_calldata_ptr_$returns$_t_bool_$", - "typeString": "function (contract ISignalService,bytes32,uint64,bytes calldata) view returns (bool)" - } - }, - "id": 3471, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "15073:84:9", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "functionReturnParameters": 3454, - "id": 3472, - "nodeType": "Return", - "src": "15066:91:9" - } - ] - }, - "documentation": { - "id": 3445, - "nodeType": "StructuredDocumentation", - "src": "14537:293:9", - "text": "@notice Checks if a msgHash has been received on its source chain.\n This is the 'readonly' version of proveMessageReceived.\n @param _message The message.\n @param _proof The merkle inclusion proof.\n @return true if the message has been received, false otherwise." - }, - "functionSelector": "b8acae0e", - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "isMessageReceived", - "nameLocation": "14844:17:9", - "parameters": { - "id": 3451, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 3448, - "mutability": "mutable", - "name": "_message", - "nameLocation": "14888:8:9", - "nodeType": "VariableDeclaration", - "scope": 3474, - "src": "14871:25:9", - "stateVariable": false, - "storageLocation": "calldata", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Message_$4046_calldata_ptr", - "typeString": "struct IBridge.Message" - }, - "typeName": { - "id": 3447, - "nodeType": "UserDefinedTypeName", - "pathNode": { - "id": 3446, - "name": "Message", - "nameLocations": [ - "14871:7:9" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 4046, - "src": "14871:7:9" - }, - "referencedDeclaration": 4046, - "src": "14871:7:9", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Message_$4046_storage_ptr", - "typeString": "struct IBridge.Message" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 3450, - "mutability": "mutable", - "name": "_proof", - "nameLocation": "14921:6:9", - "nodeType": "VariableDeclaration", - "scope": 3474, - "src": "14906:21:9", - "stateVariable": false, - "storageLocation": "calldata", - "typeDescriptions": { - "typeIdentifier": "t_bytes_calldata_ptr", - "typeString": "bytes" - }, - "typeName": { - "id": 3449, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "14906:5:9", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes" - } - }, - "visibility": "internal" - } - ], - "src": "14861:72:9" - }, - "returnParameters": { - "id": 3454, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 3453, - "mutability": "mutable", - "name": "", - "nameLocation": "-1:-1:-1", - "nodeType": "VariableDeclaration", - "scope": 3474, - "src": "14981:4:9", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 3452, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "14981:4:9", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "visibility": "internal" - } - ], - "src": "14980:6:9" - }, - "scope": 4009, - "stateMutability": "view", - "virtual": false, - "visibility": "external" - }, - { - "id": 3503, - "nodeType": "FunctionDefinition", - "src": "15412:249:9", - "nodes": [], - "body": { - "id": 3502, - "nodeType": "Block", - "src": "15542:119:9", - "nodes": [], - "statements": [ - { - "expression": { - "id": 3491, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 3484, - "name": "destBridge_", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3482, - "src": "15552:11:9", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "arguments": [ - { - "id": 3486, - "name": "_chainId", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3477, - "src": "15574:8:9", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - }, - { - "expression": { - "id": 3487, - "name": "LibNames", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5845, - "src": "15584:8:9", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_LibNames_$5845_$", - "typeString": "type(library LibNames)" - } - }, - "id": 3488, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "memberLocation": "15593:8:9", - "memberName": "B_BRIDGE", - "nodeType": "MemberAccess", - "referencedDeclaration": 5796, - "src": "15584:17:9", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "hexValue": "74727565", - "id": 3489, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "15603:4:9", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "true" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 3485, - "name": "resolve", - "nodeType": "Identifier", - "overloadedDeclarations": [ - 4899, - 4921 - ], - "referencedDeclaration": 4899, - "src": "15566:7:9", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_uint64_$_t_bytes32_$_t_bool_$returns$_t_address_$", - "typeString": "function (uint64,bytes32,bool) view returns (address)" - } - }, - "id": 3490, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "15566:42:9", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "15552:56:9", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 3492, - "nodeType": "ExpressionStatement", - "src": "15552:56:9" - }, - { - "expression": { - "id": 3500, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 3493, - "name": "enabled_", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3480, - "src": "15618:8:9", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 3499, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 3494, - "name": "destBridge_", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3482, - "src": "15629:11:9", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "arguments": [ - { - "hexValue": "30", - "id": 3497, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "15652:1:9", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - } - ], - "id": 3496, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "15644:7:9", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_address_$", - "typeString": "type(address)" - }, - "typeName": { - "id": 3495, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "15644:7:9", - "typeDescriptions": {} - } - }, - "id": 3498, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "typeConversion", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "15644:10:9", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "15629:25:9", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "src": "15618:36:9", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 3501, - "nodeType": "ExpressionStatement", - "src": "15618:36:9" - } - ] - }, - "documentation": { - "id": 3475, - "nodeType": "StructuredDocumentation", - "src": "15170:237:9", - "text": "@notice Checks if the destination chain is enabled.\n @param _chainId The destination chain ID.\n @return enabled_ True if the destination chain is enabled.\n @return destBridge_ The bridge of the destination chain." - }, - "functionSelector": "8e3881a9", - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "isDestChainEnabled", - "nameLocation": "15421:18:9", - "parameters": { - "id": 3478, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 3477, - "mutability": "mutable", - "name": "_chainId", - "nameLocation": "15447:8:9", - "nodeType": "VariableDeclaration", - "scope": 3503, - "src": "15440:15:9", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - }, - "typeName": { - "id": 3476, - "name": "uint64", - "nodeType": "ElementaryTypeName", - "src": "15440:6:9", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - }, - "visibility": "internal" - } - ], - "src": "15439:17:9" - }, - "returnParameters": { - "id": 3483, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 3480, - "mutability": "mutable", - "name": "enabled_", - "nameLocation": "15507:8:9", - "nodeType": "VariableDeclaration", - "scope": 3503, - "src": "15502:13:9", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 3479, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "15502:4:9", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 3482, - "mutability": "mutable", - "name": "destBridge_", - "nameLocation": "15525:11:9", - "nodeType": "VariableDeclaration", - "scope": 3503, - "src": "15517:19:9", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 3481, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "15517:7:9", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - } - ], - "src": "15501:36:9" - }, - "scope": 4009, - "stateMutability": "view", - "virtual": false, - "visibility": "public" - }, - { - "id": 3533, - "nodeType": "FunctionDefinition", - "src": "15737:225:9", - "nodes": [], - "body": { - "id": 3532, - "nodeType": "Block", - "src": "15800:162:9", - "nodes": [], - "statements": [ - { - "expression": { - "id": 3513, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 3510, - "name": "ctx_", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3508, - "src": "15810:4:9", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Context_$4053_memory_ptr", - "typeString": "struct IBridge.Context memory" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "arguments": [], - "expression": { - "argumentTypes": [], - "id": 3511, - "name": "_loadContext", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3789, - "src": "15817:12:9", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$__$returns$_t_struct$_Context_$4053_memory_ptr_$", - "typeString": "function () view returns (struct IBridge.Context memory)" - } - }, - "id": 3512, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "15817:14:9", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_struct$_Context_$4053_memory_ptr", - "typeString": "struct IBridge.Context memory" - } - }, - "src": "15810:21:9", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Context_$4053_memory_ptr", - "typeString": "struct IBridge.Context memory" - } - }, - "id": 3514, - "nodeType": "ExpressionStatement", - "src": "15810:21:9" - }, - { - "condition": { - "commonType": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "id": 3526, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "commonType": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "id": 3518, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "expression": { - "id": 3515, - "name": "ctx_", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3508, - "src": "15845:4:9", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Context_$4053_memory_ptr", - "typeString": "struct IBridge.Context memory" - } - }, - "id": 3516, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberLocation": "15850:7:9", - "memberName": "msgHash", - "nodeType": "MemberAccess", - "referencedDeclaration": 4048, - "src": "15845:12:9", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "hexValue": "30", - "id": 3517, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "15861:1:9", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "15845:17:9", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "BinaryOperation", - "operator": "||", - "rightExpression": { - "commonType": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "id": 3525, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "expression": { - "id": 3519, - "name": "ctx_", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3508, - "src": "15866:4:9", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Context_$4053_memory_ptr", - "typeString": "struct IBridge.Context memory" - } - }, - "id": 3520, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberLocation": "15871:7:9", - "memberName": "msgHash", - "nodeType": "MemberAccess", - "referencedDeclaration": 4048, - "src": "15866:12:9", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "arguments": [ - { - "id": 3523, - "name": "_PLACEHOLDER", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2527, - "src": "15890:12:9", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 3522, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "15882:7:9", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_bytes32_$", - "typeString": "type(bytes32)" - }, - "typeName": { - "id": 3521, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "15882:7:9", - "typeDescriptions": {} - } - }, - "id": 3524, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "typeConversion", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "15882:21:9", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "src": "15866:37:9", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "src": "15845:58:9", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 3531, - "nodeType": "IfStatement", - "src": "15841:115:9", - "trueBody": { - "id": 3530, - "nodeType": "Block", - "src": "15905:51:9", - "statements": [ - { - "errorCall": { - "arguments": [], - "expression": { - "argumentTypes": [], - "id": 3527, - "name": "B_INVALID_CONTEXT", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2559, - "src": "15926:17:9", - "typeDescriptions": { - "typeIdentifier": "t_function_error_pure$__$returns$_t_error_$", - "typeString": "function () pure returns (error)" - } - }, - "id": 3528, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "15926:19:9", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_error", - "typeString": "error" - } - }, - "id": 3529, - "nodeType": "RevertStatement", - "src": "15919:26:9" - } - ] - } - } - ] - }, - "baseFunctions": [ - 4128 - ], - "documentation": { - "id": 3504, - "nodeType": "StructuredDocumentation", - "src": "15667:65:9", - "text": "@notice Gets the current context.\n @inheritdoc IBridge" - }, - "functionSelector": "d0496d6a", - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "context", - "nameLocation": "15746:7:9", - "parameters": { - "id": 3505, - "nodeType": "ParameterList", - "parameters": [], - "src": "15753:2:9" - }, - "returnParameters": { - "id": 3509, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 3508, - "mutability": "mutable", - "name": "ctx_", - "nameLocation": "15794:4:9", - "nodeType": "VariableDeclaration", - "scope": 3533, - "src": "15779:19:9", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Context_$4053_memory_ptr", - "typeString": "struct IBridge.Context" - }, - "typeName": { - "id": 3507, - "nodeType": "UserDefinedTypeName", - "pathNode": { - "id": 3506, - "name": "Context", - "nameLocations": [ - "15779:7:9" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 4053, - "src": "15779:7:9" - }, - "referencedDeclaration": 4053, - "src": "15779:7:9", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Context_$4053_storage_ptr", - "typeString": "struct IBridge.Context" - } - }, - "visibility": "internal" - } - ], - "src": "15778:21:9" - }, - "scope": 4009, - "stateMutability": "view", - "virtual": false, - "visibility": "external" - }, - { - "id": 3551, - "nodeType": "FunctionDefinition", - "src": "15996:148:9", - "nodes": [], - "body": { - "id": 3550, - "nodeType": "Block", - "src": "16072:72:9", - "nodes": [], - "statements": [ - { - "expression": { - "arguments": [ - { - "arguments": [ - { - "hexValue": "5441494b4f5f4d455353414745", - "id": 3545, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "16110:15:9", - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_1a4473b8c75893734d8c6977cd1e546423701f3f5c26bb840c8dbeabf02c3f88", - "typeString": "literal_string \"TAIKO_MESSAGE\"" - }, - "value": "TAIKO_MESSAGE" - }, - { - "id": 3546, - "name": "_message", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3537, - "src": "16127:8:9", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Message_$4046_memory_ptr", - "typeString": "struct IBridge.Message memory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_stringliteral_1a4473b8c75893734d8c6977cd1e546423701f3f5c26bb840c8dbeabf02c3f88", - "typeString": "literal_string \"TAIKO_MESSAGE\"" - }, - { - "typeIdentifier": "t_struct$_Message_$4046_memory_ptr", - "typeString": "struct IBridge.Message memory" - } - ], - "expression": { - "id": 3543, - "name": "abi", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -1, - "src": "16099:3:9", - "typeDescriptions": { - "typeIdentifier": "t_magic_abi", - "typeString": "abi" - } - }, - "id": 3544, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "memberLocation": "16103:6:9", - "memberName": "encode", - "nodeType": "MemberAccess", - "src": "16099:10:9", - "typeDescriptions": { - "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$", - "typeString": "function () pure returns (bytes memory)" - } - }, - "id": 3547, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "16099:37:9", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - ], - "id": 3542, - "name": "keccak256", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -8, - "src": "16089:9:9", - "typeDescriptions": { - "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", - "typeString": "function (bytes memory) pure returns (bytes32)" - } - }, - "id": 3548, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "16089:48:9", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "functionReturnParameters": 3541, - "id": 3549, - "nodeType": "Return", - "src": "16082:55:9" - } - ] - }, - "baseFunctions": [ - 4152 - ], - "documentation": { - "id": 3534, - "nodeType": "StructuredDocumentation", - "src": "15968:23:9", - "text": "@inheritdoc IBridge" - }, - "functionSelector": "c012fa77", - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "hashMessage", - "nameLocation": "16005:11:9", - "parameters": { - "id": 3538, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 3537, - "mutability": "mutable", - "name": "_message", - "nameLocation": "16032:8:9", - "nodeType": "VariableDeclaration", - "scope": 3551, - "src": "16017:23:9", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Message_$4046_memory_ptr", - "typeString": "struct IBridge.Message" - }, - "typeName": { - "id": 3536, - "nodeType": "UserDefinedTypeName", - "pathNode": { - "id": 3535, - "name": "Message", - "nameLocations": [ - "16017:7:9" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 4046, - "src": "16017:7:9" - }, - "referencedDeclaration": 4046, - "src": "16017:7:9", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Message_$4046_storage_ptr", - "typeString": "struct IBridge.Message" - } - }, - "visibility": "internal" - } - ], - "src": "16016:25:9" - }, - "returnParameters": { - "id": 3541, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 3540, - "mutability": "mutable", - "name": "", - "nameLocation": "-1:-1:-1", - "nodeType": "VariableDeclaration", - "scope": 3551, - "src": "16063:7:9", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 3539, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "16063:7:9", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "visibility": "internal" - } - ], - "src": "16062:9:9" - }, - "scope": 4009, - "stateMutability": "pure", - "virtual": false, - "visibility": "public" - }, - { - "id": 3571, - "nodeType": "FunctionDefinition", - "src": "16325:146:9", - "nodes": [], - "body": { - "id": 3570, - "nodeType": "Block", - "src": "16405:66:9", - "nodes": [], - "statements": [ - { - "expression": { - "commonType": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "id": 3568, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 3559, - "name": "_msgHash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3554, - "src": "16422:8:9", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "nodeType": "BinaryOperation", - "operator": "^", - "rightExpression": { - "arguments": [ - { - "arguments": [ - { - "expression": { - "id": 3564, - "name": "Status", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4018, - "src": "16449:6:9", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_enum$_Status_$4018_$", - "typeString": "type(enum IBridge.Status)" - } - }, - "id": 3565, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "memberLocation": "16456:6:9", - "memberName": "FAILED", - "nodeType": "MemberAccess", - "referencedDeclaration": 4016, - "src": "16449:13:9", - "typeDescriptions": { - "typeIdentifier": "t_enum$_Status_$4018", - "typeString": "enum IBridge.Status" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_enum$_Status_$4018", - "typeString": "enum IBridge.Status" - } - ], - "id": 3563, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "16441:7:9", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_uint256_$", - "typeString": "type(uint256)" - }, - "typeName": { - "id": 3562, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "16441:7:9", - "typeDescriptions": {} - } - }, - "id": 3566, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "typeConversion", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "16441:22:9", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 3561, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "16433:7:9", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_bytes32_$", - "typeString": "type(bytes32)" - }, - "typeName": { - "id": 3560, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "16433:7:9", - "typeDescriptions": {} - } - }, - "id": 3567, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "typeConversion", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "16433:31:9", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "src": "16422:42:9", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "functionReturnParameters": 3558, - "id": 3569, - "nodeType": "Return", - "src": "16415:49:9" - } - ] - }, - "documentation": { - "id": 3552, - "nodeType": "StructuredDocumentation", - "src": "16150:170:9", - "text": "@notice Returns a signal representing a failed/recalled message.\n @param _msgHash The message hash.\n @return The failed representation of it as bytes32." - }, - "functionSelector": "d1aaa5df", - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "signalForFailedMessage", - "nameLocation": "16334:22:9", - "parameters": { - "id": 3555, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 3554, - "mutability": "mutable", - "name": "_msgHash", - "nameLocation": "16365:8:9", - "nodeType": "VariableDeclaration", - "scope": 3571, - "src": "16357:16:9", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 3553, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "16357:7:9", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "visibility": "internal" - } - ], - "src": "16356:18:9" - }, - "returnParameters": { - "id": 3558, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 3557, - "mutability": "mutable", - "name": "", - "nameLocation": "-1:-1:-1", - "nodeType": "VariableDeclaration", - "scope": 3571, - "src": "16396:7:9", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 3556, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "16396:7:9", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "visibility": "internal" - } - ], - "src": "16395:9:9" - }, - "scope": 4009, - "stateMutability": "pure", - "virtual": false, - "visibility": "public" - }, - { - "id": 3586, - "nodeType": "FunctionDefinition", - "src": "16688:150:9", - "nodes": [], - "body": { - "id": 3585, - "nodeType": "Block", - "src": "16768:70:9", - "nodes": [], - "statements": [ - { - "expression": { - "commonType": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - }, - "id": 3583, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "arguments": [ - { - "id": 3580, - "name": "dataLength", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3574, - "src": "16806:10:9", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 3579, - "name": "_messageCalldataCost", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3959, - "src": "16785:20:9", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint32_$", - "typeString": "function (uint256) pure returns (uint32)" - } - }, - "id": 3581, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "16785:32:9", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - "nodeType": "BinaryOperation", - "operator": "+", - "rightExpression": { - "id": 3582, - "name": "GAS_RESERVE", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2503, - "src": "16820:11:9", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - "src": "16785:46:9", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - "functionReturnParameters": 3578, - "id": 3584, - "nodeType": "Return", - "src": "16778:53:9" - } - ] - }, - "documentation": { - "id": 3572, - "nodeType": "StructuredDocumentation", - "src": "16477:206:9", - "text": "@notice Returns the minimal gas limit required for sending a given message.\n @param dataLength The length of message.data.\n @return The minimal gas limit required for sending this message." - }, - "functionSelector": "7cbadfaa", - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "getMessageMinGasLimit", - "nameLocation": "16697:21:9", - "parameters": { - "id": 3575, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 3574, - "mutability": "mutable", - "name": "dataLength", - "nameLocation": "16727:10:9", - "nodeType": "VariableDeclaration", - "scope": 3586, - "src": "16719:18:9", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 3573, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "16719:7:9", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "16718:20:9" - }, - "returnParameters": { - "id": 3578, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 3577, - "mutability": "mutable", - "name": "", - "nameLocation": "-1:-1:-1", - "nodeType": "VariableDeclaration", - "scope": 3586, - "src": "16760:6:9", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - }, - "typeName": { - "id": 3576, - "name": "uint32", - "nodeType": "ElementaryTypeName", - "src": "16760:6:9", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - "visibility": "internal" - } - ], - "src": "16759:8:9" - }, - "scope": 4009, - "stateMutability": "pure", - "virtual": false, - "visibility": "public" - }, - { - "id": 3684, - "nodeType": "FunctionDefinition", - "src": "17315:949:9", + "id": 1577, + "nodeType": "FunctionDefinition", + "src": "2108:287:4", "nodes": [], "body": { - "id": 3683, + "id": 1576, "nodeType": "Block", - "src": "17528:736:9", + "src": "2242:153:4", "nodes": [], "statements": [ { "expression": { - "arguments": [ - { - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 3608, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "expression": { - "id": 3602, - "name": "_message", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3590, - "src": "17545:8:9", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Message_$4046_calldata_ptr", - "typeString": "struct IBridge.Message calldata" - } - }, - "id": 3603, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "17554:4:9", - "memberName": "from", - "nodeType": "MemberAccess", - "referencedDeclaration": 4031, - "src": "17545:13:9", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "arguments": [ - { - "id": 3606, - "name": "this", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -28, - "src": "17570:4:9", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Bridge_$4009", - "typeString": "contract Bridge" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_contract$_Bridge_$4009", - "typeString": "contract Bridge" - } - ], - "id": 3605, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "17562:7:9", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_address_$", - "typeString": "type(address)" - }, - "typeName": { - "id": 3604, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "17562:7:9", - "typeDescriptions": {} - } - }, - "id": 3607, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "17562:13:9", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "17545:30:9", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } + "id": 1560, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 1558, + "name": "authorized", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1526, + "src": "2252:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 3601, - "name": "assert", + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 1559, + "name": "_authorized", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": -3, - "src": "17538:6:9", + "referencedDeclaration": 1549, + "src": "2265:11:4", "typeDescriptions": { - "typeIdentifier": "t_function_assert_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" + "typeIdentifier": "t_address", + "typeString": "address" } }, - "id": 3609, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "17538:38:9", - "tryCall": false, + "src": "2252:24:4", "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" + "typeIdentifier": "t_address", + "typeString": "address" } }, - "id": 3610, + "id": 1561, "nodeType": "ExpressionStatement", - "src": "17538:38:9" + "src": "2252:24:4" }, { - "condition": { - "commonType": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "id": 3620, + "expression": { + "id": 1566, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "leftExpression": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 3614, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "expression": { - "id": 3611, - "name": "_message", + "leftHandSide": { + "id": 1562, + "name": "bondToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1530, + "src": "2286:9:4", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$21865", + "typeString": "contract IERC20" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 1564, + "name": "_bondToken", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3590, - "src": "17591:8:9", + "referencedDeclaration": 1551, + "src": "2305:10:4", "typeDescriptions": { - "typeIdentifier": "t_struct$_Message_$4046_calldata_ptr", - "typeString": "struct IBridge.Message calldata" + "typeIdentifier": "t_address", + "typeString": "address" } - }, - "id": 3612, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "17600:5:9", - "memberName": "value", - "nodeType": "MemberAccess", - "referencedDeclaration": 4043, - "src": "17591:14:9", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "hexValue": "30", - "id": 3613, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "17609:1:9", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "17591:19:9", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "BinaryOperation", - "operator": "&&", - "rightExpression": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 3619, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "expression": { - "expression": { - "id": 3615, - "name": "_message", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3590, - "src": "17614:8:9", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Message_$4046_calldata_ptr", - "typeString": "struct IBridge.Message calldata" - } - }, - "id": 3616, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "17623:4:9", - "memberName": "data", - "nodeType": "MemberAccess", - "referencedDeclaration": 4045, - "src": "17614:13:9", - "typeDescriptions": { - "typeIdentifier": "t_bytes_calldata_ptr", - "typeString": "bytes calldata" + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" } - }, - "id": 3617, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "17628:6:9", - "memberName": "length", - "nodeType": "MemberAccess", - "src": "17614:20:9", + ], + "id": 1563, + "name": "IERC20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 21865, + "src": "2298:6:4", "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_type$_t_contract$_IERC20_$21865_$", + "typeString": "type(contract IERC20)" } }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "hexValue": "30", - "id": 3618, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "17638:1:9", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "17614:25:9", + "id": 1565, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2298:18:4", + "tryCall": false, "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" + "typeIdentifier": "t_contract$_IERC20_$21865", + "typeString": "contract IERC20" } }, - "src": "17591:48:9", + "src": "2286:30:4", "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" + "typeIdentifier": "t_contract$_IERC20_$21865", + "typeString": "contract IERC20" } }, - "id": 3623, - "nodeType": "IfStatement", - "src": "17587:65:9", - "trueBody": { - "expression": { - "hexValue": "74727565", - "id": 3621, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "17648:4:9", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "true" - }, - "functionReturnParameters": 3600, - "id": 3622, - "nodeType": "Return", - "src": "17641:11:9" - } + "id": 1567, + "nodeType": "ExpressionStatement", + "src": "2286:30:4" }, { - "condition": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 3626, + "expression": { + "id": 1570, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "leftExpression": { - "id": 3624, - "name": "_gasLimit", + "leftHandSide": { + "id": 1568, + "name": "minBond", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3594, - "src": "17667:9:9", + "referencedDeclaration": 1533, + "src": "2326:7:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "hexValue": "30", - "id": 3625, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "17680:1:9", + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 1569, + "name": "_minBond", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1553, + "src": "2336:8:4", "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } }, - "src": "17667:14:9", + "src": "2326:18:4", "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - "id": 3629, - "nodeType": "IfStatement", - "src": "17663:32:9", - "trueBody": { - "expression": { - "hexValue": "66616c7365", - "id": 3627, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "17690:5:9", + "id": 1571, + "nodeType": "ExpressionStatement", + "src": "2326:18:4" + }, + { + "expression": { + "id": 1574, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 1572, + "name": "withdrawalDelay", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1536, + "src": "2354:15:4", "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "false" + "typeIdentifier": "t_uint48", + "typeString": "uint48" + } }, - "functionReturnParameters": 3600, - "id": 3628, - "nodeType": "Return", - "src": "17683:12:9" - } + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 1573, + "name": "_withdrawalDelay", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1555, + "src": "2372:16:4", + "typeDescriptions": { + "typeIdentifier": "t_uint48", + "typeString": "uint48" + } + }, + "src": "2354:34:4", + "typeDescriptions": { + "typeIdentifier": "t_uint48", + "typeString": "uint48" + } + }, + "id": 1575, + "nodeType": "ExpressionStatement", + "src": "2354:34:4" + } + ] + }, + "documentation": { + "id": 1547, + "nodeType": "StructuredDocumentation", + "src": "1775:328:4", + "text": "@notice Constructor disables initializers for upgradeable pattern\n @param _authorized The address of the authorized contract (Inbox)\n @param _bondToken The ERC20 bond token address\n @param _minBond The minimum bond required\n @param _withdrawalDelay The delay period for withdrawals (e.g., 7 days)" + }, + "implemented": true, + "kind": "constructor", + "modifiers": [], + "name": "", + "nameLocation": "-1:-1:-1", + "parameters": { + "id": 1556, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1549, + "mutability": "mutable", + "name": "_authorized", + "nameLocation": "2137:11:4", + "nodeType": "VariableDeclaration", + "scope": 1577, + "src": "2129:19:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1548, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2129:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" }, { - "expression": { - "arguments": [ - { - "id": 3631, - "name": "_msgHash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3592, - "src": "17720:8:9", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "expression": { - "id": 3632, - "name": "_message", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3590, - "src": "17730:8:9", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Message_$4046_calldata_ptr", - "typeString": "struct IBridge.Message calldata" - } - }, - "id": 3633, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "17739:4:9", - "memberName": "from", - "nodeType": "MemberAccess", - "referencedDeclaration": 4031, - "src": "17730:13:9", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "expression": { - "id": 3634, - "name": "_message", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3590, - "src": "17745:8:9", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Message_$4046_calldata_ptr", - "typeString": "struct IBridge.Message calldata" - } - }, - "id": 3635, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "17754:10:9", - "memberName": "srcChainId", - "nodeType": "MemberAccess", - "referencedDeclaration": 4033, - "src": "17745:19:9", + "constant": false, + "id": 1551, + "mutability": "mutable", + "name": "_bondToken", + "nameLocation": "2166:10:4", + "nodeType": "VariableDeclaration", + "scope": 1577, + "src": "2158:18:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1550, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2158:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1553, + "mutability": "mutable", + "name": "_minBond", + "nameLocation": "2194:8:4", + "nodeType": "VariableDeclaration", + "scope": 1577, + "src": "2186:16:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1552, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2186:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1555, + "mutability": "mutable", + "name": "_withdrawalDelay", + "nameLocation": "2219:16:4", + "nodeType": "VariableDeclaration", + "scope": 1577, + "src": "2212:23:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint48", + "typeString": "uint48" + }, + "typeName": { + "id": 1554, + "name": "uint48", + "nodeType": "ElementaryTypeName", + "src": "2212:6:4", + "typeDescriptions": { + "typeIdentifier": "t_uint48", + "typeString": "uint48" + } + }, + "visibility": "internal" + } + ], + "src": "2119:122:4" + }, + "returnParameters": { + "id": 1557, + "nodeType": "ParameterList", + "parameters": [], + "src": "2242:0:4" + }, + "scope": 2034, + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "id": 1590, + "nodeType": "FunctionDefinition", + "src": "2503:92:4", + "nodes": [], + "body": { + "id": 1589, + "nodeType": "Block", + "src": "2554:41:4", + "nodes": [], + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 1586, + "name": "_owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1580, + "src": "2581:6:4", "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" + "typeIdentifier": "t_address", + "typeString": "address" } } ], "expression": { "argumentTypes": [ - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, { "typeIdentifier": "t_address", "typeString": "address" - }, - { - "typeIdentifier": "t_uint64", - "typeString": "uint64" } ], - "id": 3630, - "name": "_storeContext", + "id": 1585, + "name": "__Essential_init", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3733, - "src": "17706:13:9", + "referencedDeclaration": 4585, + "src": "2564:16:4", "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$_t_uint64_$returns$__$", - "typeString": "function (bytes32,address,uint64)" + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" } }, - "id": 3636, + "id": 1587, "isConstant": false, "isLValue": false, "isPure": false, @@ -18912,488 +3026,278 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "17706:59:9", + "src": "2564:24:4", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 3637, + "id": 1588, "nodeType": "ExpressionStatement", - "src": "17706:59:9" + "src": "2564:24:4" + } + ] + }, + "documentation": { + "id": 1578, + "nodeType": "StructuredDocumentation", + "src": "2401:97:4", + "text": "@notice Initializes the BondManager contract\n @param _owner The owner of this contract" + }, + "functionSelector": "19ab453c", + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 1583, + "kind": "modifierInvocation", + "modifierName": { + "id": 1582, + "name": "initializer", + "nameLocations": [ + "2542:11:4" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 11650, + "src": "2542:11:4" }, + "nodeType": "ModifierInvocation", + "src": "2542:11:4" + } + ], + "name": "init", + "nameLocation": "2512:4:4", + "parameters": { + "id": 1581, + "nodeType": "ParameterList", + "parameters": [ { - "assignments": [ - 3639 - ], - "declarations": [ - { - "constant": false, - "id": 3639, - "mutability": "mutable", - "name": "to", - "nameLocation": "17784:2:9", - "nodeType": "VariableDeclaration", - "scope": 3683, - "src": "17776:10:9", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 3638, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "17776:7:9", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - } - ], - "id": 3642, - "initialValue": { - "expression": { - "id": 3640, - "name": "_message", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3590, - "src": "17789:8:9", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Message_$4046_calldata_ptr", - "typeString": "struct IBridge.Message calldata" - } - }, - "id": 3641, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "17798:2:9", - "memberName": "to", - "nodeType": "MemberAccess", - "referencedDeclaration": 4041, - "src": "17789:11:9", + "constant": false, + "id": 1580, + "mutability": "mutable", + "name": "_owner", + "nameLocation": "2525:6:4", + "nodeType": "VariableDeclaration", + "scope": 1590, + "src": "2517:14:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1579, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2517:7:4", + "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "nodeType": "VariableDeclarationStatement", - "src": "17776:24:9" - }, + "visibility": "internal" + } + ], + "src": "2516:16:4" + }, + "returnParameters": { + "id": 1584, + "nodeType": "ParameterList", + "parameters": [], + "src": "2554:0:4" + }, + "scope": 2034, + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "id": 1621, + "nodeType": "FunctionDefinition", + "src": "2803:326:4", + "nodes": [], + "body": { + "id": 1620, + "nodeType": "Block", + "src": "2968:161:4", + "nodes": [], + "statements": [ { - "assignments": [ - 3644 - ], - "declarations": [ - { - "constant": false, - "id": 3644, - "mutability": "mutable", - "name": "value", - "nameLocation": "17818:5:9", - "nodeType": "VariableDeclaration", - "scope": 3683, - "src": "17810:13:9", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 3643, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "17810:7:9", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "id": 3647, - "initialValue": { - "expression": { - "id": 3645, - "name": "_message", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3590, - "src": "17826:8:9", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Message_$4046_calldata_ptr", - "typeString": "struct IBridge.Message calldata" - } - }, - "id": 3646, + "expression": { + "id": 1608, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "17835:5:9", - "memberName": "value", - "nodeType": "MemberAccess", - "referencedDeclaration": 4043, - "src": "17826:14:9", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "17810:30:9" - }, - { - "assignments": [ - 3649 - ], - "declarations": [ - { - "constant": false, - "id": 3649, - "mutability": "mutable", - "name": "data", - "nameLocation": "17863:4:9", - "nodeType": "VariableDeclaration", - "scope": 3683, - "src": "17850:17:9", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes" - }, - "typeName": { - "id": 3648, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "17850:5:9", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes" - } - }, - "visibility": "internal" - } - ], - "id": 3652, - "initialValue": { - "expression": { - "id": 3650, - "name": "_message", + "leftHandSide": { + "id": 1603, + "name": "amountDebited_", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3590, - "src": "17870:8:9", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Message_$4046_calldata_ptr", - "typeString": "struct IBridge.Message calldata" - } - }, - "id": 3651, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "17879:4:9", - "memberName": "data", - "nodeType": "MemberAccess", - "referencedDeclaration": 4045, - "src": "17870:13:9", - "typeDescriptions": { - "typeIdentifier": "t_bytes_calldata_ptr", - "typeString": "bytes calldata" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "17850:33:9" - }, - { - "assignments": [ - 3654 - ], - "declarations": [ - { - "constant": false, - "id": 3654, - "mutability": "mutable", - "name": "gasLeft", - "nameLocation": "17901:7:9", - "nodeType": "VariableDeclaration", - "scope": 3683, - "src": "17893:15:9", - "stateVariable": false, - "storageLocation": "default", + "referencedDeclaration": 1601, + "src": "2978:14:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" - }, - "typeName": { - "id": 3653, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "17893:7:9", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "id": 3655, - "nodeType": "VariableDeclarationStatement", - "src": "17893:15:9" - }, - { - "AST": { - "nativeSrc": "17928:127:9", - "nodeType": "YulBlock", - "src": "17928:127:9", - "statements": [ - { - "nativeSrc": "17942:74:9", - "nodeType": "YulAssignment", - "src": "17942:74:9", - "value": { - "arguments": [ - { - "name": "_gasLimit", - "nativeSrc": "17959:9:9", - "nodeType": "YulIdentifier", - "src": "17959:9:9" - }, - { - "name": "to", - "nativeSrc": "17970:2:9", - "nodeType": "YulIdentifier", - "src": "17970:2:9" - }, - { - "name": "value", - "nativeSrc": "17974:5:9", - "nodeType": "YulIdentifier", - "src": "17974:5:9" - }, - { - "arguments": [ - { - "name": "data", - "nativeSrc": "17985:4:9", - "nodeType": "YulIdentifier", - "src": "17985:4:9" - }, - { - "kind": "number", - "nativeSrc": "17991:4:9", - "nodeType": "YulLiteral", - "src": "17991:4:9", - "type": "", - "value": "0x20" - } - ], - "functionName": { - "name": "add", - "nativeSrc": "17981:3:9", - "nodeType": "YulIdentifier", - "src": "17981:3:9" - }, - "nativeSrc": "17981:15:9", - "nodeType": "YulFunctionCall", - "src": "17981:15:9" - }, - { - "arguments": [ - { - "name": "data", - "nativeSrc": "18004:4:9", - "nodeType": "YulIdentifier", - "src": "18004:4:9" - } - ], - "functionName": { - "name": "mload", - "nativeSrc": "17998:5:9", - "nodeType": "YulIdentifier", - "src": "17998:5:9" - }, - "nativeSrc": "17998:11:9", - "nodeType": "YulFunctionCall", - "src": "17998:11:9" - }, - { - "kind": "number", - "nativeSrc": "18011:1:9", - "nodeType": "YulLiteral", - "src": "18011:1:9", - "type": "", - "value": "0" - }, - { - "kind": "number", - "nativeSrc": "18014:1:9", - "nodeType": "YulLiteral", - "src": "18014:1:9", - "type": "", - "value": "0" - } - ], - "functionName": { - "name": "call", - "nativeSrc": "17954:4:9", - "nodeType": "YulIdentifier", - "src": "17954:4:9" - }, - "nativeSrc": "17954:62:9", - "nodeType": "YulFunctionCall", - "src": "17954:62:9" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 1605, + "name": "_address", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1593, + "src": "3006:8:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } }, - "variableNames": [ - { - "name": "success_", - "nativeSrc": "17942:8:9", - "nodeType": "YulIdentifier", - "src": "17942:8:9" + { + "id": 1606, + "name": "_bond", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1595, + "src": "3016:5:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } - ] - }, - { - "nativeSrc": "18029:16:9", - "nodeType": "YulAssignment", - "src": "18029:16:9", - "value": { - "arguments": [], - "functionName": { - "name": "gas", - "nativeSrc": "18040:3:9", - "nodeType": "YulIdentifier", - "src": "18040:3:9" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" }, - "nativeSrc": "18040:5:9", - "nodeType": "YulFunctionCall", - "src": "18040:5:9" - }, - "variableNames": [ { - "name": "gasLeft", - "nativeSrc": "18029:7:9", - "nodeType": "YulIdentifier", - "src": "18029:7:9" + "typeIdentifier": "t_uint256", + "typeString": "uint256" } - ] + ], + "id": 1604, + "name": "_debitBond", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1947, + "src": "2995:10:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (address,uint256) returns (uint256)" + } + }, + "id": 1607, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2995:27:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } - ] - }, - "evmVersion": "shanghai", - "externalReferences": [ - { - "declaration": 3594, - "isOffset": false, - "isSlot": false, - "src": "17959:9:9", - "valueSize": 1 - }, - { - "declaration": 3649, - "isOffset": false, - "isSlot": false, - "src": "17985:4:9", - "valueSize": 1 - }, - { - "declaration": 3649, - "isOffset": false, - "isSlot": false, - "src": "18004:4:9", - "valueSize": 1 - }, - { - "declaration": 3654, - "isOffset": false, - "isSlot": false, - "src": "18029:7:9", - "valueSize": 1 - }, - { - "declaration": 3599, - "isOffset": false, - "isSlot": false, - "src": "17942:8:9", - "valueSize": 1 }, - { - "declaration": 3639, - "isOffset": false, - "isSlot": false, - "src": "17970:2:9", - "valueSize": 1 - }, - { - "declaration": 3644, - "isOffset": false, - "isSlot": false, - "src": "17974:5:9", - "valueSize": 1 + "src": "2978:44:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } - ], - "id": 3656, - "nodeType": "InlineAssembly", - "src": "17919:136:9" + }, + "id": 1609, + "nodeType": "ExpressionStatement", + "src": "2978:44:4" }, { "condition": { - "id": 3657, - "name": "_shouldCheckForwardedGas", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3596, - "src": "18069:24:9", + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1612, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 1610, + "name": "amountDebited_", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1601, + "src": "3036:14:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "hexValue": "30", + "id": 1611, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3053:1:4", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "3036:18:4", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 3664, + "id": 1619, "nodeType": "IfStatement", - "src": "18065:93:9", + "src": "3032:91:4", "trueBody": { - "id": 3663, + "id": 1618, "nodeType": "Block", - "src": "18095:63:9", + "src": "3056:67:4", "statements": [ { - "expression": { + "eventCall": { "arguments": [ { - "id": 3659, - "name": "gasLeft", + "id": 1614, + "name": "_address", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3654, - "src": "18128:7:9", + "referencedDeclaration": 1593, + "src": "3087:8:4", "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_address", + "typeString": "address" } }, { - "id": 3660, - "name": "_gasLimit", + "id": 1615, + "name": "amountDebited_", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3594, - "src": "18137:9:9", + "referencedDeclaration": 1601, + "src": "3097:14:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -19403,404 +3307,137 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 3658, - "name": "_checkForwardedGas", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3976, - "src": "18109:18:9", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$__$", - "typeString": "function (uint256,uint256) pure" - } - }, - "id": 3661, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "18109:38:9", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 3662, - "nodeType": "ExpressionStatement", - "src": "18109:38:9" - } - ] - } - }, - { - "expression": { - "arguments": [ - { - "arguments": [ - { - "id": 3668, - "name": "_PLACEHOLDER", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2527, - "src": "18189:12:9", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 3667, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "18181:7:9", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_bytes32_$", - "typeString": "type(bytes32)" - }, - "typeName": { - "id": 3666, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "18181:7:9", - "typeDescriptions": {} - } - }, - "id": 3669, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "typeConversion", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "18181:21:9", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "arguments": [ - { - "arguments": [ - { - "id": 3674, - "name": "_PLACEHOLDER", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2527, - "src": "18220:12:9", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 3673, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "18212:7:9", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_uint160_$", - "typeString": "type(uint160)" - }, - "typeName": { - "id": 3672, - "name": "uint160", - "nodeType": "ElementaryTypeName", - "src": "18212:7:9", - "typeDescriptions": {} - } - }, - "id": 3675, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "typeConversion", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "18212:21:9", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - ], - "id": 3671, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "18204:7:9", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_address_$", - "typeString": "type(address)" - }, - "typeName": { - "id": 3670, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "18204:7:9", - "typeDescriptions": {} - } - }, - "id": 3676, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "typeConversion", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "18204:30:9", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "arguments": [ - { - "id": 3679, - "name": "_PLACEHOLDER", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2527, - "src": "18243:12:9", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1613, + "name": "BondDebited", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2050, + "src": "3075:11:4", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" } - ], - "id": 3678, + }, + "id": 1616, "isConstant": false, "isLValue": false, - "isPure": true, + "isPure": false, + "kind": "functionCall", "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "18236:6:9", + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3075:37:4", + "tryCall": false, "typeDescriptions": { - "typeIdentifier": "t_type$_t_uint64_$", - "typeString": "type(uint64)" - }, - "typeName": { - "id": 3677, - "name": "uint64", - "nodeType": "ElementaryTypeName", - "src": "18236:6:9", - "typeDescriptions": {} + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" } }, - "id": 3680, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "typeConversion", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "18236:20:9", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - ], - "id": 3665, - "name": "_storeContext", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3733, - "src": "18167:13:9", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$_t_uint64_$returns$__$", - "typeString": "function (bytes32,address,uint64)" + "id": 1617, + "nodeType": "EmitStatement", + "src": "3070:42:4" } - }, - "id": 3681, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "18167:90:9", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 3682, - "nodeType": "ExpressionStatement", - "src": "18167:90:9" + ] + } } ] }, + "baseFunctions": [ + 2102 + ], "documentation": { - "id": 3587, + "id": 1591, "nodeType": "StructuredDocumentation", - "src": "16844:466:9", - "text": "@notice Invokes a call message on the Bridge.\n @param _message The call message to be invoked.\n @param _msgHash The hash of the message.\n @param _shouldCheckForwardedGas True to check gasleft is sufficient for target function\n invocation.\n @return success_ A boolean value indicating whether the message call was successful.\n @dev This function updates the context in the state before and after the\n message call." + "src": "2770:28:4", + "text": "@inheritdoc IBondManager" }, + "functionSelector": "391396de", "implemented": true, "kind": "function", - "modifiers": [], - "name": "_invokeMessageCall", - "nameLocation": "17324:18:9", - "parameters": { - "id": 3597, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 3590, - "mutability": "mutable", - "name": "_message", - "nameLocation": "17369:8:9", - "nodeType": "VariableDeclaration", - "scope": 3684, - "src": "17352:25:9", - "stateVariable": false, - "storageLocation": "calldata", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Message_$4046_calldata_ptr", - "typeString": "struct IBridge.Message" - }, - "typeName": { - "id": 3589, - "nodeType": "UserDefinedTypeName", - "pathNode": { - "id": 3588, - "name": "Message", - "nameLocations": [ - "17352:7:9" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 4046, - "src": "17352:7:9" - }, - "referencedDeclaration": 4046, - "src": "17352:7:9", + "modifiers": [ + { + "arguments": [ + { + "id": 1598, + "name": "authorized", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1526, + "src": "2911:10:4", "typeDescriptions": { - "typeIdentifier": "t_struct$_Message_$4046_storage_ptr", - "typeString": "struct IBridge.Message" + "typeIdentifier": "t_address", + "typeString": "address" } - }, - "visibility": "internal" + } + ], + "id": 1599, + "kind": "modifierInvocation", + "modifierName": { + "id": 1597, + "name": "onlyFrom", + "nameLocations": [ + "2902:8:4" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 4456, + "src": "2902:8:4" }, + "nodeType": "ModifierInvocation", + "src": "2902:20:4" + } + ], + "name": "debitBond", + "nameLocation": "2812:9:4", + "parameters": { + "id": 1596, + "nodeType": "ParameterList", + "parameters": [ { "constant": false, - "id": 3592, + "id": 1593, "mutability": "mutable", - "name": "_msgHash", - "nameLocation": "17395:8:9", + "name": "_address", + "nameLocation": "2839:8:4", "nodeType": "VariableDeclaration", - "scope": 3684, - "src": "17387:16:9", + "scope": 1621, + "src": "2831:16:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" + "typeIdentifier": "t_address", + "typeString": "address" }, "typeName": { - "id": 3591, - "name": "bytes32", + "id": 1592, + "name": "address", "nodeType": "ElementaryTypeName", - "src": "17387:7:9", + "src": "2831:7:4", + "stateMutability": "nonpayable", "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" + "typeIdentifier": "t_address", + "typeString": "address" } }, "visibility": "internal" }, { "constant": false, - "id": 3594, + "id": 1595, "mutability": "mutable", - "name": "_gasLimit", - "nameLocation": "17421:9:9", + "name": "_bond", + "nameLocation": "2865:5:4", "nodeType": "VariableDeclaration", - "scope": 3684, - "src": "17413:17:9", + "scope": 1621, + "src": "2857:13:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -19808,324 +3445,121 @@ "typeString": "uint256" }, "typeName": { - "id": 3593, + "id": 1594, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "17413:7:9", + "src": "2857:7:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" - }, - { - "constant": false, - "id": 3596, - "mutability": "mutable", - "name": "_shouldCheckForwardedGas", - "nameLocation": "17445:24:9", - "nodeType": "VariableDeclaration", - "scope": 3684, - "src": "17440:29:9", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 3595, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "17440:4:9", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "visibility": "internal" } ], - "src": "17342:133:9" + "src": "2821:55:4" }, "returnParameters": { - "id": 3600, + "id": 1602, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 3599, + "id": 1601, "mutability": "mutable", - "name": "success_", - "nameLocation": "17514:8:9", + "name": "amountDebited_", + "nameLocation": "2948:14:4", "nodeType": "VariableDeclaration", - "scope": 3684, - "src": "17509:13:9", + "scope": 1621, + "src": "2940:22:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" + "typeIdentifier": "t_uint256", + "typeString": "uint256" }, "typeName": { - "id": 3598, - "name": "bool", + "id": 1600, + "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "17509:4:9", + "src": "2940:7:4", "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, "visibility": "internal" } ], - "src": "17508:15:9" + "src": "2939:24:4" }, - "scope": 4009, + "scope": 2034, "stateMutability": "nonpayable", "virtual": false, - "visibility": "private" + "visibility": "external" }, { - "id": 3714, + "id": 1638, "nodeType": "FunctionDefinition", - "src": "18568:251:9", + "src": "3168:128:4", "nodes": [], "body": { - "id": 3713, + "id": 1637, "nodeType": "Block", - "src": "18640:179:9", + "src": "3251:45:4", "nodes": [], "statements": [ - { - "condition": { - "commonType": { - "typeIdentifier": "t_enum$_Status_$4018", - "typeString": "enum IBridge.Status" - }, - "id": 3697, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "baseExpression": { - "id": 3693, - "name": "messageStatus", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2541, - "src": "18654:13:9", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_enum$_Status_$4018_$", - "typeString": "mapping(bytes32 => enum IBridge.Status)" - } - }, - "id": 3695, - "indexExpression": { - "id": 3694, - "name": "_msgHash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3687, - "src": "18668:8:9", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "18654:23:9", - "typeDescriptions": { - "typeIdentifier": "t_enum$_Status_$4018", - "typeString": "enum IBridge.Status" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "id": 3696, - "name": "_status", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3690, - "src": "18681:7:9", - "typeDescriptions": { - "typeIdentifier": "t_enum$_Status_$4018", - "typeString": "enum IBridge.Status" - } - }, - "src": "18654:34:9", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 3701, - "nodeType": "IfStatement", - "src": "18650:65:9", - "trueBody": { - "errorCall": { - "arguments": [], - "expression": { - "argumentTypes": [], - "id": 3698, - "name": "B_INVALID_STATUS", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2565, - "src": "18697:16:9", - "typeDescriptions": { - "typeIdentifier": "t_function_error_pure$__$returns$_t_error_$", - "typeString": "function () pure returns (error)" - } - }, - "id": 3699, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "18697:18:9", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_error", - "typeString": "error" - } - }, - "id": 3700, - "nodeType": "RevertStatement", - "src": "18690:25:9" - } - }, { "expression": { - "id": 3706, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "baseExpression": { - "id": 3702, - "name": "messageStatus", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2541, - "src": "18725:13:9", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_enum$_Status_$4018_$", - "typeString": "mapping(bytes32 => enum IBridge.Status)" - } - }, - "id": 3704, - "indexExpression": { - "id": 3703, - "name": "_msgHash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3687, - "src": "18739:8:9", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "18725:23:9", - "typeDescriptions": { - "typeIdentifier": "t_enum$_Status_$4018", - "typeString": "enum IBridge.Status" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "id": 3705, - "name": "_status", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3690, - "src": "18751:7:9", - "typeDescriptions": { - "typeIdentifier": "t_enum$_Status_$4018", - "typeString": "enum IBridge.Status" - } - }, - "src": "18725:33:9", - "typeDescriptions": { - "typeIdentifier": "t_enum$_Status_$4018", - "typeString": "enum IBridge.Status" - } - }, - "id": 3707, - "nodeType": "ExpressionStatement", - "src": "18725:33:9" - }, - { - "eventCall": { "arguments": [ { - "id": 3709, - "name": "_msgHash", + "id": 1633, + "name": "_address", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3687, - "src": "18794:8:9", + "referencedDeclaration": 1624, + "src": "3273:8:4", "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" + "typeIdentifier": "t_address", + "typeString": "address" } }, { - "id": 3710, - "name": "_status", + "id": 1634, + "name": "_bond", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3690, - "src": "18804:7:9", + "referencedDeclaration": 1626, + "src": "3283:5:4", "typeDescriptions": { - "typeIdentifier": "t_enum$_Status_$4018", - "typeString": "enum IBridge.Status" + "typeIdentifier": "t_uint256", + "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" + "typeIdentifier": "t_address", + "typeString": "address" }, { - "typeIdentifier": "t_enum$_Status_$4018", - "typeString": "enum IBridge.Status" + "typeIdentifier": "t_uint256", + "typeString": "uint256" } ], - "id": 3708, - "name": "MessageStatusChanged", + "id": 1632, + "name": "_creditBond", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 4069, - "src": "18773:20:9", + "referencedDeclaration": 1977, + "src": "3261:11:4", "typeDescriptions": { - "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_enum$_Status_$4018_$returns$__$", - "typeString": "function (bytes32,enum IBridge.Status)" + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" } }, - "id": 3711, + "id": 1635, "isConstant": false, "isLValue": false, "isPure": false, @@ -20134,288 +3568,234 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "18773:39:9", + "src": "3261:28:4", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 3712, - "nodeType": "EmitStatement", - "src": "18768:44:9" + "id": 1636, + "nodeType": "ExpressionStatement", + "src": "3261:28:4" } ] }, + "baseFunctions": [ + 2110 + ], "documentation": { - "id": 3685, + "id": 1622, "nodeType": "StructuredDocumentation", - "src": "18270:293:9", - "text": "@notice Updates the status of a bridge message.\n @dev If the new status is different from the current status in the\n mapping, the status is updated and an event is emitted.\n @param _msgHash The hash of the message.\n @param _status The new status of the message." + "src": "3135:28:4", + "text": "@inheritdoc IBondManager" }, + "functionSelector": "be32d1f4", "implemented": true, "kind": "function", - "modifiers": [], - "name": "_updateMessageStatus", - "nameLocation": "18577:20:9", + "modifiers": [ + { + "arguments": [ + { + "id": 1629, + "name": "authorized", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1526, + "src": "3239:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "id": 1630, + "kind": "modifierInvocation", + "modifierName": { + "id": 1628, + "name": "onlyFrom", + "nameLocations": [ + "3230:8:4" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 4456, + "src": "3230:8:4" + }, + "nodeType": "ModifierInvocation", + "src": "3230:20:4" + } + ], + "name": "creditBond", + "nameLocation": "3177:10:4", "parameters": { - "id": 3691, + "id": 1627, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 3687, + "id": 1624, "mutability": "mutable", - "name": "_msgHash", - "nameLocation": "18606:8:9", + "name": "_address", + "nameLocation": "3196:8:4", "nodeType": "VariableDeclaration", - "scope": 3714, - "src": "18598:16:9", + "scope": 1638, + "src": "3188:16:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" + "typeIdentifier": "t_address", + "typeString": "address" }, "typeName": { - "id": 3686, - "name": "bytes32", + "id": 1623, + "name": "address", "nodeType": "ElementaryTypeName", - "src": "18598:7:9", + "src": "3188:7:4", + "stateMutability": "nonpayable", "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" + "typeIdentifier": "t_address", + "typeString": "address" } }, "visibility": "internal" }, { "constant": false, - "id": 3690, + "id": 1626, "mutability": "mutable", - "name": "_status", - "nameLocation": "18623:7:9", + "name": "_bond", + "nameLocation": "3214:5:4", "nodeType": "VariableDeclaration", - "scope": 3714, - "src": "18616:14:9", + "scope": 1638, + "src": "3206:13:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_enum$_Status_$4018", - "typeString": "enum IBridge.Status" + "typeIdentifier": "t_uint256", + "typeString": "uint256" }, "typeName": { - "id": 3689, - "nodeType": "UserDefinedTypeName", - "pathNode": { - "id": 3688, - "name": "Status", - "nameLocations": [ - "18616:6:9" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 4018, - "src": "18616:6:9" - }, - "referencedDeclaration": 4018, - "src": "18616:6:9", + "id": 1625, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3206:7:4", "typeDescriptions": { - "typeIdentifier": "t_enum$_Status_$4018", - "typeString": "enum IBridge.Status" + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, "visibility": "internal" } ], - "src": "18597:34:9" + "src": "3187:33:4" }, "returnParameters": { - "id": 3692, + "id": 1631, "nodeType": "ParameterList", "parameters": [], - "src": "18640:0:9" + "src": "3251:0:4" }, - "scope": 4009, + "scope": 2034, "stateMutability": "nonpayable", "virtual": false, - "visibility": "private" + "visibility": "external" }, { - "id": 3733, + "id": 1651, "nodeType": "FunctionDefinition", - "src": "18998:155:9", + "src": "3335:123:4", "nodes": [], "body": { - "id": 3732, + "id": 1650, "nodeType": "Block", - "src": "19091:62:9", + "src": "3409:49:4", "nodes": [], "statements": [ { "expression": { - "id": 3730, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 3724, - "name": "__ctx", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2545, - "src": "19101:5:9", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Context_$4053_storage", - "typeString": "struct IBridge.Context storage ref" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "arguments": [ - { - "id": 3726, - "name": "_msgHash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3717, - "src": "19117:8:9", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "id": 3727, - "name": "_from", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3719, - "src": "19127:5:9", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "id": 3728, - "name": "_srcChainId", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3721, - "src": "19134:11:9", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - ], - "id": 3725, - "name": "Context", + "arguments": [ + { + "id": 1647, + "name": "_address", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 4053, - "src": "19109:7:9", + "referencedDeclaration": 1641, + "src": "3442:8:4", "typeDescriptions": { - "typeIdentifier": "t_type$_t_struct$_Context_$4053_storage_ptr_$", - "typeString": "type(struct IBridge.Context storage pointer)" + "typeIdentifier": "t_address", + "typeString": "address" } - }, - "id": 3729, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "structConstructorCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "19109:37:9", - "tryCall": false, + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1646, + "name": "_getBondBalance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2021, + "src": "3426:15:4", "typeDescriptions": { - "typeIdentifier": "t_struct$_Context_$4053_memory_ptr", - "typeString": "struct IBridge.Context memory" + "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_uint256_$", + "typeString": "function (address) view returns (uint256)" } }, - "src": "19101:45:9", + "id": 1648, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3426:25:4", + "tryCall": false, "typeDescriptions": { - "typeIdentifier": "t_struct$_Context_$4053_storage", - "typeString": "struct IBridge.Context storage ref" + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - "id": 3731, - "nodeType": "ExpressionStatement", - "src": "19101:45:9" + "functionReturnParameters": 1645, + "id": 1649, + "nodeType": "Return", + "src": "3419:32:4" } ] }, + "baseFunctions": [ + 2118 + ], "documentation": { - "id": 3715, + "id": 1639, "nodeType": "StructuredDocumentation", - "src": "18825:168:9", - "text": "@notice Stores the call context\n @param _msgHash The message hash.\n @param _from The sender's address.\n @param _srcChainId The source chain ID." + "src": "3302:28:4", + "text": "@inheritdoc IBondManager" }, + "functionSelector": "33613cbe", "implemented": true, "kind": "function", "modifiers": [], - "name": "_storeContext", - "nameLocation": "19007:13:9", + "name": "getBondBalance", + "nameLocation": "3344:14:4", "parameters": { - "id": 3722, + "id": 1642, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 3717, - "mutability": "mutable", - "name": "_msgHash", - "nameLocation": "19029:8:9", - "nodeType": "VariableDeclaration", - "scope": 3733, - "src": "19021:16:9", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 3716, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "19021:7:9", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 3719, + "id": 1641, "mutability": "mutable", - "name": "_from", - "nameLocation": "19047:5:9", + "name": "_address", + "nameLocation": "3367:8:4", "nodeType": "VariableDeclaration", - "scope": 3733, - "src": "19039:13:9", + "scope": 1651, + "src": "3359:16:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -20423,10 +3803,10 @@ "typeString": "address" }, "typeName": { - "id": 3718, + "id": 1640, "name": "address", "nodeType": "ElementaryTypeName", - "src": "19039:7:9", + "src": "3359:7:4", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -20434,358 +3814,141 @@ } }, "visibility": "internal" - }, + } + ], + "src": "3358:18:4" + }, + "returnParameters": { + "id": 1645, + "nodeType": "ParameterList", + "parameters": [ { "constant": false, - "id": 3721, + "id": 1644, "mutability": "mutable", - "name": "_srcChainId", - "nameLocation": "19061:11:9", + "name": "", + "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", - "scope": 3733, - "src": "19054:18:9", + "scope": 1651, + "src": "3400:7:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" + "typeIdentifier": "t_uint256", + "typeString": "uint256" }, "typeName": { - "id": 3720, - "name": "uint64", + "id": 1643, + "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "19054:6:9", + "src": "3400:7:4", "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, "visibility": "internal" } ], - "src": "19020:53:9" - }, - "returnParameters": { - "id": 3723, - "nodeType": "ParameterList", - "parameters": [], - "src": "19091:0:9" + "src": "3399:9:4" }, - "scope": 4009, - "stateMutability": "nonpayable", - "virtual": true, - "visibility": "internal" + "scope": 2034, + "stateMutability": "view", + "virtual": false, + "visibility": "external" }, { - "id": 3779, + "id": 1684, "nodeType": "FunctionDefinition", - "src": "19512:536:9", - "nodes": [], - "body": { - "id": 3778, - "nodeType": "Block", - "src": "19726:322:9", - "nodes": [], - "statements": [ - { - "clauses": [ - { - "block": { - "id": 3770, - "nodeType": "Block", - "src": "19921:59:9", - "statements": [ - { - "expression": { - "id": 3768, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 3763, - "name": "numCacheOps_", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3746, - "src": "19935:12:9", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "arguments": [ - { - "id": 3766, - "name": "numCacheOps", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3761, - "src": "19957:11:9", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 3765, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "19950:6:9", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_uint32_$", - "typeString": "type(uint32)" - }, - "typeName": { - "id": 3764, - "name": "uint32", - "nodeType": "ElementaryTypeName", - "src": "19950:6:9", - "typeDescriptions": {} - } - }, - "id": 3767, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "19950:19:9", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - "src": "19935:34:9", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - "id": 3769, - "nodeType": "ExpressionStatement", - "src": "19935:34:9" - } - ] - }, - "errorName": "", - "id": 3771, - "nodeType": "TryCatchClause", - "parameters": { - "id": 3762, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 3761, - "mutability": "mutable", - "name": "numCacheOps", - "nameLocation": "19899:11:9", - "nodeType": "VariableDeclaration", - "scope": 3771, - "src": "19891:19:9", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 3760, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "19891:7:9", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "19877:43:9" - }, - "src": "19869:111:9" - }, - { - "block": { - "id": 3775, - "nodeType": "Block", - "src": "19987:55:9", - "statements": [ - { - "errorCall": { - "arguments": [], - "expression": { - "argumentTypes": [], - "id": 3772, - "name": "B_SIGNAL_NOT_RECEIVED", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2579, - "src": "20008:21:9", - "typeDescriptions": { - "typeIdentifier": "t_function_error_pure$__$returns$_t_error_$", - "typeString": "function () pure returns (error)" - } - }, - "id": 3773, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "20008:23:9", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_error", - "typeString": "error" - } - }, - "id": 3774, - "nodeType": "RevertStatement", - "src": "20001:30:9" - } - ] - }, - "errorName": "", - "id": 3776, - "nodeType": "TryCatchClause", - "src": "19981:61:9" - } - ], - "externalCall": { + "src": "3497:228:4", + "nodes": [], + "body": { + "id": 1683, + "nodeType": "Block", + "src": "3553:172:4", + "nodes": [], + "statements": [ + { + "expression": { "arguments": [ { - "id": 3750, - "name": "_chainId", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3741, - "src": "19788:8:9", + "expression": { + "id": 1662, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "3590:3:4", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1663, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3594:6:4", + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "3590:10:4", "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" + "typeIdentifier": "t_address", + "typeString": "address" } }, { "arguments": [ { - "id": 3752, - "name": "_chainId", + "id": 1666, + "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3741, - "src": "19806:8:9", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - }, - { - "expression": { - "id": 3753, - "name": "LibNames", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5845, - "src": "19816:8:9", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_LibNames_$5845_$", - "typeString": "type(library LibNames)" - } - }, - "id": 3754, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "memberLocation": "19825:8:9", - "memberName": "B_BRIDGE", - "nodeType": "MemberAccess", - "referencedDeclaration": 5796, - "src": "19816:17:9", + "referencedDeclaration": -28, + "src": "3610:4:4", "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" + "typeIdentifier": "t_contract$_BondManager_$2034", + "typeString": "contract BondManager" } - }, - { - "hexValue": "66616c7365", - "id": 3755, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "19835:5:9", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "false" } ], "expression": { "argumentTypes": [ { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_bool", - "typeString": "bool" + "typeIdentifier": "t_contract$_BondManager_$2034", + "typeString": "contract BondManager" } ], - "id": 3751, - "name": "resolve", - "nodeType": "Identifier", - "overloadedDeclarations": [ - 4899, - 4921 - ], - "referencedDeclaration": 4899, - "src": "19798:7:9", + "id": 1665, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "3602:7:4", "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_uint64_$_t_bytes32_$_t_bool_$returns$_t_address_$", - "typeString": "function (uint64,bytes32,bool) view returns (address)" + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 1664, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3602:7:4", + "typeDescriptions": {} } }, - "id": 3756, + "id": 1667, "isConstant": false, "isLValue": false, "isPure": false, - "kind": "functionCall", + "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "19798:43:9", + "src": "3602:13:4", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", @@ -20793,77 +3956,61 @@ } }, { - "id": 3757, - "name": "_signal", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3739, - "src": "19843:7:9", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "id": 3758, - "name": "_proof", + "id": 1668, + "name": "_amount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3743, - "src": "19852:6:9", + "referencedDeclaration": 1654, + "src": "3617:7:4", "typeDescriptions": { - "typeIdentifier": "t_bytes_calldata_ptr", - "typeString": "bytes calldata" + "typeIdentifier": "t_uint256", + "typeString": "uint256" } } ], "expression": { "argumentTypes": [ - { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - }, { "typeIdentifier": "t_address", "typeString": "address" }, { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" + "typeIdentifier": "t_address", + "typeString": "address" }, { - "typeIdentifier": "t_bytes_calldata_ptr", - "typeString": "bytes calldata" + "typeIdentifier": "t_uint256", + "typeString": "uint256" } ], "expression": { - "id": 3748, - "name": "_signalService", + "id": 1659, + "name": "bondToken", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3737, - "src": "19740:14:9", + "referencedDeclaration": 1530, + "src": "3563:9:4", "typeDescriptions": { - "typeIdentifier": "t_contract$_ISignalService_$6277", - "typeString": "contract ISignalService" + "typeIdentifier": "t_contract$_IERC20_$21865", + "typeString": "contract IERC20" } }, - "id": 3749, + "id": 1661, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "19755:19:9", - "memberName": "proveSignalReceived", + "memberLocation": "3573:16:4", + "memberName": "safeTransferFrom", "nodeType": "MemberAccess", - "referencedDeclaration": 6246, - "src": "19740:34:9", + "referencedDeclaration": 21986, + "src": "3563:26:4", "typeDescriptions": { - "typeIdentifier": "t_function_external_nonpayable$_t_uint64_$_t_address_$_t_bytes32_$_t_bytes_memory_ptr_$returns$_t_uint256_$", - "typeString": "function (uint64,address,bytes32,bytes memory) external returns (uint256)" + "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$21865_$_t_address_$_t_address_$_t_uint256_$returns$__$attached_to$_t_contract$_IERC20_$21865_$", + "typeString": "function (contract IERC20,address,address,uint256)" } }, - "id": 3759, + "id": 1669, "isConstant": false, "isLValue": false, "isPure": false, @@ -20872,487 +4019,530 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "19740:128:9", - "tryCall": true, + "src": "3563:62:4", + "tryCall": false, "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" } }, - "id": 3777, - "nodeType": "TryStatement", - "src": "19736:306:9" - } - ] - }, - "documentation": { - "id": 3734, - "nodeType": "StructuredDocumentation", - "src": "19159:348:9", - "text": "@notice Checks if the signal was received and caches cross-chain data if requested.\n @param _signalService The signal service address.\n @param _signal The signal.\n @param _chainId The ID of the chain the signal is stored on.\n @param _proof The merkle inclusion proof.\n @return numCacheOps_ Num of cached items" - }, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "_proveSignalReceived", - "nameLocation": "19521:20:9", - "parameters": { - "id": 3744, - "nodeType": "ParameterList", - "parameters": [ + "id": 1670, + "nodeType": "ExpressionStatement", + "src": "3563:62:4" + }, { - "constant": false, - "id": 3737, - "mutability": "mutable", - "name": "_signalService", - "nameLocation": "19566:14:9", - "nodeType": "VariableDeclaration", - "scope": 3779, - "src": "19551:29:9", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_contract$_ISignalService_$6277", - "typeString": "contract ISignalService" - }, - "typeName": { - "id": 3736, - "nodeType": "UserDefinedTypeName", - "pathNode": { - "id": 3735, - "name": "ISignalService", - "nameLocations": [ - "19551:14:9" + "expression": { + "arguments": [ + { + "expression": { + "id": 1672, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "3648:3:4", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1673, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3652:6:4", + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "3648:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 1674, + "name": "_amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1654, + "src": "3660:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 6277, - "src": "19551:14:9" + "id": 1671, + "name": "_creditBond", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1977, + "src": "3636:11:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } }, - "referencedDeclaration": 6277, - "src": "19551:14:9", - "typeDescriptions": { - "typeIdentifier": "t_contract$_ISignalService_$6277", - "typeString": "contract ISignalService" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 3739, - "mutability": "mutable", - "name": "_signal", - "nameLocation": "19598:7:9", - "nodeType": "VariableDeclaration", - "scope": 3779, - "src": "19590:15:9", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 3738, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "19590:7:9", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 3741, - "mutability": "mutable", - "name": "_chainId", - "nameLocation": "19622:8:9", - "nodeType": "VariableDeclaration", - "scope": 3779, - "src": "19615:15:9", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - }, - "typeName": { - "id": 3740, - "name": "uint64", - "nodeType": "ElementaryTypeName", - "src": "19615:6:9", + "id": 1675, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3636:32:4", + "tryCall": false, "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" } }, - "visibility": "internal" + "id": 1676, + "nodeType": "ExpressionStatement", + "src": "3636:32:4" }, { - "constant": false, - "id": 3743, - "mutability": "mutable", - "name": "_proof", - "nameLocation": "19655:6:9", - "nodeType": "VariableDeclaration", - "scope": 3779, - "src": "19640:21:9", - "stateVariable": false, - "storageLocation": "calldata", - "typeDescriptions": { - "typeIdentifier": "t_bytes_calldata_ptr", - "typeString": "bytes" - }, - "typeName": { - "id": 3742, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "19640:5:9", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes" - } - }, - "visibility": "internal" - } - ], - "src": "19541:126:9" - }, - "returnParameters": { - "id": 3747, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 3746, - "mutability": "mutable", - "name": "numCacheOps_", - "nameLocation": "19708:12:9", - "nodeType": "VariableDeclaration", - "scope": 3779, - "src": "19701:19:9", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - }, - "typeName": { - "id": 3745, - "name": "uint32", - "nodeType": "ElementaryTypeName", - "src": "19701:6:9", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - "visibility": "internal" - } - ], - "src": "19700:21:9" - }, - "scope": 4009, - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "private" - }, - { - "id": 3789, - "nodeType": "FunctionDefinition", - "src": "20145:100:9", - "nodes": [], - "body": { - "id": 3788, - "nodeType": "Block", - "src": "20216:29:9", - "nodes": [], - "statements": [ - { - "expression": { - "id": 3786, - "name": "__ctx", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2545, - "src": "20233:5:9", + "eventCall": { + "arguments": [ + { + "expression": { + "id": 1678, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "3698:3:4", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1679, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3702:6:4", + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "3698:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 1680, + "name": "_amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1654, + "src": "3710:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1677, + "name": "BondDeposited", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2064, + "src": "3684:13:4", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 1681, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3684:34:4", + "tryCall": false, "typeDescriptions": { - "typeIdentifier": "t_struct$_Context_$4053_storage", - "typeString": "struct IBridge.Context storage ref" + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" } }, - "functionReturnParameters": 3785, - "id": 3787, - "nodeType": "Return", - "src": "20226:12:9" + "id": 1682, + "nodeType": "EmitStatement", + "src": "3679:39:4" } ] }, + "baseFunctions": [ + 2124 + ], "documentation": { - "id": 3780, + "id": 1652, "nodeType": "StructuredDocumentation", - "src": "20054:86:9", - "text": "@notice Loads and returns the call context.\n @return ctx_ The call context." + "src": "3464:28:4", + "text": "@inheritdoc IBondManager" }, + "functionSelector": "b6b55f25", "implemented": true, "kind": "function", - "modifiers": [], - "name": "_loadContext", - "nameLocation": "20154:12:9", + "modifiers": [ + { + "id": 1657, + "kind": "modifierInvocation", + "modifierName": { + "id": 1656, + "name": "nonReentrant", + "nameLocations": [ + "3540:12:4" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 4382, + "src": "3540:12:4" + }, + "nodeType": "ModifierInvocation", + "src": "3540:12:4" + } + ], + "name": "deposit", + "nameLocation": "3506:7:4", "parameters": { - "id": 3781, - "nodeType": "ParameterList", - "parameters": [], - "src": "20166:2:9" - }, - "returnParameters": { - "id": 3785, + "id": 1655, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 3784, + "id": 1654, "mutability": "mutable", - "name": "", - "nameLocation": "-1:-1:-1", + "name": "_amount", + "nameLocation": "3522:7:4", "nodeType": "VariableDeclaration", - "scope": 3789, - "src": "20200:14:9", + "scope": 1684, + "src": "3514:15:4", "stateVariable": false, - "storageLocation": "memory", + "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_struct$_Context_$4053_memory_ptr", - "typeString": "struct IBridge.Context" + "typeIdentifier": "t_uint256", + "typeString": "uint256" }, "typeName": { - "id": 3783, - "nodeType": "UserDefinedTypeName", - "pathNode": { - "id": 3782, - "name": "Context", - "nameLocations": [ - "20200:7:9" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 4053, - "src": "20200:7:9" - }, - "referencedDeclaration": 4053, - "src": "20200:7:9", + "id": 1653, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3514:7:4", "typeDescriptions": { - "typeIdentifier": "t_struct$_Context_$4053_storage_ptr", - "typeString": "struct IBridge.Context" + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, "visibility": "internal" } ], - "src": "20199:16:9" + "src": "3513:17:4" }, - "scope": 4009, - "stateMutability": "view", - "virtual": true, - "visibility": "internal" + "returnParameters": { + "id": 1658, + "nodeType": "ParameterList", + "parameters": [], + "src": "3553:0:4" + }, + "scope": 2034, + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" }, { - "id": 3826, + "id": 1730, "nodeType": "FunctionDefinition", - "src": "20628:439:9", + "src": "3764:329:4", "nodes": [], "body": { - "id": 3825, + "id": 1729, "nodeType": "Block", - "src": "20837:230:9", + "src": "3842:251:4", "nodes": [], "statements": [ { - "clauses": [ - { - "block": { - "id": 3818, - "nodeType": "Block", - "src": "20981:36:9", - "statements": [ - { - "expression": { - "hexValue": "74727565", - "id": 3816, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "21002:4:9", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "true" - }, - "functionReturnParameters": 3803, - "id": 3817, - "nodeType": "Return", - "src": "20995:11:9" + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 1700, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 1695, + "name": "_recipient", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1687, + "src": "3860:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" } - ] - }, - "errorName": "", - "id": 3819, - "nodeType": "TryCatchClause", - "src": "20981:36:9" - }, - { - "block": { - "id": 3822, - "nodeType": "Block", - "src": "21024:37:9", - "statements": [ - { - "expression": { - "hexValue": "66616c7365", - "id": 3820, + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "arguments": [ + { + "hexValue": "30", + "id": 1698, "isConstant": false, "isLValue": false, "isPure": true, - "kind": "bool", + "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "21045:5:9", + "src": "3882:1:4", "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" }, - "value": "false" + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 1697, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "3874:7:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" }, - "functionReturnParameters": 3803, - "id": 3821, - "nodeType": "Return", - "src": "21038:12:9" + "typeName": { + "id": 1696, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3874:7:4", + "typeDescriptions": {} + } + }, + "id": 1699, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3874:10:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" } - ] + }, + "src": "3860:24:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } }, - "errorName": "", - "id": 3823, - "nodeType": "TryCatchClause", - "src": "21018:43:9" + { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 1701, + "name": "InvalidRecipient", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2025, + "src": "3886:16:4", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$__$returns$_t_error_$", + "typeString": "function () pure returns (error)" + } + }, + "id": 1702, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3886:18:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_error", + "typeString": "error" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_error", + "typeString": "error" + } + ], + "id": 1694, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "3852:7:4", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_error_$returns$__$", + "typeString": "function (bool,error) pure" + } + }, + "id": 1703, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3852:53:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" } - ], - "externalCall": { + }, + "id": 1704, + "nodeType": "ExpressionStatement", + "src": "3852:53:4" + }, + { + "expression": { "arguments": [ { - "id": 3806, - "name": "_chainId", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3797, - "src": "20900:8:9", + "expression": { + "id": 1708, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "3943:3:4", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1709, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3947:6:4", + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "3943:10:4", "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" + "typeIdentifier": "t_address", + "typeString": "address" } }, { "arguments": [ { - "id": 3808, - "name": "_chainId", + "id": 1712, + "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3797, - "src": "20918:8:9", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - }, - { - "expression": { - "id": 3809, - "name": "LibNames", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5845, - "src": "20928:8:9", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_LibNames_$5845_$", - "typeString": "type(library LibNames)" - } - }, - "id": 3810, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "memberLocation": "20937:8:9", - "memberName": "B_BRIDGE", - "nodeType": "MemberAccess", - "referencedDeclaration": 5796, - "src": "20928:17:9", + "referencedDeclaration": -28, + "src": "3963:4:4", "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" + "typeIdentifier": "t_contract$_BondManager_$2034", + "typeString": "contract BondManager" } - }, - { - "hexValue": "66616c7365", - "id": 3811, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "20947:5:9", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "false" } ], "expression": { "argumentTypes": [ { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_bool", - "typeString": "bool" + "typeIdentifier": "t_contract$_BondManager_$2034", + "typeString": "contract BondManager" } ], - "id": 3807, - "name": "resolve", - "nodeType": "Identifier", - "overloadedDeclarations": [ - 4899, - 4921 - ], - "referencedDeclaration": 4899, - "src": "20910:7:9", + "id": 1711, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "3955:7:4", "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_uint64_$_t_bytes32_$_t_bool_$returns$_t_address_$", - "typeString": "function (uint64,bytes32,bool) view returns (address)" + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 1710, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3955:7:4", + "typeDescriptions": {} } }, - "id": 3812, + "id": 1713, "isConstant": false, "isLValue": false, "isPure": false, - "kind": "functionCall", + "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "20910:43:9", + "src": "3955:13:4", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", @@ -21360,77 +4550,61 @@ } }, { - "id": 3813, - "name": "_signal", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3795, - "src": "20955:7:9", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "id": 3814, - "name": "_proof", + "id": 1714, + "name": "_amount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3799, - "src": "20964:6:9", + "referencedDeclaration": 1689, + "src": "3970:7:4", "typeDescriptions": { - "typeIdentifier": "t_bytes_calldata_ptr", - "typeString": "bytes calldata" + "typeIdentifier": "t_uint256", + "typeString": "uint256" } } ], "expression": { "argumentTypes": [ - { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - }, { "typeIdentifier": "t_address", "typeString": "address" }, { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" + "typeIdentifier": "t_address", + "typeString": "address" }, { - "typeIdentifier": "t_bytes_calldata_ptr", - "typeString": "bytes calldata" + "typeIdentifier": "t_uint256", + "typeString": "uint256" } ], "expression": { - "id": 3804, - "name": "_signalService", + "id": 1705, + "name": "bondToken", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3793, - "src": "20851:14:9", + "referencedDeclaration": 1530, + "src": "3916:9:4", "typeDescriptions": { - "typeIdentifier": "t_contract$_ISignalService_$6277", - "typeString": "contract ISignalService" + "typeIdentifier": "t_contract$_IERC20_$21865", + "typeString": "contract IERC20" } }, - "id": 3805, + "id": 1707, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "20866:20:9", - "memberName": "verifySignalReceived", + "memberLocation": "3926:16:4", + "memberName": "safeTransferFrom", "nodeType": "MemberAccess", - "referencedDeclaration": 6258, - "src": "20851:35:9", + "referencedDeclaration": 21986, + "src": "3916:26:4", "typeDescriptions": { - "typeIdentifier": "t_function_external_view$_t_uint64_$_t_address_$_t_bytes32_$_t_bytes_memory_ptr_$returns$__$", - "typeString": "function (uint64,address,bytes32,bytes memory) view external" + "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$21865_$_t_address_$_t_address_$_t_uint256_$returns$__$attached_to$_t_contract$_IERC20_$21865_$", + "typeString": "function (contract IERC20,address,address,uint256)" } }, - "id": 3815, + "id": 1715, "isConstant": false, "isLValue": false, "isPure": false, @@ -21439,630 +4613,1172 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "20851:129:9", - "tryCall": true, + "src": "3916:62:4", + "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 3824, - "nodeType": "TryStatement", - "src": "20847:214:9" - } - ] - }, - "documentation": { - "id": 3790, - "nodeType": "StructuredDocumentation", - "src": "20251:372:9", - "text": "@notice Checks if the signal was received.\n This is the 'readonly' version of _proveSignalReceived.\n @param _signalService The signal service address.\n @param _signal The signal.\n @param _chainId The ID of the chain the signal is stored on.\n @param _proof The merkle inclusion proof.\n @return true if the message was received." - }, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "_isSignalReceived", - "nameLocation": "20637:17:9", - "parameters": { - "id": 3800, - "nodeType": "ParameterList", - "parameters": [ + "id": 1716, + "nodeType": "ExpressionStatement", + "src": "3916:62:4" + }, { - "constant": false, - "id": 3793, - "mutability": "mutable", - "name": "_signalService", - "nameLocation": "20679:14:9", - "nodeType": "VariableDeclaration", - "scope": 3826, - "src": "20664:29:9", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_contract$_ISignalService_$6277", - "typeString": "contract ISignalService" - }, - "typeName": { - "id": 3792, - "nodeType": "UserDefinedTypeName", - "pathNode": { - "id": 3791, - "name": "ISignalService", - "nameLocations": [ - "20664:14:9" + "expression": { + "arguments": [ + { + "id": 1718, + "name": "_recipient", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1687, + "src": "4001:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 1719, + "name": "_amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1689, + "src": "4013:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 6277, - "src": "20664:14:9" + "id": 1717, + "name": "_creditBond", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1977, + "src": "3989:11:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } }, - "referencedDeclaration": 6277, - "src": "20664:14:9", + "id": 1720, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3989:32:4", + "tryCall": false, "typeDescriptions": { - "typeIdentifier": "t_contract$_ISignalService_$6277", - "typeString": "contract ISignalService" + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" } }, - "visibility": "internal" + "id": 1721, + "nodeType": "ExpressionStatement", + "src": "3989:32:4" }, { - "constant": false, - "id": 3795, - "mutability": "mutable", - "name": "_signal", - "nameLocation": "20711:7:9", - "nodeType": "VariableDeclaration", - "scope": 3826, - "src": "20703:15:9", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 3794, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "20703:7:9", + "eventCall": { + "arguments": [ + { + "expression": { + "id": 1723, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "4054:3:4", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1724, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4058:6:4", + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "4054:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 1725, + "name": "_recipient", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1687, + "src": "4066:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 1726, + "name": "_amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1689, + "src": "4078:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1722, + "name": "BondDepositedFor", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2073, + "src": "4037:16:4", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 1727, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4037:49:4", + "tryCall": false, "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" } }, - "visibility": "internal" + "id": 1728, + "nodeType": "EmitStatement", + "src": "4032:54:4" + } + ] + }, + "baseFunctions": [ + 2132 + ], + "documentation": { + "id": 1685, + "nodeType": "StructuredDocumentation", + "src": "3731:28:4", + "text": "@inheritdoc IBondManager" + }, + "functionSelector": "ffaad6a5", + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 1692, + "kind": "modifierInvocation", + "modifierName": { + "id": 1691, + "name": "nonReentrant", + "nameLocations": [ + "3829:12:4" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 4382, + "src": "3829:12:4" }, + "nodeType": "ModifierInvocation", + "src": "3829:12:4" + } + ], + "name": "depositTo", + "nameLocation": "3773:9:4", + "parameters": { + "id": 1690, + "nodeType": "ParameterList", + "parameters": [ { "constant": false, - "id": 3797, + "id": 1687, "mutability": "mutable", - "name": "_chainId", - "nameLocation": "20735:8:9", + "name": "_recipient", + "nameLocation": "3791:10:4", "nodeType": "VariableDeclaration", - "scope": 3826, - "src": "20728:15:9", + "scope": 1730, + "src": "3783:18:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - }, - "typeName": { - "id": 3796, - "name": "uint64", - "nodeType": "ElementaryTypeName", - "src": "20728:6:9", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 3799, - "mutability": "mutable", - "name": "_proof", - "nameLocation": "20768:6:9", - "nodeType": "VariableDeclaration", - "scope": 3826, - "src": "20753:21:9", - "stateVariable": false, - "storageLocation": "calldata", - "typeDescriptions": { - "typeIdentifier": "t_bytes_calldata_ptr", - "typeString": "bytes" + "typeIdentifier": "t_address", + "typeString": "address" }, "typeName": { - "id": 3798, - "name": "bytes", + "id": 1686, + "name": "address", "nodeType": "ElementaryTypeName", - "src": "20753:5:9", + "src": "3783:7:4", + "stateMutability": "nonpayable", "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes" + "typeIdentifier": "t_address", + "typeString": "address" } }, "visibility": "internal" - } - ], - "src": "20654:126:9" - }, - "returnParameters": { - "id": 3803, - "nodeType": "ParameterList", - "parameters": [ + }, { "constant": false, - "id": 3802, + "id": 1689, "mutability": "mutable", - "name": "", - "nameLocation": "-1:-1:-1", + "name": "_amount", + "nameLocation": "3811:7:4", "nodeType": "VariableDeclaration", - "scope": 3826, - "src": "20827:4:9", + "scope": 1730, + "src": "3803:15:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" + "typeIdentifier": "t_uint256", + "typeString": "uint256" }, "typeName": { - "id": 3801, - "name": "bool", + "id": 1688, + "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "20827:4:9", + "src": "3803:7:4", "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, "visibility": "internal" } ], - "src": "20826:6:9" + "src": "3782:37:4" }, - "scope": 4009, - "stateMutability": "view", + "returnParameters": { + "id": 1693, + "nodeType": "ParameterList", + "parameters": [], + "src": "3842:0:4" + }, + "scope": 2034, + "stateMutability": "nonpayable", "virtual": false, - "visibility": "private" + "visibility": "external" }, { - "id": 3844, + "id": 1760, "nodeType": "FunctionDefinition", - "src": "21073:167:9", + "src": "4132:296:4", "nodes": [], "body": { - "id": 3843, + "id": 1759, "nodeType": "Block", - "src": "21150:90:9", + "src": "4281:147:4", "nodes": [], "statements": [ { - "condition": { + "assignments": [ + 1742 + ], + "declarations": [ + { + "constant": false, + "id": 1742, + "mutability": "mutable", + "name": "bond_", + "nameLocation": "4304:5:4", + "nodeType": "VariableDeclaration", + "scope": 1759, + "src": "4291:18:4", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bond_$2043_storage_ptr", + "typeString": "struct IBondManager.Bond" + }, + "typeName": { + "id": 1741, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 1740, + "name": "Bond", + "nameLocations": [ + "4291:4:4" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 2043, + "src": "4291:4:4" + }, + "referencedDeclaration": 2043, + "src": "4291:4:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bond_$2043_storage_ptr", + "typeString": "struct IBondManager.Bond" + } + }, + "visibility": "internal" + } + ], + "id": 1746, + "initialValue": { + "baseExpression": { + "id": 1743, + "name": "bond", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1542, + "src": "4312:4:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Bond_$2043_storage_$", + "typeString": "mapping(address => struct IBondManager.Bond storage ref)" + } + }, + "id": 1745, + "indexExpression": { + "id": 1744, + "name": "_address", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1733, + "src": "4317:8:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "4312:14:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bond_$2043_storage", + "typeString": "struct IBondManager.Bond storage ref" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "4291:35:4" + }, + { + "expression": { "commonType": { - "typeIdentifier": "t_enum$_Status_$4018", - "typeString": "enum IBridge.Status" + "typeIdentifier": "t_bool", + "typeString": "bool" }, - "id": 3838, + "id": 1757, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { - "baseExpression": { - "id": 3834, - "name": "messageStatus", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2541, - "src": "21164:13:9", + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1752, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 1747, + "name": "bond_", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1742, + "src": "4343:5:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bond_$2043_storage_ptr", + "typeString": "struct IBondManager.Bond storage pointer" + } + }, + "id": 1748, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4349:7:4", + "memberName": "balance", + "nodeType": "MemberAccess", + "referencedDeclaration": 2040, + "src": "4343:13:4", "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_enum$_Status_$4018_$", - "typeString": "mapping(bytes32 => enum IBridge.Status)" + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - "id": 3836, - "indexExpression": { - "id": 3835, - "name": "_msgHash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3828, - "src": "21178:8:9", + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1751, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 1749, + "name": "minBond", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1533, + "src": "4360:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "id": 1750, + "name": "_additionalBond", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1735, + "src": "4370:15:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "4360:25:4", "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "21164:23:9", + "src": "4343:42:4", "typeDescriptions": { - "typeIdentifier": "t_enum$_Status_$4018", - "typeString": "enum IBridge.Status" + "typeIdentifier": "t_bool", + "typeString": "bool" } }, "nodeType": "BinaryOperation", - "operator": "!=", + "operator": "&&", "rightExpression": { - "id": 3837, - "name": "_expectedStatus", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3831, - "src": "21191:15:9", - "typeDescriptions": { - "typeIdentifier": "t_enum$_Status_$4018", - "typeString": "enum IBridge.Status" - } - }, - "src": "21164:42:9", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 3842, - "nodeType": "IfStatement", - "src": "21160:73:9", - "trueBody": { - "errorCall": { - "arguments": [], - "expression": { - "argumentTypes": [], - "id": 3839, - "name": "B_INVALID_STATUS", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2565, - "src": "21215:16:9", - "typeDescriptions": { - "typeIdentifier": "t_function_error_pure$__$returns$_t_error_$", - "typeString": "function () pure returns (error)" - } + "commonType": { + "typeIdentifier": "t_uint48", + "typeString": "uint48" }, - "id": 3840, + "id": 1756, "isConstant": false, "isLValue": false, "isPure": false, - "kind": "functionCall", "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "21215:18:9", - "tryCall": false, + "leftExpression": { + "expression": { + "id": 1753, + "name": "bond_", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1742, + "src": "4389:5:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bond_$2043_storage_ptr", + "typeString": "struct IBondManager.Bond storage pointer" + } + }, + "id": 1754, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4395:21:4", + "memberName": "withdrawalRequestedAt", + "nodeType": "MemberAccess", + "referencedDeclaration": 2042, + "src": "4389:27:4", + "typeDescriptions": { + "typeIdentifier": "t_uint48", + "typeString": "uint48" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "30", + "id": 1755, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4420:1:4", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "4389:32:4", "typeDescriptions": { - "typeIdentifier": "t_error", - "typeString": "error" + "typeIdentifier": "t_bool", + "typeString": "bool" } }, - "id": 3841, - "nodeType": "RevertStatement", - "src": "21208:25:9" - } + "src": "4343:78:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 1739, + "id": 1758, + "nodeType": "Return", + "src": "4336:85:4" } ] }, + "baseFunctions": [ + 2150 + ], + "documentation": { + "id": 1731, + "nodeType": "StructuredDocumentation", + "src": "4099:28:4", + "text": "@inheritdoc IBondManager" + }, + "functionSelector": "a116e486", "implemented": true, "kind": "function", "modifiers": [], - "name": "_checkStatus", - "nameLocation": "21082:12:9", + "name": "hasSufficientBond", + "nameLocation": "4141:17:4", "parameters": { - "id": 3832, + "id": 1736, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 3828, + "id": 1733, "mutability": "mutable", - "name": "_msgHash", - "nameLocation": "21103:8:9", + "name": "_address", + "nameLocation": "4176:8:4", "nodeType": "VariableDeclaration", - "scope": 3844, - "src": "21095:16:9", + "scope": 1760, + "src": "4168:16:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" + "typeIdentifier": "t_address", + "typeString": "address" }, "typeName": { - "id": 3827, - "name": "bytes32", + "id": 1732, + "name": "address", "nodeType": "ElementaryTypeName", - "src": "21095:7:9", + "src": "4168:7:4", + "stateMutability": "nonpayable", "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" + "typeIdentifier": "t_address", + "typeString": "address" } }, "visibility": "internal" }, { "constant": false, - "id": 3831, + "id": 1735, "mutability": "mutable", - "name": "_expectedStatus", - "nameLocation": "21120:15:9", + "name": "_additionalBond", + "nameLocation": "4202:15:4", "nodeType": "VariableDeclaration", - "scope": 3844, - "src": "21113:22:9", + "scope": 1760, + "src": "4194:23:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_enum$_Status_$4018", - "typeString": "enum IBridge.Status" + "typeIdentifier": "t_uint256", + "typeString": "uint256" }, "typeName": { - "id": 3830, - "nodeType": "UserDefinedTypeName", - "pathNode": { - "id": 3829, - "name": "Status", - "nameLocations": [ - "21113:6:9" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 4018, - "src": "21113:6:9" - }, - "referencedDeclaration": 4018, - "src": "21113:6:9", + "id": 1734, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4194:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "4158:65:4" + }, + "returnParameters": { + "id": 1739, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1738, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 1760, + "src": "4271:4:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 1737, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "4271:4:4", "typeDescriptions": { - "typeIdentifier": "t_enum$_Status_$4018", - "typeString": "enum IBridge.Status" + "typeIdentifier": "t_bool", + "typeString": "bool" } }, "visibility": "internal" } ], - "src": "21094:42:9" + "src": "4270:6:4" }, - "returnParameters": { - "id": 3833, - "nodeType": "ParameterList", - "parameters": [], - "src": "21150:0:9" - }, - "scope": 4009, + "scope": 2034, "stateMutability": "view", "virtual": false, - "visibility": "private" + "visibility": "external" }, { - "id": 3907, + "id": 1812, "nodeType": "FunctionDefinition", - "src": "21246:521:9", + "src": "4467:387:4", "nodes": [], "body": { - "id": 3906, + "id": 1811, "nodeType": "Block", - "src": "21418:349:9", + "src": "4518:336:4", "nodes": [], "statements": [ { - "condition": { - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" + "assignments": [ + 1768 + ], + "declarations": [ + { + "constant": false, + "id": 1768, + "mutability": "mutable", + "name": "bond_", + "nameLocation": "4541:5:4", + "nodeType": "VariableDeclaration", + "scope": 1811, + "src": "4528:18:4", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bond_$2043_storage_ptr", + "typeString": "struct IBondManager.Bond" + }, + "typeName": { + "id": 1767, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 1766, + "name": "Bond", + "nameLocations": [ + "4528:4:4" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 2043, + "src": "4528:4:4" + }, + "referencedDeclaration": 2043, + "src": "4528:4:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bond_$2043_storage_ptr", + "typeString": "struct IBondManager.Bond" + } + }, + "visibility": "internal" + } + ], + "id": 1773, + "initialValue": { + "baseExpression": { + "id": 1769, + "name": "bond", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1542, + "src": "4549:4:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Bond_$2043_storage_$", + "typeString": "mapping(address => struct IBondManager.Bond storage ref)" + } }, - "id": 3861, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { + "id": 1772, + "indexExpression": { "expression": { - "id": 3855, - "name": "_message", + "id": 1770, + "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3847, - "src": "21432:8:9", + "referencedDeclaration": -15, + "src": "4554:3:4", "typeDescriptions": { - "typeIdentifier": "t_struct$_Message_$4046_calldata_ptr", - "typeString": "struct IBridge.Message calldata" + "typeIdentifier": "t_magic_message", + "typeString": "msg" } }, - "id": 3856, + "id": 1771, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "21441:2:9", - "memberName": "to", + "memberLocation": "4558:6:4", + "memberName": "sender", "nodeType": "MemberAccess", - "referencedDeclaration": 4041, - "src": "21432:11:9", + "src": "4554:10:4", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "arguments": [ - { + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "4549:16:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bond_$2043_storage", + "typeString": "struct IBondManager.Bond storage ref" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "4528:37:4" + }, + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1778, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 1775, + "name": "bond_", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1768, + "src": "4583:5:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bond_$2043_storage_ptr", + "typeString": "struct IBondManager.Bond storage pointer" + } + }, + "id": 1776, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4589:7:4", + "memberName": "balance", + "nodeType": "MemberAccess", + "referencedDeclaration": 2040, + "src": "4583:13:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { "hexValue": "30", - "id": 3859, + "id": 1777, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "21455:1:9", + "src": "4599:1:4", "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" + }, + "src": "4583:17:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" + }, + { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 1779, + "name": "NoBondToWithdraw", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2029, + "src": "4602:16:4", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$__$returns$_t_error_$", + "typeString": "function () pure returns (error)" } - ], - "id": 3858, + }, + "id": 1780, "isConstant": false, "isLValue": false, - "isPure": true, + "isPure": false, + "kind": "functionCall", "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "21447:7:9", + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4602:18:4", + "tryCall": false, "typeDescriptions": { - "typeIdentifier": "t_type$_t_address_$", - "typeString": "type(address)" + "typeIdentifier": "t_error", + "typeString": "error" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" }, - "typeName": { - "id": 3857, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "21447:7:9", - "typeDescriptions": {} + { + "typeIdentifier": "t_error", + "typeString": "error" } - }, - "id": 3860, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "typeConversion", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "21447:10:9", - "tryCall": false, + ], + "id": 1774, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "4575:7:4", "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_error_$returns$__$", + "typeString": "function (bool,error) pure" } }, - "src": "21432:25:9", + "id": 1781, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4575:46:4", + "tryCall": false, "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" } }, - "id": 3864, - "nodeType": "IfStatement", - "src": "21428:42:9", - "trueBody": { + "id": 1782, + "nodeType": "ExpressionStatement", + "src": "4575:46:4" + }, + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_uint48", + "typeString": "uint48" + }, + "id": 1787, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 1784, + "name": "bond_", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1768, + "src": "4639:5:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bond_$2043_storage_ptr", + "typeString": "struct IBondManager.Bond storage pointer" + } + }, + "id": 1785, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4645:21:4", + "memberName": "withdrawalRequestedAt", + "nodeType": "MemberAccess", + "referencedDeclaration": 2042, + "src": "4639:27:4", + "typeDescriptions": { + "typeIdentifier": "t_uint48", + "typeString": "uint48" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "30", + "id": 1786, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4670:1:4", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "4639:32:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 1788, + "name": "WithdrawalAlreadyRequested", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2033, + "src": "4673:26:4", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$__$returns$_t_error_$", + "typeString": "function () pure returns (error)" + } + }, + "id": 1789, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4673:28:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_error", + "typeString": "error" + } + } + ], "expression": { - "hexValue": "74727565", - "id": 3862, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "21466:4:9", + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_error", + "typeString": "error" + } + ], + "id": 1783, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "4631:7:4", "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "true" + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_error_$returns$__$", + "typeString": "function (bool,error) pure" + } }, - "functionReturnParameters": 3854, - "id": 3863, - "nodeType": "Return", - "src": "21459:11:9" - } + "id": 1790, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4631:71:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1791, + "nodeType": "ExpressionStatement", + "src": "4631:71:4" }, { - "condition": { - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 3871, + "expression": { + "id": 1800, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "leftExpression": { + "leftHandSide": { "expression": { - "id": 3865, - "name": "_message", + "id": 1792, + "name": "bond_", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3847, - "src": "21484:8:9", + "referencedDeclaration": 1768, + "src": "4713:5:4", "typeDescriptions": { - "typeIdentifier": "t_struct$_Message_$4046_calldata_ptr", - "typeString": "struct IBridge.Message calldata" + "typeIdentifier": "t_struct$_Bond_$2043_storage_ptr", + "typeString": "struct IBondManager.Bond storage pointer" } }, - "id": 3866, + "id": 1794, "isConstant": false, - "isLValue": false, + "isLValue": true, "isPure": false, - "lValueRequested": false, - "memberLocation": "21493:2:9", - "memberName": "to", + "lValueRequested": true, + "memberLocation": "4719:21:4", + "memberName": "withdrawalRequestedAt", "nodeType": "MemberAccess", - "referencedDeclaration": 4041, - "src": "21484:11:9", + "referencedDeclaration": 2042, + "src": "4713:27:4", "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + "typeIdentifier": "t_uint48", + "typeString": "uint48" } }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { "arguments": [ { - "id": 3869, - "name": "this", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -28, - "src": "21507:4:9", + "expression": { + "id": 1797, + "name": "block", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -4, + "src": "4750:5:4", + "typeDescriptions": { + "typeIdentifier": "t_magic_block", + "typeString": "block" + } + }, + "id": 1798, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4756:9:4", + "memberName": "timestamp", + "nodeType": "MemberAccess", + "src": "4750:15:4", "typeDescriptions": { - "typeIdentifier": "t_contract$_Bridge_$4009", - "typeString": "contract Bridge" + "typeIdentifier": "t_uint256", + "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_Bridge_$4009", - "typeString": "contract Bridge" + "typeIdentifier": "t_uint256", + "typeString": "uint256" } ], - "id": 3868, + "id": 1796, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "21499:7:9", + "src": "4743:6:4", "typeDescriptions": { - "typeIdentifier": "t_type$_t_address_$", - "typeString": "type(address)" + "typeIdentifier": "t_type$_t_uint48_$", + "typeString": "type(uint48)" }, "typeName": { - "id": 3867, - "name": "address", + "id": 1795, + "name": "uint48", "nodeType": "ElementaryTypeName", - "src": "21499:7:9", + "src": "4743:6:4", "typeDescriptions": {} } }, - "id": 3870, + "id": 1799, "isConstant": false, "isLValue": false, "isPure": false, @@ -22071,828 +5787,1092 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "21499:13:9", + "src": "4743:23:4", "tryCall": false, "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + "typeIdentifier": "t_uint48", + "typeString": "uint48" } }, - "src": "21484:28:9", + "src": "4713:53:4", "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" + "typeIdentifier": "t_uint48", + "typeString": "uint48" } }, - "id": 3874, - "nodeType": "IfStatement", - "src": "21480:45:9", - "trueBody": { - "expression": { - "hexValue": "74727565", - "id": 3872, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "21521:4:9", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "true" - }, - "functionReturnParameters": 3854, - "id": 3873, - "nodeType": "Return", - "src": "21514:11:9" - } + "id": 1801, + "nodeType": "ExpressionStatement", + "src": "4713:53:4" }, { - "condition": { - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" + "eventCall": { + "arguments": [ + { + "expression": { + "id": 1803, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "4801:3:4", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1804, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4805:6:4", + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "4801:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1808, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 1805, + "name": "block", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -4, + "src": "4813:5:4", + "typeDescriptions": { + "typeIdentifier": "t_magic_block", + "typeString": "block" + } + }, + "id": 1806, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4819:9:4", + "memberName": "timestamp", + "nodeType": "MemberAccess", + "src": "4813:15:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "id": 1807, + "name": "withdrawalDelay", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1536, + "src": "4831:15:4", + "typeDescriptions": { + "typeIdentifier": "t_uint48", + "typeString": "uint48" + } + }, + "src": "4813:33:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1802, + "name": "WithdrawalRequested", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2087, + "src": "4781:19:4", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } }, - "id": 3881, + "id": 1809, "isConstant": false, "isLValue": false, "isPure": false, + "kind": "functionCall", "lValueRequested": false, - "leftExpression": { - "expression": { - "id": 3875, - "name": "_message", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3847, - "src": "21539:8:9", + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4781:66:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1810, + "nodeType": "EmitStatement", + "src": "4776:71:4" + } + ] + }, + "baseFunctions": [ + 2154 + ], + "documentation": { + "id": 1761, + "nodeType": "StructuredDocumentation", + "src": "4434:28:4", + "text": "@inheritdoc IBondManager" + }, + "functionSelector": "dbaf2145", + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 1764, + "kind": "modifierInvocation", + "modifierName": { + "id": 1763, + "name": "nonReentrant", + "nameLocations": [ + "4505:12:4" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 4382, + "src": "4505:12:4" + }, + "nodeType": "ModifierInvocation", + "src": "4505:12:4" + } + ], + "name": "requestWithdrawal", + "nameLocation": "4476:17:4", + "parameters": { + "id": 1762, + "nodeType": "ParameterList", + "parameters": [], + "src": "4493:2:4" + }, + "returnParameters": { + "id": 1765, + "nodeType": "ParameterList", + "parameters": [], + "src": "4518:0:4" + }, + "scope": 2034, + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "id": 1847, + "nodeType": "FunctionDefinition", + "src": "4893:267:4", + "nodes": [], + "body": { + "id": 1846, + "nodeType": "Block", + "src": "4943:217:4", + "nodes": [], + "statements": [ + { + "assignments": [ + 1820 + ], + "declarations": [ + { + "constant": false, + "id": 1820, + "mutability": "mutable", + "name": "bond_", + "nameLocation": "4966:5:4", + "nodeType": "VariableDeclaration", + "scope": 1846, + "src": "4953:18:4", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bond_$2043_storage_ptr", + "typeString": "struct IBondManager.Bond" + }, + "typeName": { + "id": 1819, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 1818, + "name": "Bond", + "nameLocations": [ + "4953:4:4" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 2043, + "src": "4953:4:4" + }, + "referencedDeclaration": 2043, + "src": "4953:4:4", "typeDescriptions": { - "typeIdentifier": "t_struct$_Message_$4046_calldata_ptr", - "typeString": "struct IBridge.Message calldata" + "typeIdentifier": "t_struct$_Bond_$2043_storage_ptr", + "typeString": "struct IBondManager.Bond" } }, - "id": 3876, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "21548:2:9", - "memberName": "to", - "nodeType": "MemberAccess", - "referencedDeclaration": 4041, - "src": "21539:11:9", + "visibility": "internal" + } + ], + "id": 1825, + "initialValue": { + "baseExpression": { + "id": 1821, + "name": "bond", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1542, + "src": "4974:4:4", "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Bond_$2043_storage_$", + "typeString": "mapping(address => struct IBondManager.Bond storage ref)" } }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "arguments": [ - { - "id": 3879, - "name": "_signalService", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3850, - "src": "21562:14:9", - "typeDescriptions": { - "typeIdentifier": "t_contract$_ISignalService_$6277", - "typeString": "contract ISignalService" - } - } - ], + "id": 1824, + "indexExpression": { "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_contract$_ISignalService_$6277", - "typeString": "contract ISignalService" - } - ], - "id": 3878, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "21554:7:9", + "id": 1822, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "4979:3:4", "typeDescriptions": { - "typeIdentifier": "t_type$_t_address_$", - "typeString": "type(address)" - }, - "typeName": { - "id": 3877, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "21554:7:9", - "typeDescriptions": {} + "typeIdentifier": "t_magic_message", + "typeString": "msg" } }, - "id": 3880, + "id": 1823, "isConstant": false, "isLValue": false, "isPure": false, - "kind": "typeConversion", "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "21554:23:9", - "tryCall": false, + "memberLocation": "4983:6:4", + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "4979:10:4", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "21539:38:9", + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "4974:16:4", "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" + "typeIdentifier": "t_struct$_Bond_$2043_storage", + "typeString": "struct IBondManager.Bond storage ref" } }, - "id": 3884, - "nodeType": "IfStatement", - "src": "21535:55:9", - "trueBody": { - "expression": { - "hexValue": "74727565", - "id": 3882, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "21586:4:9", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "true" - }, - "functionReturnParameters": 3854, - "id": 3883, - "nodeType": "Return", - "src": "21579:11:9" - } + "nodeType": "VariableDeclarationStatement", + "src": "4953:37:4" }, { "expression": { - "commonType": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "id": 3904, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "commonType": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "id": 3899, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { + "arguments": [ + { "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_uint48", + "typeString": "uint48" }, - "id": 3889, + "id": 1830, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "expression": { - "expression": { - "id": 3885, - "name": "_message", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3847, - "src": "21608:8:9", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Message_$4046_calldata_ptr", - "typeString": "struct IBridge.Message calldata" - } - }, - "id": 3886, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "21617:4:9", - "memberName": "data", - "nodeType": "MemberAccess", - "referencedDeclaration": 4045, - "src": "21608:13:9", + "id": 1827, + "name": "bond_", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1820, + "src": "5008:5:4", "typeDescriptions": { - "typeIdentifier": "t_bytes_calldata_ptr", - "typeString": "bytes calldata" + "typeIdentifier": "t_struct$_Bond_$2043_storage_ptr", + "typeString": "struct IBondManager.Bond storage pointer" } }, - "id": 3887, + "id": 1828, "isConstant": false, - "isLValue": false, + "isLValue": true, "isPure": false, "lValueRequested": false, - "memberLocation": "21622:6:9", - "memberName": "length", + "memberLocation": "5014:21:4", + "memberName": "withdrawalRequestedAt", "nodeType": "MemberAccess", - "src": "21608:20:9", + "referencedDeclaration": 2042, + "src": "5008:27:4", "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_uint48", + "typeString": "uint48" } }, "nodeType": "BinaryOperation", - "operator": ">=", + "operator": ">", "rightExpression": { - "hexValue": "34", - "id": 3888, + "hexValue": "30", + "id": 1829, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "21632:1:9", + "src": "5038:1:4", "typeDescriptions": { - "typeIdentifier": "t_rational_4_by_1", - "typeString": "int_const 4" + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" }, - "value": "4" + "value": "0" }, - "src": "21608:25:9", + "src": "5008:31:4", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "nodeType": "BinaryOperation", - "operator": "&&", - "rightExpression": { - "commonType": { - "typeIdentifier": "t_bytes4", - "typeString": "bytes4" + { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 1831, + "name": "NoWithdrawalRequested", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2031, + "src": "5041:21:4", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$__$returns$_t_error_$", + "typeString": "function () pure returns (error)" + } }, - "id": 3898, + "id": 1832, "isConstant": false, "isLValue": false, "isPure": false, + "kind": "functionCall", "lValueRequested": false, - "leftExpression": { - "arguments": [ - { - "expression": { - "id": 3892, - "name": "_message", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3847, - "src": "21656:8:9", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Message_$4046_calldata_ptr", - "typeString": "struct IBridge.Message calldata" - } - }, - "id": 3893, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "21665:4:9", - "memberName": "data", - "nodeType": "MemberAccess", - "referencedDeclaration": 4045, - "src": "21656:13:9", - "typeDescriptions": { - "typeIdentifier": "t_bytes_calldata_ptr", - "typeString": "bytes calldata" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes_calldata_ptr", - "typeString": "bytes calldata" - } - ], - "id": 3891, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "21649:6:9", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_bytes4_$", - "typeString": "type(bytes4)" - }, - "typeName": { - "id": 3890, - "name": "bytes4", - "nodeType": "ElementaryTypeName", - "src": "21649:6:9", - "typeDescriptions": {} - } - }, - "id": 3894, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "21649:21:9", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bytes4", - "typeString": "bytes4" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "expression": { - "expression": { - "id": 3895, - "name": "IMessageInvocable", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4172, - "src": "21674:17:9", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_IMessageInvocable_$4172_$", - "typeString": "type(contract IMessageInvocable)" - } - }, - "id": 3896, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "memberLocation": "21692:19:9", - "memberName": "onMessageInvocation", - "nodeType": "MemberAccess", - "referencedDeclaration": 4171, - "src": "21674:37:9", - "typeDescriptions": { - "typeIdentifier": "t_function_declaration_payable$_t_bytes_calldata_ptr_$returns$__$", - "typeString": "function IMessageInvocable.onMessageInvocation(bytes calldata) payable" - } - }, - "id": 3897, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "memberLocation": "21712:8:9", - "memberName": "selector", - "nodeType": "MemberAccess", - "src": "21674:46:9", - "typeDescriptions": { - "typeIdentifier": "t_bytes4", - "typeString": "bytes4" - } - }, - "src": "21649:71:9", + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5041:23:4", + "tryCall": false, "typeDescriptions": { + "typeIdentifier": "t_error", + "typeString": "error" + } + } + ], + "expression": { + "argumentTypes": [ + { "typeIdentifier": "t_bool", "typeString": "bool" + }, + { + "typeIdentifier": "t_error", + "typeString": "error" } - }, - "src": "21608:112:9", + ], + "id": 1826, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "5000:7:4", "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_error_$returns$__$", + "typeString": "function (bool,error) pure" } }, - "nodeType": "BinaryOperation", - "operator": "&&", - "rightExpression": { - "arguments": [], + "id": 1833, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5000:65:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1834, + "nodeType": "ExpressionStatement", + "src": "5000:65:4" + }, + { + "expression": { + "id": 1839, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { "expression": { - "argumentTypes": [], + "id": 1835, + "name": "bond_", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1820, + "src": "5076:5:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bond_$2043_storage_ptr", + "typeString": "struct IBondManager.Bond storage pointer" + } + }, + "id": 1837, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberLocation": "5082:21:4", + "memberName": "withdrawalRequestedAt", + "nodeType": "MemberAccess", + "referencedDeclaration": 2042, + "src": "5076:27:4", + "typeDescriptions": { + "typeIdentifier": "t_uint48", + "typeString": "uint48" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "hexValue": "30", + "id": 1838, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5106:1:4", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "5076:31:4", + "typeDescriptions": { + "typeIdentifier": "t_uint48", + "typeString": "uint48" + } + }, + "id": 1840, + "nodeType": "ExpressionStatement", + "src": "5076:31:4" + }, + { + "eventCall": { + "arguments": [ + { "expression": { - "expression": { - "id": 3900, - "name": "_message", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3847, - "src": "21736:8:9", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Message_$4046_calldata_ptr", - "typeString": "struct IBridge.Message calldata" - } - }, - "id": 3901, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "21745:2:9", - "memberName": "to", - "nodeType": "MemberAccess", - "referencedDeclaration": 4041, - "src": "21736:11:9", + "id": 1842, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "5142:3:4", "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + "typeIdentifier": "t_magic_message", + "typeString": "msg" } }, - "id": 3902, + "id": 1843, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "21748:10:9", - "memberName": "isContract", + "memberLocation": "5146:6:4", + "memberName": "sender", "nodeType": "MemberAccess", - "referencedDeclaration": 22454, - "src": "21736:22:9", + "src": "5142:10:4", "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$attached_to$_t_address_$", - "typeString": "function (address) view returns (bool)" + "typeIdentifier": "t_address", + "typeString": "address" } - }, - "id": 3903, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "21736:24:9", - "tryCall": false, + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1841, + "name": "WithdrawalCancelled", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2092, + "src": "5122:19:4", "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" + "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" } }, - "src": "21608:152:9", + "id": 1844, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5122:31:4", + "tryCall": false, "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" } }, - "functionReturnParameters": 3854, - "id": 3905, - "nodeType": "Return", - "src": "21601:159:9" + "id": 1845, + "nodeType": "EmitStatement", + "src": "5117:36:4" } ] }, + "baseFunctions": [ + 2158 + ], + "documentation": { + "id": 1813, + "nodeType": "StructuredDocumentation", + "src": "4860:28:4", + "text": "@inheritdoc IBondManager" + }, + "functionSelector": "22611280", "implemented": true, "kind": "function", - "modifiers": [], - "name": "_unableToInvokeMessageCall", - "nameLocation": "21255:26:9", + "modifiers": [ + { + "id": 1816, + "kind": "modifierInvocation", + "modifierName": { + "id": 1815, + "name": "nonReentrant", + "nameLocations": [ + "4930:12:4" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 4382, + "src": "4930:12:4" + }, + "nodeType": "ModifierInvocation", + "src": "4930:12:4" + } + ], + "name": "cancelWithdrawal", + "nameLocation": "4902:16:4", "parameters": { - "id": 3851, + "id": 1814, "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 3847, - "mutability": "mutable", - "name": "_message", - "nameLocation": "21308:8:9", - "nodeType": "VariableDeclaration", - "scope": 3907, - "src": "21291:25:9", - "stateVariable": false, - "storageLocation": "calldata", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Message_$4046_calldata_ptr", - "typeString": "struct IBridge.Message" - }, - "typeName": { - "id": 3846, - "nodeType": "UserDefinedTypeName", - "pathNode": { - "id": 3845, - "name": "Message", - "nameLocations": [ - "21291:7:9" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 4046, - "src": "21291:7:9" - }, - "referencedDeclaration": 4046, - "src": "21291:7:9", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Message_$4046_storage_ptr", - "typeString": "struct IBridge.Message" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 3850, - "mutability": "mutable", - "name": "_signalService", - "nameLocation": "21341:14:9", - "nodeType": "VariableDeclaration", - "scope": 3907, - "src": "21326:29:9", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_contract$_ISignalService_$6277", - "typeString": "contract ISignalService" - }, - "typeName": { - "id": 3849, - "nodeType": "UserDefinedTypeName", - "pathNode": { - "id": 3848, - "name": "ISignalService", - "nameLocations": [ - "21326:14:9" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 6277, - "src": "21326:14:9" - }, - "referencedDeclaration": 6277, - "src": "21326:14:9", - "typeDescriptions": { - "typeIdentifier": "t_contract$_ISignalService_$6277", - "typeString": "contract ISignalService" - } - }, - "visibility": "internal" - } - ], - "src": "21281:80:9" + "parameters": [], + "src": "4918:2:4" }, "returnParameters": { - "id": 3854, + "id": 1817, "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 3853, - "mutability": "mutable", - "name": "", - "nameLocation": "-1:-1:-1", - "nodeType": "VariableDeclaration", - "scope": 3907, - "src": "21408:4:9", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 3852, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "21408:4:9", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "visibility": "internal" - } - ], - "src": "21407:6:9" + "parameters": [], + "src": "4943:0:4" }, - "scope": 4009, - "stateMutability": "view", + "scope": 2034, + "stateMutability": "nonpayable", "virtual": false, - "visibility": "private" + "visibility": "external" }, { - "id": 3933, + "id": 1898, "nodeType": "FunctionDefinition", - "src": "21773:277:9", + "src": "5199:534:4", "nodes": [], "body": { - "id": 3932, + "id": 1897, "nodeType": "Block", - "src": "21860:190:9", + "src": "5269:464:4", "nodes": [], "statements": [ { "assignments": [ - 3916 + 1859 ], "declarations": [ { "constant": false, - "id": 3916, + "id": 1859, "mutability": "mutable", - "name": "minGasRequired", - "nameLocation": "21878:14:9", + "name": "bond_", + "nameLocation": "5292:5:4", "nodeType": "VariableDeclaration", - "scope": 3932, - "src": "21870:22:9", + "scope": 1897, + "src": "5279:18:4", "stateVariable": false, - "storageLocation": "default", + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bond_$2043_storage_ptr", + "typeString": "struct IBondManager.Bond" + }, + "typeName": { + "id": 1858, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 1857, + "name": "Bond", + "nameLocations": [ + "5279:4:4" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 2043, + "src": "5279:4:4" + }, + "referencedDeclaration": 2043, + "src": "5279:4:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bond_$2043_storage_ptr", + "typeString": "struct IBondManager.Bond" + } + }, + "visibility": "internal" + } + ], + "id": 1864, + "initialValue": { + "baseExpression": { + "id": 1860, + "name": "bond", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1542, + "src": "5300:4:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Bond_$2043_storage_$", + "typeString": "mapping(address => struct IBondManager.Bond storage ref)" + } + }, + "id": 1863, + "indexExpression": { + "expression": { + "id": 1861, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "5305:3:4", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1862, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5309:6:4", + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "5305:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "5300:16:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bond_$2043_storage", + "typeString": "struct IBondManager.Bond storage ref" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "5279:37:4" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 1876, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint48", + "typeString": "uint48" + }, + "id": 1868, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 1865, + "name": "bond_", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1859, + "src": "5344:5:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bond_$2043_storage_ptr", + "typeString": "struct IBondManager.Bond storage pointer" + } + }, + "id": 1866, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5350:21:4", + "memberName": "withdrawalRequestedAt", + "nodeType": "MemberAccess", + "referencedDeclaration": 2042, + "src": "5344:27:4", + "typeDescriptions": { + "typeIdentifier": "t_uint48", + "typeString": "uint48" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "30", + "id": 1867, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5375:1:4", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "5344:32:4", "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "typeName": { - "id": 3915, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "21870:7:9", + "id": 1875, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 1869, + "name": "block", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -4, + "src": "5396:5:4", + "typeDescriptions": { + "typeIdentifier": "t_magic_block", + "typeString": "block" + } + }, + "id": 1870, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5402:9:4", + "memberName": "timestamp", + "nodeType": "MemberAccess", + "src": "5396:15:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "visibility": "internal" - } - ], - "id": 3922, - "initialValue": { - "arguments": [ - { - "expression": { + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_uint48", + "typeString": "uint48" + }, + "id": 1874, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { "expression": { - "id": 3918, - "name": "_message", + "id": 1871, + "name": "bond_", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3910, - "src": "21917:8:9", + "referencedDeclaration": 1859, + "src": "5414:5:4", "typeDescriptions": { - "typeIdentifier": "t_struct$_Message_$4046_calldata_ptr", - "typeString": "struct IBridge.Message calldata" + "typeIdentifier": "t_struct$_Bond_$2043_storage_ptr", + "typeString": "struct IBondManager.Bond storage pointer" } }, - "id": 3919, + "id": 1872, "isConstant": false, - "isLValue": false, + "isLValue": true, "isPure": false, "lValueRequested": false, - "memberLocation": "21926:4:9", - "memberName": "data", + "memberLocation": "5420:21:4", + "memberName": "withdrawalRequestedAt", "nodeType": "MemberAccess", - "referencedDeclaration": 4045, - "src": "21917:13:9", + "referencedDeclaration": 2042, + "src": "5414:27:4", "typeDescriptions": { - "typeIdentifier": "t_bytes_calldata_ptr", - "typeString": "bytes calldata" + "typeIdentifier": "t_uint48", + "typeString": "uint48" } }, - "id": 3920, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "21931:6:9", - "memberName": "length", - "nodeType": "MemberAccess", - "src": "21917:20:9", + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "id": 1873, + "name": "withdrawalDelay", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1536, + "src": "5444:15:4", + "typeDescriptions": { + "typeIdentifier": "t_uint48", + "typeString": "uint48" + } + }, + "src": "5414:45:4", "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_uint48", + "typeString": "uint48" } - ], - "id": 3917, - "name": "getMessageMinGasLimit", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3586, - "src": "21895:21:9", + }, + "src": "5396:63:4", "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint32_$", - "typeString": "function (uint256) pure returns (uint32)" + "typeIdentifier": "t_bool", + "typeString": "bool" } }, - "id": 3921, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "21895:43:9", - "tryCall": false, + "src": "5344:115:4", "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" + "typeIdentifier": "t_bool", + "typeString": "bool" } }, - "nodeType": "VariableDeclarationStatement", - "src": "21870:68:9" - }, - { - "id": 3931, - "nodeType": "UncheckedBlock", - "src": "21948:96:9", - "statements": [ - { - "expression": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 3929, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { + "id": 1889, + "nodeType": "IfStatement", + "src": "5327:354:4", + "trueBody": { + "id": 1888, + "nodeType": "Block", + "src": "5470:211:4", + "statements": [ + { + "expression": { "arguments": [ { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1883, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1881, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 1878, + "name": "bond_", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1859, + "src": "5612:5:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bond_$2043_storage_ptr", + "typeString": "struct IBondManager.Bond storage pointer" + } + }, + "id": 1879, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5618:7:4", + "memberName": "balance", + "nodeType": "MemberAccess", + "referencedDeclaration": 2040, + "src": "5612:13:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "id": 1880, + "name": "_amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1852, + "src": "5628:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "5612:23:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "id": 1882, + "name": "minBond", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1533, + "src": "5639:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "5612:34:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "arguments": [], "expression": { - "id": 3925, - "name": "_message", + "argumentTypes": [], + "id": 1884, + "name": "MustMaintainMinBond", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3910, - "src": "21998:8:9", + "referencedDeclaration": 2027, + "src": "5648:19:4", "typeDescriptions": { - "typeIdentifier": "t_struct$_Message_$4046_calldata_ptr", - "typeString": "struct IBridge.Message calldata" + "typeIdentifier": "t_function_error_pure$__$returns$_t_error_$", + "typeString": "function () pure returns (error)" } }, - "id": 3926, + "id": 1885, "isConstant": false, "isLValue": false, "isPure": false, + "kind": "functionCall", "lValueRequested": false, - "memberLocation": "22007:8:9", - "memberName": "gasLimit", - "nodeType": "MemberAccess", - "referencedDeclaration": 4029, - "src": "21998:17:9", + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5648:21:4", + "tryCall": false, "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" + "typeIdentifier": "t_error", + "typeString": "error" } } ], "expression": { "argumentTypes": [ { - "typeIdentifier": "t_uint32", - "typeString": "uint32" + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_error", + "typeString": "error" } ], - "expression": { - "id": 3923, - "name": "minGasRequired", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3916, - "src": "21979:14:9", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 3924, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "21994:3:9", - "memberName": "max", - "nodeType": "MemberAccess", - "referencedDeclaration": 5766, - "src": "21979:18:9", + "id": 1877, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "5604:7:4", "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$attached_to$_t_uint256_$", - "typeString": "function (uint256,uint256) pure returns (uint256)" + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_error_$returns$__$", + "typeString": "function (bool,error) pure" } }, - "id": 3927, + "id": 1886, "isConstant": false, "isLValue": false, "isPure": false, @@ -22901,104 +6881,196 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "21979:37:9", + "src": "5604:66:4", "tryCall": false, "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" } }, - "nodeType": "BinaryOperation", - "operator": "-", - "rightExpression": { - "id": 3928, - "name": "minGasRequired", + "id": 1887, + "nodeType": "ExpressionStatement", + "src": "5604:66:4" + } + ] + } + }, + { + "expression": { + "arguments": [ + { + "expression": { + "id": 1891, + "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3916, - "src": "22019:14:9", + "referencedDeclaration": -15, + "src": "5701:3:4", "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_magic_message", + "typeString": "msg" } }, - "src": "21979:54:9", + "id": 1892, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5705:6:4", + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "5701:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 1893, + "name": "_to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1850, + "src": "5713:3:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 1894, + "name": "_amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1852, + "src": "5718:7:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } - }, - "functionReturnParameters": 3914, - "id": 3930, - "nodeType": "Return", - "src": "21972:61:9" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1890, + "name": "_withdraw", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2007, + "src": "5691:9:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 1895, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5691:35:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" } - ] + }, + "id": 1896, + "nodeType": "ExpressionStatement", + "src": "5691:35:4" } ] }, + "baseFunctions": [ + 2140 + ], + "documentation": { + "id": 1848, + "nodeType": "StructuredDocumentation", + "src": "5166:28:4", + "text": "@inheritdoc IBondManager" + }, + "functionSelector": "f3fef3a3", "implemented": true, "kind": "function", - "modifiers": [], - "name": "_invocationGasLimit", - "nameLocation": "21782:19:9", + "modifiers": [ + { + "id": 1855, + "kind": "modifierInvocation", + "modifierName": { + "id": 1854, + "name": "nonReentrant", + "nameLocations": [ + "5256:12:4" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 4382, + "src": "5256:12:4" + }, + "nodeType": "ModifierInvocation", + "src": "5256:12:4" + } + ], + "name": "withdraw", + "nameLocation": "5208:8:4", "parameters": { - "id": 3911, + "id": 1853, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 3910, + "id": 1850, "mutability": "mutable", - "name": "_message", - "nameLocation": "21819:8:9", + "name": "_to", + "nameLocation": "5225:3:4", "nodeType": "VariableDeclaration", - "scope": 3933, - "src": "21802:25:9", + "scope": 1898, + "src": "5217:11:4", "stateVariable": false, - "storageLocation": "calldata", + "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_struct$_Message_$4046_calldata_ptr", - "typeString": "struct IBridge.Message" + "typeIdentifier": "t_address", + "typeString": "address" }, "typeName": { - "id": 3909, - "nodeType": "UserDefinedTypeName", - "pathNode": { - "id": 3908, - "name": "Message", - "nameLocations": [ - "21802:7:9" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 4046, - "src": "21802:7:9" - }, - "referencedDeclaration": 4046, - "src": "21802:7:9", + "id": 1849, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5217:7:4", + "stateMutability": "nonpayable", "typeDescriptions": { - "typeIdentifier": "t_struct$_Message_$4046_storage_ptr", - "typeString": "struct IBridge.Message" + "typeIdentifier": "t_address", + "typeString": "address" } }, "visibility": "internal" - } - ], - "src": "21801:27:9" - }, - "returnParameters": { - "id": 3914, - "nodeType": "ParameterList", - "parameters": [ + }, { "constant": false, - "id": 3913, + "id": 1852, "mutability": "mutable", - "name": "", - "nameLocation": "-1:-1:-1", + "name": "_amount", + "nameLocation": "5238:7:4", "nodeType": "VariableDeclaration", - "scope": 3933, - "src": "21851:7:9", + "scope": 1898, + "src": "5230:15:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -23006,10 +7078,10 @@ "typeString": "uint256" }, "typeName": { - "id": 3912, + "id": 1851, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "21851:7:9", + "src": "5230:7:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -23018,316 +7090,515 @@ "visibility": "internal" } ], - "src": "21850:9:9" + "src": "5216:30:4" + }, + "returnParameters": { + "id": 1856, + "nodeType": "ParameterList", + "parameters": [], + "src": "5269:0:4" }, - "scope": 4009, - "stateMutability": "pure", + "scope": 2034, + "stateMutability": "nonpayable", "virtual": false, - "visibility": "private" + "visibility": "external" }, { - "id": 3959, + "id": 1947, "nodeType": "FunctionDefinition", - "src": "22056:604:9", + "src": "6144:411:4", "nodes": [], "body": { - "id": 3958, + "id": 1946, "nodeType": "Block", - "src": "22136:524:9", + "src": "6279:276:4", "nodes": [], "statements": [ { - "id": 3957, - "nodeType": "UncheckedBlock", - "src": "22564:90:9", - "statements": [ + "assignments": [ + 1910 + ], + "declarations": [ { + "constant": false, + "id": 1910, + "mutability": "mutable", + "name": "bond_", + "nameLocation": "6302:5:4", + "nodeType": "VariableDeclaration", + "scope": 1946, + "src": "6289:18:4", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bond_$2043_storage_ptr", + "typeString": "struct IBondManager.Bond" + }, + "typeName": { + "id": 1909, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 1908, + "name": "Bond", + "nameLocations": [ + "6289:4:4" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 2043, + "src": "6289:4:4" + }, + "referencedDeclaration": 2043, + "src": "6289:4:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bond_$2043_storage_ptr", + "typeString": "struct IBondManager.Bond" + } + }, + "visibility": "internal" + } + ], + "id": 1914, + "initialValue": { + "baseExpression": { + "id": 1911, + "name": "bond", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1542, + "src": "6310:4:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Bond_$2043_storage_$", + "typeString": "mapping(address => struct IBondManager.Bond storage ref)" + } + }, + "id": 1913, + "indexExpression": { + "id": 1912, + "name": "_address", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1901, + "src": "6315:8:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "6310:14:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bond_$2043_storage", + "typeString": "struct IBondManager.Bond storage ref" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "6289:35:4" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1918, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { "expression": { - "arguments": [ - { + "id": 1915, + "name": "bond_", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1910, + "src": "6339:5:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bond_$2043_storage_ptr", + "typeString": "struct IBondManager.Bond storage pointer" + } + }, + "id": 1916, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "6345:7:4", + "memberName": "balance", + "nodeType": "MemberAccess", + "referencedDeclaration": 2040, + "src": "6339:13:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<=", + "rightExpression": { + "id": 1917, + "name": "_bond", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1903, + "src": "6356:5:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "6339:22:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 1944, + "nodeType": "Block", + "src": "6453:96:4", + "statements": [ + { + "expression": { + "id": 1933, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 1931, + "name": "bondDebited_", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1906, + "src": "6467:12:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 1932, + "name": "_bond", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1903, + "src": "6482:5:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "6467:20:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1934, + "nodeType": "ExpressionStatement", + "src": "6467:20:4" + }, + { + "expression": { + "id": 1942, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "id": 1935, + "name": "bond_", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1910, + "src": "6501:5:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bond_$2043_storage_ptr", + "typeString": "struct IBondManager.Bond storage pointer" + } + }, + "id": 1937, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberLocation": "6507:7:4", + "memberName": "balance", + "nodeType": "MemberAccess", + "referencedDeclaration": 2040, + "src": "6501:13:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 3954, + "id": 1941, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { - "components": [ - { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 3951, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 3949, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 3947, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "components": [ - { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 3944, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 3942, - "name": "dataLength", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3935, - "src": "22604:10:9", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "+", - "rightExpression": { - "hexValue": "3331", - "id": 3943, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "22617:2:9", - "typeDescriptions": { - "typeIdentifier": "t_rational_31_by_1", - "typeString": "int_const 31" - }, - "value": "31" - }, - "src": "22604:15:9", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "id": 3945, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "22603:17:9", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "/", - "rightExpression": { - "hexValue": "3332", - "id": 3946, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "22623:2:9", - "typeDescriptions": { - "typeIdentifier": "t_rational_32_by_1", - "typeString": "int_const 32" - }, - "value": "32" - }, - "src": "22603:22:9", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "*", - "rightExpression": { - "hexValue": "3332", - "id": 3948, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "22628:2:9", - "typeDescriptions": { - "typeIdentifier": "t_rational_32_by_1", - "typeString": "int_const 32" - }, - "value": "32" - }, - "src": "22603:27:9", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "+", - "rightExpression": { - "hexValue": "343136", - "id": 3950, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "22633:3:9", - "typeDescriptions": { - "typeIdentifier": "t_rational_416_by_1", - "typeString": "int_const 416" - }, - "value": "416" - }, - "src": "22603:33:9", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } + "expression": { + "id": 1938, + "name": "bond_", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1910, + "src": "6517:5:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bond_$2043_storage_ptr", + "typeString": "struct IBondManager.Bond storage pointer" } - ], - "id": 3952, + }, + "id": 1939, "isConstant": false, - "isInlineArray": false, - "isLValue": false, + "isLValue": true, "isPure": false, "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "22602:35:9", + "memberLocation": "6523:7:4", + "memberName": "balance", + "nodeType": "MemberAccess", + "referencedDeclaration": 2040, + "src": "6517:13:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "id": 1940, + "name": "_bond", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1903, + "src": "6533:5:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "6517:21:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "6501:37:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1943, + "nodeType": "ExpressionStatement", + "src": "6501:37:4" + } + ] + }, + "id": 1945, + "nodeType": "IfStatement", + "src": "6335:214:4", + "trueBody": { + "id": 1930, + "nodeType": "Block", + "src": "6363:84:4", + "statements": [ + { + "expression": { + "id": 1922, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 1919, + "name": "bondDebited_", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1906, + "src": "6377:12:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "expression": { + "id": 1920, + "name": "bond_", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1910, + "src": "6392:5:4", "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_struct$_Bond_$2043_storage_ptr", + "typeString": "struct IBondManager.Bond storage pointer" } }, - "nodeType": "BinaryOperation", - "operator": "<<", - "rightExpression": { - "hexValue": "34", - "id": 3953, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "22641:1:9", - "typeDescriptions": { - "typeIdentifier": "t_rational_4_by_1", - "typeString": "int_const 4" - }, - "value": "4" - }, - "src": "22602:40:9", + "id": 1921, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "6398:7:4", + "memberName": "balance", + "nodeType": "MemberAccess", + "referencedDeclaration": 2040, + "src": "6392:13:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } + }, + "src": "6377:28:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } - ], + }, + "id": 1923, + "nodeType": "ExpressionStatement", + "src": "6377:28:4" + }, + { "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 3941, + "id": 1928, "isConstant": false, "isLValue": false, - "isPure": true, + "isPure": false, "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "22595:6:9", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_uint32_$", - "typeString": "type(uint32)" + "leftHandSide": { + "expression": { + "id": 1924, + "name": "bond_", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1910, + "src": "6419:5:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bond_$2043_storage_ptr", + "typeString": "struct IBondManager.Bond storage pointer" + } + }, + "id": 1926, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberLocation": "6425:7:4", + "memberName": "balance", + "nodeType": "MemberAccess", + "referencedDeclaration": 2040, + "src": "6419:13:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } }, - "typeName": { - "id": 3940, - "name": "uint32", - "nodeType": "ElementaryTypeName", - "src": "22595:6:9", - "typeDescriptions": {} + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "hexValue": "30", + "id": 1927, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6435:1:4", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "6419:17:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - "id": 3955, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "22595:48:9", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - "functionReturnParameters": 3939, - "id": 3956, - "nodeType": "Return", - "src": "22588:55:9" - } - ] + "id": 1929, + "nodeType": "ExpressionStatement", + "src": "6419:17:4" + } + ] + } } ] }, + "documentation": { + "id": 1899, + "nodeType": "StructuredDocumentation", + "src": "5908:231:4", + "text": "@dev Internal implementation for debiting a bond\n @param _address The address to debit the bond from\n @param _bond The amount of bond to debit in gwei\n @return bondDebited_ The actual amount debited in gwei" + }, "implemented": true, "kind": "function", "modifiers": [], - "name": "_messageCalldataCost", - "nameLocation": "22065:20:9", + "name": "_debitBond", + "nameLocation": "6153:10:4", "parameters": { - "id": 3936, + "id": 1904, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 3935, + "id": 1901, + "mutability": "mutable", + "name": "_address", + "nameLocation": "6181:8:4", + "nodeType": "VariableDeclaration", + "scope": 1947, + "src": "6173:16:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1900, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6173:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1903, "mutability": "mutable", - "name": "dataLength", - "nameLocation": "22094:10:9", + "name": "_bond", + "nameLocation": "6207:5:4", "nodeType": "VariableDeclaration", - "scope": 3959, - "src": "22086:18:9", + "scope": 1947, + "src": "6199:13:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -23335,10 +7606,10 @@ "typeString": "uint256" }, "typeName": { - "id": 3934, + "id": 1902, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "22086:7:9", + "src": "6199:7:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -23347,230 +7618,371 @@ "visibility": "internal" } ], - "src": "22085:20:9" + "src": "6163:55:4" }, "returnParameters": { - "id": 3939, + "id": 1907, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 3938, + "id": 1906, "mutability": "mutable", - "name": "", - "nameLocation": "-1:-1:-1", + "name": "bondDebited_", + "nameLocation": "6261:12:4", "nodeType": "VariableDeclaration", - "scope": 3959, - "src": "22128:6:9", + "scope": 1947, + "src": "6253:20:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" + "typeIdentifier": "t_uint256", + "typeString": "uint256" }, "typeName": { - "id": 3937, - "name": "uint32", + "id": 1905, + "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "22128:6:9", + "src": "6253:7:4", "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, "visibility": "internal" } ], - "src": "22127:8:9" + "src": "6252:22:4" }, - "scope": 4009, - "stateMutability": "pure", + "scope": 2034, + "stateMutability": "nonpayable", "virtual": false, - "visibility": "private" + "visibility": "internal" }, { - "id": 3976, + "id": 1977, "nodeType": "FunctionDefinition", - "src": "23684:2292:9", + "src": "6735:206:4", "nodes": [], "body": { - "id": 3975, + "id": 1976, "nodeType": "Block", - "src": "23766:2210:9", + "src": "6798:143:4", "nodes": [], "statements": [ { - "condition": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "assignments": [ + 1957 + ], + "declarations": [ + { + "constant": false, + "id": 1957, + "mutability": "mutable", + "name": "bond_", + "nameLocation": "6821:5:4", + "nodeType": "VariableDeclaration", + "scope": 1976, + "src": "6808:18:4", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bond_$2043_storage_ptr", + "typeString": "struct IBondManager.Bond" + }, + "typeName": { + "id": 1956, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 1955, + "name": "Bond", + "nameLocations": [ + "6808:4:4" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 2043, + "src": "6808:4:4" + }, + "referencedDeclaration": 2043, + "src": "6808:4:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bond_$2043_storage_ptr", + "typeString": "struct IBondManager.Bond" + } + }, + "visibility": "internal" + } + ], + "id": 1961, + "initialValue": { + "baseExpression": { + "id": 1958, + "name": "bond", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1542, + "src": "6829:4:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Bond_$2043_storage_$", + "typeString": "mapping(address => struct IBondManager.Bond storage ref)" + } + }, + "id": 1960, + "indexExpression": { + "id": 1959, + "name": "_address", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1950, + "src": "6834:8:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } }, - "id": 3971, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "6829:14:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bond_$2043_storage", + "typeString": "struct IBondManager.Bond storage ref" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "6808:35:4" + }, + { + "expression": { + "id": 1969, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "leftExpression": { - "id": 3967, - "name": "_gasLeft", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3962, - "src": "25501:8:9", + "leftHandSide": { + "expression": { + "id": 1962, + "name": "bond_", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1957, + "src": "6853:5:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bond_$2043_storage_ptr", + "typeString": "struct IBondManager.Bond storage pointer" + } + }, + "id": 1964, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberLocation": "6859:7:4", + "memberName": "balance", + "nodeType": "MemberAccess", + "referencedDeclaration": 2040, + "src": "6853:13:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "nodeType": "BinaryOperation", - "operator": "<", - "rightExpression": { + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 3970, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 3968, - "name": "_gasRequested", + "id": 1968, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 1965, + "name": "bond_", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1957, + "src": "6869:5:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bond_$2043_storage_ptr", + "typeString": "struct IBondManager.Bond storage pointer" + } + }, + "id": 1966, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "6875:7:4", + "memberName": "balance", + "nodeType": "MemberAccess", + "referencedDeclaration": 2040, + "src": "6869:13:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "id": 1967, + "name": "_bond", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1952, + "src": "6885:5:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "6869:21:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "6853:37:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1970, + "nodeType": "ExpressionStatement", + "src": "6853:37:4" + }, + { + "eventCall": { + "arguments": [ + { + "id": 1972, + "name": "_address", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1950, + "src": "6918:8:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 1973, + "name": "_bond", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3964, - "src": "25512:13:9", + "referencedDeclaration": 1952, + "src": "6928:5:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } - }, - "nodeType": "BinaryOperation", - "operator": "/", - "rightExpression": { - "hexValue": "3633", - "id": 3969, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "25528:2:9", - "typeDescriptions": { - "typeIdentifier": "t_rational_63_by_1", - "typeString": "int_const 63" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" }, - "value": "63" - }, - "src": "25512:18:9", + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1971, + "name": "BondCredited", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2057, + "src": "6905:12:4", "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" } }, - "src": "25501:29:9", + "id": 1974, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6905:29:4", + "tryCall": false, "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" } }, - "id": 3974, - "nodeType": "IfStatement", - "src": "25497:473:9", - "trueBody": { - "id": 3973, - "nodeType": "Block", - "src": "25532:438:9", - "statements": [ - { - "AST": { - "nativeSrc": "25919:41:9", - "nodeType": "YulBlock", - "src": "25919:41:9", - "statements": [ - { - "expression": { - "arguments": [], - "functionName": { - "name": "invalid", - "nativeSrc": "25937:7:9", - "nodeType": "YulIdentifier", - "src": "25937:7:9" - }, - "nativeSrc": "25937:9:9", - "nodeType": "YulFunctionCall", - "src": "25937:9:9" - }, - "nativeSrc": "25937:9:9", - "nodeType": "YulExpressionStatement", - "src": "25937:9:9" - } - ] - }, - "evmVersion": "shanghai", - "externalReferences": [], - "id": 3972, - "nodeType": "InlineAssembly", - "src": "25910:50:9" - } - ] - } + "id": 1975, + "nodeType": "EmitStatement", + "src": "6900:34:4" } ] }, "documentation": { - "id": 3960, + "id": 1948, "nodeType": "StructuredDocumentation", - "src": "22834:845:9", - "text": "@dev Suggested by OpenZeppelin and copied from\n https://github.com/OpenZeppelin/openzeppelin-contracts/\n blob/83c7e45092dac350b070c421cd2bf7105616cf1a/contracts/\n metatx/ERC2771Forwarder.sol#L327C1-L370C6\n @dev Checks if the requested gas was correctly forwarded to the callee.\n As a consequence of https://eips.ethereum.org/EIPS/eip-150[EIP-150]:\n - At most `gasleft() - floor(gasleft() / 64)` is forwarded to the callee.\n - At least `floor(gasleft() / 64)` is kept in the caller.\n It reverts consuming all the available gas if the forwarded gas is not the requested gas.\n IMPORTANT: The `gasLeft` parameter should be measured exactly at the end of the forwarded\n call.\n Any gas consumed in between will make room for bypassing this check." + "src": "6561:169:4", + "text": "@dev Internal implementation for crediting a bond\n @param _address The address to credit the bond to\n @param _bond The amount of bond to credit in gwei" }, "implemented": true, "kind": "function", "modifiers": [], - "name": "_checkForwardedGas", - "nameLocation": "23693:18:9", + "name": "_creditBond", + "nameLocation": "6744:11:4", "parameters": { - "id": 3965, + "id": 1953, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 3962, + "id": 1950, "mutability": "mutable", - "name": "_gasLeft", - "nameLocation": "23720:8:9", + "name": "_address", + "nameLocation": "6764:8:4", "nodeType": "VariableDeclaration", - "scope": 3976, - "src": "23712:16:9", + "scope": 1977, + "src": "6756:16:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_address", + "typeString": "address" }, "typeName": { - "id": 3961, - "name": "uint256", + "id": 1949, + "name": "address", "nodeType": "ElementaryTypeName", - "src": "23712:7:9", + "src": "6756:7:4", + "stateMutability": "nonpayable", "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_address", + "typeString": "address" } }, "visibility": "internal" }, { "constant": false, - "id": 3964, + "id": 1952, "mutability": "mutable", - "name": "_gasRequested", - "nameLocation": "23738:13:9", + "name": "_bond", + "nameLocation": "6782:5:4", "nodeType": "VariableDeclaration", - "scope": 3976, - "src": "23730:21:9", + "scope": 1977, + "src": "6774:13:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -23578,10 +7990,10 @@ "typeString": "uint256" }, "typeName": { - "id": 3963, + "id": 1951, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "23730:7:9", + "src": "6774:7:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -23590,453 +8002,696 @@ "visibility": "internal" } ], - "src": "23711:41:9" + "src": "6755:33:4" }, "returnParameters": { - "id": 3966, + "id": 1954, "nodeType": "ParameterList", "parameters": [], - "src": "23766:0:9" + "src": "6798:0:4" }, - "scope": 4009, - "stateMutability": "pure", + "scope": 2034, + "stateMutability": "nonpayable", "virtual": false, - "visibility": "private" + "visibility": "internal" }, { - "id": 3990, + "id": 2007, "nodeType": "FunctionDefinition", - "src": "25982:130:9", + "src": "7183:224:4", "nodes": [], "body": { - "id": 3989, + "id": 2006, "nodeType": "Block", - "src": "26038:74:9", + "src": "7256:151:4", "nodes": [], "statements": [ { - "condition": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "assignments": [ + 1988 + ], + "declarations": [ + { + "constant": false, + "id": 1988, + "mutability": "mutable", + "name": "debited", + "nameLocation": "7274:7:4", + "nodeType": "VariableDeclaration", + "scope": 2006, + "src": "7266:15:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1987, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7266:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 1993, + "initialValue": { + "arguments": [ + { + "id": 1990, + "name": "_from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1980, + "src": "7295:5:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 1991, + "name": "_amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1984, + "src": "7302:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1989, + "name": "_debitBond", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1947, + "src": "7284:10:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (address,uint256) returns (uint256)" + } }, - "id": 3984, + "id": 1992, "isConstant": false, "isLValue": false, "isPure": false, + "kind": "functionCall", "lValueRequested": false, - "leftExpression": { - "id": 3981, - "name": "_chainId", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3978, - "src": "26052:8:9", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7284:26:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "7266:44:4" + }, + { + "expression": { + "arguments": [ + { + "id": 1997, + "name": "_to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1982, + "src": "7343:3:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 1998, + "name": "debited", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1988, + "src": "7348:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], "expression": { - "id": 3982, - "name": "block", + "id": 1994, + "name": "bondToken", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": -4, - "src": "26064:5:9", + "referencedDeclaration": 1530, + "src": "7320:9:4", "typeDescriptions": { - "typeIdentifier": "t_magic_block", - "typeString": "block" + "typeIdentifier": "t_contract$_IERC20_$21865", + "typeString": "contract IERC20" } }, - "id": 3983, + "id": 1996, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "26070:7:9", - "memberName": "chainid", + "memberLocation": "7330:12:4", + "memberName": "safeTransfer", "nodeType": "MemberAccess", - "src": "26064:13:9", + "referencedDeclaration": 21959, + "src": "7320:22:4", "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$21865_$_t_address_$_t_uint256_$returns$__$attached_to$_t_contract$_IERC20_$21865_$", + "typeString": "function (contract IERC20,address,uint256)" } }, - "src": "26052:25:9", + "id": 1999, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7320:36:4", + "tryCall": false, "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" } }, - "id": 3988, - "nodeType": "IfStatement", - "src": "26048:57:9", - "trueBody": { - "errorCall": { - "arguments": [], - "expression": { - "argumentTypes": [], - "id": 3985, - "name": "B_INVALID_CHAINID", + "id": 2000, + "nodeType": "ExpressionStatement", + "src": "7320:36:4" + }, + { + "eventCall": { + "arguments": [ + { + "id": 2002, + "name": "_from", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2557, - "src": "26086:17:9", + "referencedDeclaration": 1980, + "src": "7385:5:4", "typeDescriptions": { - "typeIdentifier": "t_function_error_pure$__$returns$_t_error_$", - "typeString": "function () pure returns (error)" + "typeIdentifier": "t_address", + "typeString": "address" } }, - "id": 3986, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "26086:19:9", - "tryCall": false, + { + "id": 2003, + "name": "debited", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1988, + "src": "7392:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 2001, + "name": "BondWithdrawn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2080, + "src": "7371:13:4", "typeDescriptions": { - "typeIdentifier": "t_error", - "typeString": "error" + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" } }, - "id": 3987, - "nodeType": "RevertStatement", - "src": "26079:26:9" - } + "id": 2004, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7371:29:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2005, + "nodeType": "EmitStatement", + "src": "7366:34:4" } ] }, + "documentation": { + "id": 1978, + "nodeType": "StructuredDocumentation", + "src": "6947:231:4", + "text": "@dev Internal implementation for withdrawing funds from a user's bond balance\n @param _from The address whose balance will be reduced\n @param _to The recipient address\n @param _amount The amount to withdraw" + }, "implemented": true, "kind": "function", "modifiers": [], - "name": "_checkSameChain", - "nameLocation": "25991:15:9", + "name": "_withdraw", + "nameLocation": "7192:9:4", "parameters": { - "id": 3979, + "id": 1985, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 3978, + "id": 1980, + "mutability": "mutable", + "name": "_from", + "nameLocation": "7210:5:4", + "nodeType": "VariableDeclaration", + "scope": 2007, + "src": "7202:13:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1979, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "7202:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1982, + "mutability": "mutable", + "name": "_to", + "nameLocation": "7225:3:4", + "nodeType": "VariableDeclaration", + "scope": 2007, + "src": "7217:11:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1981, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "7217:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1984, "mutability": "mutable", - "name": "_chainId", - "nameLocation": "26014:8:9", + "name": "_amount", + "nameLocation": "7238:7:4", "nodeType": "VariableDeclaration", - "scope": 3990, - "src": "26007:15:9", + "scope": 2007, + "src": "7230:15:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" + "typeIdentifier": "t_uint256", + "typeString": "uint256" }, "typeName": { - "id": 3977, - "name": "uint64", + "id": 1983, + "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "26007:6:9", + "src": "7230:7:4", "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, "visibility": "internal" } ], - "src": "26006:17:9" + "src": "7201:45:4" }, "returnParameters": { - "id": 3980, + "id": 1986, "nodeType": "ParameterList", "parameters": [], - "src": "26038:0:9" + "src": "7256:0:4" }, - "scope": 4009, - "stateMutability": "view", + "scope": 2034, + "stateMutability": "nonpayable", "virtual": false, "visibility": "internal" }, { - "id": 4008, + "id": 2021, "nodeType": "FunctionDefinition", - "src": "26118:147:9", + "src": "7591:121:4", "nodes": [], "body": { - "id": 4007, + "id": 2020, "nodeType": "Block", - "src": "26174:91:9", + "src": "7666:46:4", "nodes": [], "statements": [ { - "condition": { - "commonType": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "id": 4002, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "commonType": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - }, - "id": 3997, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 3995, - "name": "_chainId", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3992, - "src": "26188:8:9", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "hexValue": "30", - "id": 3996, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "26200:1:9", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "26188:13:9", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "BinaryOperation", - "operator": "||", - "rightExpression": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 4001, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 3998, - "name": "_chainId", + "expression": { + "expression": { + "baseExpression": { + "id": 2015, + "name": "bond", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3992, - "src": "26205:8:9", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "expression": { - "id": 3999, - "name": "block", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -4, - "src": "26217:5:9", - "typeDescriptions": { - "typeIdentifier": "t_magic_block", - "typeString": "block" - } - }, - "id": 4000, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "26223:7:9", - "memberName": "chainid", - "nodeType": "MemberAccess", - "src": "26217:13:9", + "referencedDeclaration": 1542, + "src": "7683:4:4", "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Bond_$2043_storage_$", + "typeString": "mapping(address => struct IBondManager.Bond storage ref)" } }, - "src": "26205:25:9", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "src": "26188:42:9", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 4006, - "nodeType": "IfStatement", - "src": "26184:74:9", - "trueBody": { - "errorCall": { - "arguments": [], - "expression": { - "argumentTypes": [], - "id": 4003, - "name": "B_INVALID_CHAINID", + "id": 2017, + "indexExpression": { + "id": 2016, + "name": "_address", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2557, - "src": "26239:17:9", + "referencedDeclaration": 2010, + "src": "7688:8:4", "typeDescriptions": { - "typeIdentifier": "t_function_error_pure$__$returns$_t_error_$", - "typeString": "function () pure returns (error)" + "typeIdentifier": "t_address", + "typeString": "address" } }, - "id": 4004, "isConstant": false, - "isLValue": false, + "isLValue": true, "isPure": false, - "kind": "functionCall", "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "26239:19:9", - "tryCall": false, + "nodeType": "IndexAccess", + "src": "7683:14:4", "typeDescriptions": { - "typeIdentifier": "t_error", - "typeString": "error" + "typeIdentifier": "t_struct$_Bond_$2043_storage", + "typeString": "struct IBondManager.Bond storage ref" } }, - "id": 4005, - "nodeType": "RevertStatement", - "src": "26232:26:9" - } + "id": 2018, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "7698:7:4", + "memberName": "balance", + "nodeType": "MemberAccess", + "referencedDeclaration": 2040, + "src": "7683:22:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 2014, + "id": 2019, + "nodeType": "Return", + "src": "7676:29:4" } ] }, + "documentation": { + "id": 2008, + "nodeType": "StructuredDocumentation", + "src": "7413:173:4", + "text": "@dev Internal implementation for getting the bond balance\n @param _address The address to get the bond balance for\n @return The bond balance of the address" + }, "implemented": true, "kind": "function", "modifiers": [], - "name": "_checkDiffChain", - "nameLocation": "26127:15:9", + "name": "_getBondBalance", + "nameLocation": "7600:15:4", "parameters": { - "id": 3993, + "id": 2011, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 3992, + "id": 2010, "mutability": "mutable", - "name": "_chainId", - "nameLocation": "26150:8:9", + "name": "_address", + "nameLocation": "7624:8:4", "nodeType": "VariableDeclaration", - "scope": 4008, - "src": "26143:15:9", + "scope": 2021, + "src": "7616:16:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" + "typeIdentifier": "t_address", + "typeString": "address" }, "typeName": { - "id": 3991, - "name": "uint64", + "id": 2009, + "name": "address", "nodeType": "ElementaryTypeName", - "src": "26143:6:9", + "src": "7616:7:4", + "stateMutability": "nonpayable", "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" + "typeIdentifier": "t_address", + "typeString": "address" } }, "visibility": "internal" } ], - "src": "26142:17:9" + "src": "7615:18:4" }, "returnParameters": { - "id": 3994, + "id": 2014, "nodeType": "ParameterList", - "parameters": [], - "src": "26174:0:9" + "parameters": [ + { + "constant": false, + "id": 2013, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 2021, + "src": "7657:7:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2012, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7657:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "7656:9:4" }, - "scope": 4009, + "scope": 2034, "stateMutability": "view", "virtual": false, "visibility": "internal" + }, + { + "id": 2023, + "nodeType": "ErrorDefinition", + "src": "7875:25:4", + "nodes": [], + "errorSelector": "e92c469f", + "name": "InsufficientBond", + "nameLocation": "7881:16:4", + "parameters": { + "id": 2022, + "nodeType": "ParameterList", + "parameters": [], + "src": "7897:2:4" + } + }, + { + "id": 2025, + "nodeType": "ErrorDefinition", + "src": "7905:25:4", + "nodes": [], + "errorSelector": "9c8d2cd2", + "name": "InvalidRecipient", + "nameLocation": "7911:16:4", + "parameters": { + "id": 2024, + "nodeType": "ParameterList", + "parameters": [], + "src": "7927:2:4" + } + }, + { + "id": 2027, + "nodeType": "ErrorDefinition", + "src": "7935:28:4", + "nodes": [], + "errorSelector": "87da3304", + "name": "MustMaintainMinBond", + "nameLocation": "7941:19:4", + "parameters": { + "id": 2026, + "nodeType": "ParameterList", + "parameters": [], + "src": "7960:2:4" + } + }, + { + "id": 2029, + "nodeType": "ErrorDefinition", + "src": "7968:25:4", + "nodes": [], + "errorSelector": "4555262b", + "name": "NoBondToWithdraw", + "nameLocation": "7974:16:4", + "parameters": { + "id": 2028, + "nodeType": "ParameterList", + "parameters": [], + "src": "7990:2:4" + } + }, + { + "id": 2031, + "nodeType": "ErrorDefinition", + "src": "7998:30:4", + "nodes": [], + "errorSelector": "87bdc6a9", + "name": "NoWithdrawalRequested", + "nameLocation": "8004:21:4", + "parameters": { + "id": 2030, + "nodeType": "ParameterList", + "parameters": [], + "src": "8025:2:4" + } + }, + { + "id": 2033, + "nodeType": "ErrorDefinition", + "src": "8033:35:4", + "nodes": [], + "errorSelector": "fb52063b", + "name": "WithdrawalAlreadyRequested", + "nameLocation": "8039:26:4", + "parameters": { + "id": 2032, + "nodeType": "ParameterList", + "parameters": [], + "src": "8065:2:4" + } } ], "abstract": false, "baseContracts": [ { "baseName": { - "id": 2464, - "name": "EssentialResolverContract", + "id": 1516, + "name": "EssentialContract", "nameLocations": [ - "662:25:9" + "522:17:4" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 5017, - "src": "662:25:9" + "referencedDeclaration": 4802, + "src": "522:17:4" }, - "id": 2465, + "id": 1517, "nodeType": "InheritanceSpecifier", - "src": "662:25:9" + "src": "522:17:4" }, { "baseName": { - "id": 2466, - "name": "IBridge", + "id": 1518, + "name": "IBondManager", "nameLocations": [ - "689:7:9" + "541:12:4" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 4153, - "src": "689:7:9" + "referencedDeclaration": 2159, + "src": "541:12:4" }, - "id": 2467, + "id": 1519, "nodeType": "InheritanceSpecifier", - "src": "689:7:9" + "src": "541:12:4" } ], - "canonicalName": "Bridge", + "canonicalName": "BondManager", "contractDependencies": [], "contractKind": "contract", "documentation": { - "id": 2463, + "id": 1515, "nodeType": "StructuredDocumentation", - "src": "394:249:9", - "text": "@title Bridge\n @notice See the documentation for {IBridge}.\n @dev Labeled in address resolver as \"bridge\". Additionally, the code hash for the same address\n on L1 and L2 may be different.\n @custom:security-contact security@taiko.xyz" + "src": "345:153:4", + "text": "@title BondManager\n @notice L1 implementation of BondManager with time-based withdrawal mechanism\n @custom:security-contact security@taiko.xyz" }, "fullyImplemented": true, "linearizedBaseContracts": [ - 4009, - 4153, - 5017, + 2034, + 2159, 4802, 11319, 11452, @@ -24047,35 +8702,31 @@ 20161, 20171 ], - "name": "Bridge", - "nameLocation": "652:6:9", - "scope": 4010, + "name": "BondManager", + "nameLocation": "507:11:4", + "scope": 2035, "usedErrors": [ - 2557, - 2559, - 2561, - 2563, - 2565, - 2567, - 2569, - 2571, - 2573, - 2575, - 2577, - 2579, + 2023, + 2025, + 2027, + 2029, + 2031, + 2033, 4337, 4339, 4341, 4343, 4345, - 4347, - 5016, - 5441 + 4347 ], "usedEvents": [ - 2499, - 4061, - 4069, + 2050, + 2057, + 2064, + 2073, + 2080, + 2087, + 2092, 4330, 4335, 11230, @@ -24089,5 +8740,5 @@ ], "license": "MIT" }, - "id": 9 + "id": 4 } \ No newline at end of file From 9e03c7186d848d443875e2e45471ad1ece7d5431 Mon Sep 17 00:00:00 2001 From: AnshuJalan Date: Thu, 22 Jan 2026 16:09:56 +0530 Subject: [PATCH 3/8] chore: add debug --- shasta/src/l1/proposal_tx_builder.rs | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/shasta/src/l1/proposal_tx_builder.rs b/shasta/src/l1/proposal_tx_builder.rs index 5ef3f608..b273e9b5 100644 --- a/shasta/src/l1/proposal_tx_builder.rs +++ b/shasta/src/l1/proposal_tx_builder.rs @@ -140,6 +140,8 @@ impl ProposalTxBuilder { numForcedInclusions: u16::from(num_forced_inclusion), // TODO SHASTA: receive this as u16 parameter }; + tracing::debug!("Propose input: {:?}", input); + let inbox = Inbox::new(to, self.provider.clone()); let encoded_proposal_input = inbox.encodeProposeInput(input).call().await?; @@ -155,7 +157,7 @@ impl ProposalTxBuilder { _proof: proof_data, }); - tracing::debug!("{:?}", tx.input); + tracing::debug!("Transaction input: {:?}", tx.input); Ok(tx) } From 450eb1f75f2f1fb7fa93e5ab63a2cf2a6059b368 Mon Sep 17 00:00:00 2001 From: Justin Chan <147025745+nmjustinchan@users.noreply.github.com> Date: Thu, 22 Jan 2026 21:40:39 +1100 Subject: [PATCH 4/8] Jc/refac catalyst docker build (#806) * refac: add short commit hash as tag for docker build * fix: image not found in staging when using commit hash --- .github/workflows/node_docker_build.yml | 24 ++++++++++++++++++++---- 1 file changed, 20 insertions(+), 4 deletions(-) diff --git a/.github/workflows/node_docker_build.yml b/.github/workflows/node_docker_build.yml index e31af9a5..e536ddd7 100644 --- a/.github/workflows/node_docker_build.yml +++ b/.github/workflows/node_docker_build.yml @@ -119,6 +119,16 @@ jobs: ${{ needs.build.outputs.digest-amd64 }} \ ${{ needs.build.outputs.digest-arm64 }} + - name: Tag with commit SHA + run: | + SHORT_SHA="${{ github.sha }}" + SHORT_SHA=${SHORT_SHA:0:7} + SHA_TAG="sha-${SHORT_SHA}" + docker buildx imagetools create \ + -t ${DOCKER_REGISTRY}/${DOCKER_REPOSITORY_STAGING}:${SHA_TAG} \ + ${{ needs.build.outputs.digest-amd64 }} \ + ${{ needs.build.outputs.digest-arm64 }} + - name: Setup ORAS uses: oras-project/setup-oras@v1 @@ -128,12 +138,14 @@ jobs: - name: Determine tags to promote id: promote-tags run: | + SHORT_SHA="${{ github.sha }}" + SHORT_SHA=${SHORT_SHA:0:7} + SHA_TAG="sha-${SHORT_SHA}" if [[ "${{ github.ref }}" == refs/tags/* ]]; then VERSION=${GITHUB_REF#refs/tags/} - BASE_VERSION=${VERSION%} - echo "TAGS=latest $BASE_VERSION" >> $GITHUB_ENV + echo "TAGS=$VERSION $SHA_TAG" >> $GITHUB_ENV else - echo "TAGS=latest" >> $GITHUB_ENV + echo "TAGS=latest $SHA_TAG" >> $GITHUB_ENV fi - name: Login to Dockerhub registry with ORAS @@ -144,12 +156,16 @@ jobs: - name: Promote to Dockerhub Production run: | + set -e for tag in $TAGS; do echo "Current tag: $tag" source_image="${DOCKER_REGISTRY}/${DOCKER_REPOSITORY_STAGING}:${tag}" prod_image="${DOCKER_PUBLIC_REGISTRY}/${DOCKER_PUBLIC_REPOSITORY}:${tag}" echo "Promoting ${source_image} to ${prod_image}" - oras cp -r "${source_image}" "${prod_image}" + if ! oras cp -r "${source_image}" "${prod_image}"; then + echo "Error: Failed to promote tag ${tag}" >&2 + exit 1 + fi done - name: Summary From 1978daf1fd5421e908ec09d9001deb20a1a96103 Mon Sep 17 00:00:00 2001 From: AnshuJalan Date: Thu, 22 Jan 2026 20:34:26 +0530 Subject: [PATCH 5/8] feat: nits --- shasta/src/node/proposal_manager/mod.rs | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) diff --git a/shasta/src/node/proposal_manager/mod.rs b/shasta/src/node/proposal_manager/mod.rs index b873c1e3..dbb91e68 100644 --- a/shasta/src/node/proposal_manager/mod.rs +++ b/shasta/src/node/proposal_manager/mod.rs @@ -267,15 +267,12 @@ impl BatchManager { .await { Ok(preconfed_block) => { - // Surge: set the end state as the checkpoint for the proposal at the end - // of sequencing - if l2_slot_context.end_of_sequencing { - self.batch_builder.set_proposal_checkpoint(Checkpoint { - blockNumber: U48::from(preconfed_block.number), - stateRoot: preconfed_block.state_root, - blockHash: preconfed_block.hash, - })?; - } + // Surge: record the state of the preconfed block as a potential checkpoint + self.batch_builder.set_proposal_checkpoint(Checkpoint { + blockNumber: U48::from(preconfed_block.number), + stateRoot: preconfed_block.state_root, + blockHash: preconfed_block.hash, + })?; Ok(preconfed_block) } From 8fbd4a963f9cb1fcd7addd997d1c61d72071e00e Mon Sep 17 00:00:00 2001 From: AnshuJalan Date: Fri, 23 Jan 2026 10:15:47 +0530 Subject: [PATCH 6/8] feat: nits --- shasta/src/node/proposal_manager/batch_builder.rs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/shasta/src/node/proposal_manager/batch_builder.rs b/shasta/src/node/proposal_manager/batch_builder.rs index 5e340fdc..9960118c 100644 --- a/shasta/src/node/proposal_manager/batch_builder.rs +++ b/shasta/src/node/proposal_manager/batch_builder.rs @@ -342,6 +342,8 @@ impl BatchBuilder { "Submitting batch" ); + debug!("Checkpoint data before proposing: {:?}", &batch.checkpoint); + if let Err(err) = ethereum_l1 .execution_layer // TODO send a Proosal to function From 43f86c48be3153687f373f44c7a3aa98445b2e1d Mon Sep 17 00:00:00 2001 From: AnshuJalan Date: Fri, 23 Jan 2026 15:42:23 +0530 Subject: [PATCH 7/8] fix: recovery --- shasta/src/node/proposal_manager/mod.rs | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/shasta/src/node/proposal_manager/mod.rs b/shasta/src/node/proposal_manager/mod.rs index dbb91e68..32bc756a 100644 --- a/shasta/src/node/proposal_manager/mod.rs +++ b/shasta/src/node/proposal_manager/mod.rs @@ -488,6 +488,10 @@ impl BatchManager { let txs = txs.to_vec(); + // Store block data for checkpoint before block is moved + let block_hash = block.header.hash_slow(); + let block_state_root = block.header.state_root(); + // TODO validate block params self.batch_builder .recover_from( @@ -500,6 +504,15 @@ impl BatchManager { is_forced_inclusion, ) .await?; + + // Surge: Set the checkpoint for the recovered block + // This is the L2 block state that should be used as checkpoint for the proposal + self.batch_builder.set_proposal_checkpoint(Checkpoint { + blockNumber: U48::from(block_height), + stateRoot: block_state_root, + blockHash: block_hash, + })?; + Ok(()) } From 71a4d7931de9da8a634aeb3555a06bc5c7245c15 Mon Sep 17 00:00:00 2001 From: AnshuJalan Date: Wed, 28 Jan 2026 20:08:19 +0530 Subject: [PATCH 8/8] feat: add same slot composability --- shasta/src/l1/abi/Multicall.json | 44 + shasta/src/{l2 => l1}/abi/SurgeInbox.json | 0 shasta/src/l1/abi/UserOpsSubmitter.json | 179 + shasta/src/l1/bindings.rs | 25 + shasta/src/l1/config.rs | 6 + shasta/src/l1/execution_layer.rs | 159 +- shasta/src/l1/mod.rs | 1 + shasta/src/l1/proposal_tx_builder.rs | 160 +- shasta/src/l2/abi/Anchor.json | 705 ++ shasta/src/l2/abi/Bridge.json | 8744 ----------------- shasta/src/l2/bindings.rs | 13 +- shasta/src/l2/execution_layer.rs | 188 +- shasta/src/l2/taiko.rs | 17 +- shasta/src/lib.rs | 1 + .../node/proposal_manager/batch_builder.rs | 69 +- .../node/proposal_manager/bridge_handler.rs | 194 + shasta/src/node/proposal_manager/mod.rs | 105 +- shasta/src/node/proposal_manager/proposal.rs | 18 +- shasta/src/shared_abi/Bridge.json | 738 ++ shasta/src/shared_abi/bindings.rs | 17 + shasta/src/shared_abi/mod.rs | 1 + shasta/src/utils/config.rs | 11 +- 22 files changed, 2526 insertions(+), 8869 deletions(-) create mode 100644 shasta/src/l1/abi/Multicall.json rename shasta/src/{l2 => l1}/abi/SurgeInbox.json (100%) create mode 100644 shasta/src/l1/abi/UserOpsSubmitter.json create mode 100644 shasta/src/l1/bindings.rs create mode 100644 shasta/src/l2/abi/Anchor.json delete mode 100644 shasta/src/l2/abi/Bridge.json create mode 100644 shasta/src/node/proposal_manager/bridge_handler.rs create mode 100644 shasta/src/shared_abi/Bridge.json create mode 100644 shasta/src/shared_abi/bindings.rs create mode 100644 shasta/src/shared_abi/mod.rs diff --git a/shasta/src/l1/abi/Multicall.json b/shasta/src/l1/abi/Multicall.json new file mode 100644 index 00000000..53b423ce --- /dev/null +++ b/shasta/src/l1/abi/Multicall.json @@ -0,0 +1,44 @@ +{ + "abi": [ + { + "type": "receive", + "stateMutability": "payable" + }, + { + "type": "function", + "name": "multicall", + "inputs": [ + { + "name": "calls", + "type": "tuple[]", + "internalType": "struct Multicall.Call[]", + "components": [ + { + "name": "target", + "type": "address", + "internalType": "address" + }, + { + "name": "value", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "data", + "type": "bytes", + "internalType": "bytes" + } + ] + } + ], + "outputs": [ + { + "name": "results", + "type": "bytes[]", + "internalType": "bytes[]" + } + ], + "stateMutability": "payable" + } + ] +} \ No newline at end of file diff --git a/shasta/src/l2/abi/SurgeInbox.json b/shasta/src/l1/abi/SurgeInbox.json similarity index 100% rename from shasta/src/l2/abi/SurgeInbox.json rename to shasta/src/l1/abi/SurgeInbox.json diff --git a/shasta/src/l1/abi/UserOpsSubmitter.json b/shasta/src/l1/abi/UserOpsSubmitter.json new file mode 100644 index 00000000..0934ef2a --- /dev/null +++ b/shasta/src/l1/abi/UserOpsSubmitter.json @@ -0,0 +1,179 @@ +{ + "abi": [ + { + "type": "constructor", + "inputs": [ + { + "name": "_owner", + "type": "address", + "internalType": "address" + } + ], + "stateMutability": "nonpayable" + }, + { + "type": "receive", + "stateMutability": "payable" + }, + { + "type": "function", + "name": "executeBatch", + "inputs": [ + { + "name": "_ops", + "type": "tuple[]", + "internalType": "struct UserOpsSubmitter.UserOp[]", + "components": [ + { + "name": "target", + "type": "address", + "internalType": "address" + }, + { + "name": "value", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "data", + "type": "bytes", + "internalType": "bytes" + } + ] + }, + { + "name": "_signature", + "type": "bytes", + "internalType": "bytes" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "getDigest", + "inputs": [ + { + "name": "_ops", + "type": "tuple[]", + "internalType": "struct UserOpsSubmitter.UserOp[]", + "components": [ + { + "name": "target", + "type": "address", + "internalType": "address" + }, + { + "name": "value", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "data", + "type": "bytes", + "internalType": "bytes" + } + ] + } + ], + "outputs": [ + { + "name": "digest_", + "type": "bytes32", + "internalType": "bytes32" + } + ], + "stateMutability": "pure" + }, + { + "type": "function", + "name": "owner", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "stateMutability": "view" + }, + { + "type": "event", + "name": "BatchExecuted", + "inputs": [ + { + "name": "executor", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "opsCount", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "OperationExecuted", + "inputs": [ + { + "name": "index", + "type": "uint256", + "indexed": true, + "internalType": "uint256" + }, + { + "name": "target", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "value", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + }, + { + "name": "success", + "type": "bool", + "indexed": false, + "internalType": "bool" + } + ], + "anonymous": false + }, + { + "type": "error", + "name": "EMPTY_BATCH", + "inputs": [] + }, + { + "type": "error", + "name": "INVALID_OWNER", + "inputs": [] + }, + { + "type": "error", + "name": "INVALID_SIGNATURE", + "inputs": [] + }, + { + "type": "error", + "name": "OPERATION_FAILED", + "inputs": [ + { + "name": "index", + "type": "uint256", + "internalType": "uint256" + } + ] + } + ] +} \ No newline at end of file diff --git a/shasta/src/l1/bindings.rs b/shasta/src/l1/bindings.rs new file mode 100644 index 00000000..459aecf3 --- /dev/null +++ b/shasta/src/l1/bindings.rs @@ -0,0 +1,25 @@ +#![allow(clippy::too_many_arguments)] + +use alloy::sol; + +sol!( + #[allow(missing_docs)] + #[sol(rpc)] + #[derive(Debug)] + UserOpsSubmitter, + "src/l1/abi/UserOpsSubmitter.json" +); + +sol!( + #[allow(missing_docs)] + #[sol(rpc)] + SurgeInbox, + "src/l1/abi/SurgeInbox.json" +); + +sol!( + #[allow(missing_docs)] + #[sol(rpc)] + Multicall, + "src/l1/abi/Multicall.json" +); diff --git a/shasta/src/l1/config.rs b/shasta/src/l1/config.rs index 475a894b..41f13702 100644 --- a/shasta/src/l1/config.rs +++ b/shasta/src/l1/config.rs @@ -8,10 +8,14 @@ use alloy::primitives::Address; pub struct ContractAddresses { pub shasta_inbox: Address, pub proposer_checker: Address, + pub proposer_multicall: Address, + pub bridge: Address, } pub struct EthereumL1Config { pub shasta_inbox: Address, + pub proposer_multicall: Address, + pub bridge: Address, } impl TryFrom for EthereumL1Config { @@ -20,6 +24,8 @@ impl TryFrom for EthereumL1Config { fn try_from(config: ShastaConfig) -> Result { Ok(EthereumL1Config { shasta_inbox: config.shasta_inbox, + proposer_multicall: config.proposer_multicall, + bridge: config.bridge, }) } } diff --git a/shasta/src/l1/execution_layer.rs b/shasta/src/l1/execution_layer.rs index 1648c5ce..86345a13 100644 --- a/shasta/src/l1/execution_layer.rs +++ b/shasta/src/l1/execution_layer.rs @@ -1,14 +1,26 @@ use super::config::EthereumL1Config; use super::proposal_tx_builder::ProposalTxBuilder; use super::protocol_config::ProtocolConfig; -use crate::l1::config::ContractAddresses; +use crate::node::proposal_manager::proposal::Proposal; +use crate::shared_abi::bindings::{Bridge::MessageSent, IBridge::Message, SignalSent}; +use crate::{ + l1::{bindings::UserOpsSubmitter, config::ContractAddresses}, + node::proposal_manager::bridge_handler::UserOpData, +}; use alloy::{ - eips::BlockNumberOrTag, - primitives::{Address, U256, aliases::U48}, - providers::DynProvider, + eips::{BlockId, BlockNumberOrTag}, + primitives::{Address, FixedBytes, U256, aliases::U48}, + providers::{DynProvider, ext::DebugApi}, + rpc::types::{ + TransactionRequest, + trace::geth::{ + GethDebugBuiltInTracerType, GethDebugTracerType, GethDebugTracingCallOptions, + GethDebugTracingOptions, + }, + }, + sol_types::SolEvent, }; use anyhow::{Error, anyhow}; -use common::shared::l2_block_v2::L2BlockV2; use common::{ l1::{ traits::{ELTrait, PreconferProvider}, @@ -22,13 +34,10 @@ use common::{ }; use pacaya::l1::traits::{OperatorError, PreconfOperator, WhitelistProvider}; use std::sync::Arc; -use taiko_bindings::{ - anchor::ICheckpointStore::Checkpoint, - inbox::{ - IForcedInclusionStore::ForcedInclusion, - IInbox::CoreState, - Inbox::{self, InboxInstance}, - }, +use taiko_bindings::inbox::{ + IForcedInclusionStore::ForcedInclusion, + IInbox::CoreState, + Inbox::{self, InboxInstance}, }; use tokio::sync::mpsc::Sender; use tracing::info; @@ -80,13 +89,15 @@ impl ELTrait for ExecutionLayer { .map_err(|e| anyhow::anyhow!("Failed to call getConfig for Inbox: {e}"))?; tracing::info!( - "Shasta inbox: {}, Proposer checker {}", + "Shasta inbox: {}, Proposer checker: {}", specific_config.shasta_inbox, - shasta_config.proposerChecker + shasta_config.proposerChecker, ); let contract_addresses = ContractAddresses { shasta_inbox: specific_config.shasta_inbox, proposer_checker: shasta_config.proposerChecker, + proposer_multicall: specific_config.proposer_multicall, + bridge: specific_config.bridge, }; Ok(Self { @@ -174,29 +185,24 @@ impl PreconfOperator for ExecutionLayer { } impl ExecutionLayer { - pub async fn send_batch_to_l1( - &self, - l2_blocks: Vec, - num_forced_inclusion: u8, - checkpoint: Checkpoint, - ) -> Result<(), Error> { + pub async fn send_batch_to_l1(&self, batch: Proposal) -> Result<(), Error> { info!( "📦 Proposing with {} blocks | num_forced_inclusion: {}", - l2_blocks.len(), - num_forced_inclusion, + batch.l2_blocks.len(), + batch.num_forced_inclusion, ); // Build propose transaction // TODO fill extra gas percentege from config let builder = ProposalTxBuilder::new(self.provider.clone(), 10, self.checkpoint_signer.clone()); + + // Surge: This is now a multicall containing user ops and L1 calls let tx = builder .build_propose_tx( - l2_blocks, + batch, self.preconfer_address, - self.contract_addresses.shasta_inbox, - num_forced_inclusion, - checkpoint, + self.contract_addresses.clone(), ) .await?; @@ -337,3 +343,104 @@ impl common::l1::traits::PreconferBondProvider for ExecutionLayer { Ok(U256::from(bond.balance)) } } + +// Surge: L1 EL ops for Bridge Handler + +pub trait L1BridgeHandlerOps { + // Surge: This can be made to retrieve multiple signal slots + async fn find_message_and_signal_slot( + &self, + user_op_data: UserOpData, + ) -> Result)>, anyhow::Error>; +} + +// Surge: Please beward of these limitations +// - Target contracts are not verified in log checks +impl L1BridgeHandlerOps for ExecutionLayer { + async fn find_message_and_signal_slot( + &self, + user_op_data: UserOpData, + ) -> Result)>, anyhow::Error> { + // Build the call to executeBatch with a single user op + let submitter = UserOpsSubmitter::new(user_op_data.user_op_submitter, &self.provider); + let call = + submitter.executeBatch(vec![user_op_data.user_op], user_op_data.user_op_signature); + + // Create transaction request for simulation + let tx_request = TransactionRequest::default() + .from(self.preconfer_address) + .to(user_op_data.user_op_submitter) + .input(call.calldata().clone().into()); + + // Configure call tracer with logs enabled + let mut tracer_config = serde_json::Map::new(); + tracer_config.insert("withLog".to_string(), serde_json::Value::Bool(true)); + + let tracing_options = GethDebugTracingOptions { + tracer: Some(GethDebugTracerType::BuiltInTracer( + GethDebugBuiltInTracerType::CallTracer, + )), + tracer_config: serde_json::Value::Object(tracer_config).into(), + ..Default::default() + }; + + let call_options = GethDebugTracingCallOptions { + tracing_options, + ..Default::default() + }; + + // Execute the trace call simulation + let trace_result = self + .provider + .debug_trace_call( + tx_request, + BlockId::Number(BlockNumberOrTag::Latest), + call_options, + ) + .await + .map_err(|e| anyhow!("Failed to simulate executeBatch on L1: {e}"))?; + + let mut message: Option = None; + let mut slot: Option> = None; + + // Look for logs in the trace result and decode MessageSent and SignalSent events + if let alloy::rpc::types::trace::geth::GethTrace::CallTracer(call_frame) = trace_result { + for log in call_frame.logs { + // Check if this is a MessageSent or SignalSent event by matching the topic + if let Some(topics) = &log.topics { + if !topics.is_empty() { + if topics[0] == MessageSent::SIGNATURE_HASH { + // Decode the MessageSent event + let log_data = alloy::primitives::LogData::new_unchecked( + topics.clone(), + log.data.clone().unwrap_or_default(), + ); + let decoded = MessageSent::decode_log_data(&log_data).map_err(|e| { + anyhow!("Failed to decode MessageSent event L1: {e}") + })?; + + message = Some(decoded.message); + } else if topics[0] == SignalSent::SIGNATURE_HASH { + // Decode the SignalSent event + let log_data = alloy::primitives::LogData::new_unchecked( + topics.clone(), + log.data.clone().unwrap_or_default(), + ); + let decoded = SignalSent::decode_log_data(&log_data).map_err(|e| { + anyhow!("Failed to decode SignalSent event L1: {e}") + })?; + + slot = Some(decoded.slot); + } + } + } + } + } + + if let (Some(message), Some(slot)) = (message, slot) { + return Ok(Some((message, slot))); + } + + Ok(None) + } +} diff --git a/shasta/src/l1/mod.rs b/shasta/src/l1/mod.rs index a69869fe..7bcc9c57 100644 --- a/shasta/src/l1/mod.rs +++ b/shasta/src/l1/mod.rs @@ -1,3 +1,4 @@ +pub mod bindings; pub mod config; pub mod execution_layer; pub mod proposal_tx_builder; diff --git a/shasta/src/l1/proposal_tx_builder.rs b/shasta/src/l1/proposal_tx_builder.rs index b273e9b5..4f2f0e09 100644 --- a/shasta/src/l1/proposal_tx_builder.rs +++ b/shasta/src/l1/proposal_tx_builder.rs @@ -1,10 +1,20 @@ -use crate::l2::bindings::SurgeInbox; +use crate::l1::{ + bindings::{ + IInbox::ProposeInput, LibBlobs::BlobReference, Multicall, SurgeInbox, UserOpsSubmitter, + }, + config::ContractAddresses, +}; +use crate::l2::bindings::ICheckpointStore::Checkpoint; +use crate::node::proposal_manager::{ + bridge_handler::{L1Call, UserOpData}, + proposal::Proposal, +}; +use crate::shared_abi::bindings::Bridge; use alloy::{ consensus::SidecarBuilder, eips::eip4844::BlobTransactionSidecar, - network::{TransactionBuilder, TransactionBuilder4844}, primitives::{ - Address, Bytes, + Address, Bytes, U256, aliases::{U24, U48}, }, providers::{DynProvider, Provider}, @@ -15,9 +25,6 @@ use alloy::{ use alloy_json_rpc::RpcError; use anyhow::Error; use common::l1::{fees_per_gas::FeesPerGas, tools, transaction_error::TransactionError}; -use common::shared::l2_block_v2::L2BlockV2; -use taiko_bindings::anchor::ICheckpointStore::Checkpoint; -use taiko_bindings::inbox::{IInbox::ProposeInput, Inbox, LibBlobs::BlobReference}; use taiko_protocol::shasta::{ BlobCoder, manifest::{BlockManifest, DerivationSourceManifest}, @@ -46,14 +53,12 @@ impl ProposalTxBuilder { #[allow(clippy::too_many_arguments)] pub async fn build_propose_tx( &self, - l2_blocks: Vec, + batch: Proposal, from: Address, - to: Address, - num_forced_inclusion: u8, - checkpoint: Checkpoint, + contract_addresses: ContractAddresses, ) -> Result { let tx_blob = self - .build_propose_blob(l2_blocks, from, to, num_forced_inclusion, checkpoint) + .build_propose_blob(batch, from, contract_addresses) .await?; let tx_blob_gas = match self.provider.estimate_gas(tx_blob.clone()).await { Ok(gas) => gas, @@ -94,14 +99,84 @@ impl ProposalTxBuilder { #[allow(clippy::too_many_arguments)] pub async fn build_propose_blob( &self, - l2_blocks: Vec, + batch: Proposal, from: Address, - to: Address, - num_forced_inclusion: u8, - checkpoint: Checkpoint, + contract_addresses: ContractAddresses, ) -> Result { - let mut block_manifests = >::with_capacity(l2_blocks.len()); - for l2_block in &l2_blocks { + let mut multicalls: Vec = vec![]; + + // Add user op to multicall + // Note: Only adding the first call, since more calls are not expected for the POC + if !batch.user_ops.is_empty() { + multicalls.push(self.build_user_op_call(batch.user_ops.first().unwrap().clone())); + } + + // Add the proposal to the multicall + // This must always follow the user ops + multicalls.push( + self.build_propose_call(&batch, contract_addresses.shasta_inbox) + .await?, + ); + + // Add L1 calls initiated by L2 blocks in the proposal + if !batch.l1_calls.is_empty() { + multicalls.push(self.build_l1_call_call( + batch.l1_calls.first().unwrap().clone(), + contract_addresses.bridge, + )); + } + + // Build the multicall transaction request + let multicall = Multicall::new(contract_addresses.proposer_multicall, &self.provider); + let call = multicall.multicall(multicalls); + + let tx = TransactionRequest::default() + .to(contract_addresses.proposer_multicall) + .from(from) + .input(call.calldata().clone().into()); + + Ok(tx) + } + + // Surge: builds the 161-byte proof data + // [0..96: ABI-encoded checkpoint][96..161: signed checkpoint digest] + async fn build_proof_data(&self, checkpoint: &Checkpoint) -> Result { + let checkpoint_encoded = checkpoint.abi_encode(); + let checkpoint_digest = alloy::primitives::keccak256(&checkpoint_encoded); + let signature = self.checkpoint_signer.sign_hash(&checkpoint_digest).await?; + + let mut signature_bytes = [0_u8; 65]; + signature_bytes[..32].copy_from_slice(signature.r().to_be_bytes::<32>().as_slice()); + signature_bytes[32..64].copy_from_slice(signature.s().to_be_bytes::<32>().as_slice()); + signature_bytes[64] = (signature.v() as u8) + 27; + + let mut proof_data = Vec::with_capacity(161); + proof_data.extend_from_slice(&checkpoint_encoded); + proof_data.extend_from_slice(&signature_bytes); + Ok(Bytes::from(proof_data)) + } + + // Surge: Multicall builders + + fn build_user_op_call(&self, user_op_data: UserOpData) -> Multicall::Call { + let submitter = UserOpsSubmitter::new(user_op_data.user_op_submitter, &self.provider); + let call = + submitter.executeBatch(vec![user_op_data.user_op], user_op_data.user_op_signature); + + Multicall::Call { + target: user_op_data.user_op_submitter, + value: U256::ZERO, + data: call.calldata().clone(), + } + } + + async fn build_propose_call( + &self, + batch: &Proposal, + inbox_address: Address, + ) -> Result { + let mut block_manifests = >::with_capacity(batch.l2_blocks.len()); + for l2_block in &batch.l2_blocks { // Build the block manifests. block_manifests.push(BlockManifest { timestamp: l2_block.timestamp_sec, @@ -137,46 +212,31 @@ impl ProposalTxBuilder { numBlobs: sidecar.blobs.len().try_into()?, offset: U24::ZERO, }, - numForcedInclusions: u16::from(num_forced_inclusion), // TODO SHASTA: receive this as u16 parameter + numForcedInclusions: u8::from(batch.num_forced_inclusion), }; - tracing::debug!("Propose input: {:?}", input); - - let inbox = Inbox::new(to, self.provider.clone()); + let inbox = SurgeInbox::new(inbox_address, self.provider.clone()); let encoded_proposal_input = inbox.encodeProposeInput(input).call().await?; // Surge: using `proposeWithProof(..)` in Surge Inbox - let proof_data = self.build_proof_data(&checkpoint).await?; - let tx = TransactionRequest::default() - .with_from(from) - .with_to(to) - .with_blob_sidecar(sidecar) - .with_call(&SurgeInbox::proposeWithProofCall { - _lookahead: Bytes::new(), - _data: encoded_proposal_input, - _proof: proof_data, - }); - - tracing::debug!("Transaction input: {:?}", tx.input); - - Ok(tx) + let proof_data = self.build_proof_data(&batch.checkpoint).await?; + let call = inbox.proposeWithProof(Bytes::new(), encoded_proposal_input, proof_data); + + Ok(Multicall::Call { + target: inbox_address, + value: U256::ZERO, + data: call.calldata().clone(), + }) } - // Surge: builds the 161-byte proof data - // [0..96: ABI-encoded checkpoint][96..161: signed checkpoint digest] - async fn build_proof_data(&self, checkpoint: &Checkpoint) -> Result { - let checkpoint_encoded = checkpoint.abi_encode(); - let checkpoint_digest = alloy::primitives::keccak256(&checkpoint_encoded); - let signature = self.checkpoint_signer.sign_hash(&checkpoint_digest).await?; - - let mut signature_bytes = [0_u8; 65]; - signature_bytes[..32].copy_from_slice(signature.r().to_be_bytes::<32>().as_slice()); - signature_bytes[32..64].copy_from_slice(signature.s().to_be_bytes::<32>().as_slice()); - signature_bytes[64] = (signature.v() as u8) + 27; + fn build_l1_call_call(&self, l1_call: L1Call, bridge_address: Address) -> Multicall::Call { + let bridge = Bridge::new(bridge_address, &self.provider); + let call = bridge.processMessage(l1_call.message_from_l2, l1_call.signal_slot_proof); - let mut proof_data = Vec::with_capacity(161); - proof_data.extend_from_slice(&checkpoint_encoded); - proof_data.extend_from_slice(&signature_bytes); - Ok(Bytes::from(proof_data)) + Multicall::Call { + target: bridge_address, + value: U256::ZERO, + data: call.calldata().clone(), + } } } diff --git a/shasta/src/l2/abi/Anchor.json b/shasta/src/l2/abi/Anchor.json new file mode 100644 index 00000000..d15338fb --- /dev/null +++ b/shasta/src/l2/abi/Anchor.json @@ -0,0 +1,705 @@ +{ + "abi": [ + { + "type": "constructor", + "inputs": [ + { + "name": "_checkpointStore", + "type": "address", + "internalType": "contract ICheckpointStore" + }, + { + "name": "_l1ChainId", + "type": "uint64", + "internalType": "uint64" + } + ], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "ANCHOR_GAS_LIMIT", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint64", + "internalType": "uint64" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "GOLDEN_TOUCH_ADDRESS", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "acceptOwnership", + "inputs": [], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "anchorV4", + "inputs": [ + { + "name": "_checkpoint", + "type": "tuple", + "internalType": "struct ICheckpointStore.Checkpoint", + "components": [ + { + "name": "blockNumber", + "type": "uint48", + "internalType": "uint48" + }, + { + "name": "blockHash", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "stateRoot", + "type": "bytes32", + "internalType": "bytes32" + } + ] + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "anchorV4WithSignalSlots", + "inputs": [ + { + "name": "_checkpoint", + "type": "tuple", + "internalType": "struct ICheckpointStore.Checkpoint", + "components": [ + { + "name": "blockNumber", + "type": "uint48", + "internalType": "uint48" + }, + { + "name": "blockHash", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "stateRoot", + "type": "bytes32", + "internalType": "bytes32" + } + ] + }, + { + "name": "_signalSlots", + "type": "bytes32[]", + "internalType": "bytes32[]" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "anchorV5", + "inputs": [ + { + "name": "_proposalParams", + "type": "tuple", + "internalType": "struct Anchor.ProposalParams", + "components": [ + { + "name": "submissionWindowEnd", + "type": "uint48", + "internalType": "uint48" + } + ] + }, + { + "name": "_blockParams", + "type": "tuple", + "internalType": "struct Anchor.BlockParams", + "components": [ + { + "name": "anchorBlockNumber", + "type": "uint48", + "internalType": "uint48" + }, + { + "name": "anchorBlockHash", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "anchorStateRoot", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "rawTxListHash", + "type": "bytes32", + "internalType": "bytes32" + } + ] + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "blockHashes", + "inputs": [ + { + "name": "blockNumber", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [ + { + "name": "blockHash", + "type": "bytes32", + "internalType": "bytes32" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "checkpointStore", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "contract ICheckpointStore" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "getBlockState", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "tuple", + "internalType": "struct Anchor.BlockState", + "components": [ + { + "name": "anchorBlockNumber", + "type": "uint48", + "internalType": "uint48" + }, + { + "name": "ancestorsHash", + "type": "bytes32", + "internalType": "bytes32" + } + ] + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "getPreconfMetadata", + "inputs": [ + { + "name": "_blockNumber", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [ + { + "name": "", + "type": "tuple", + "internalType": "struct Anchor.PreconfMetadata", + "components": [ + { + "name": "anchorBlockNumber", + "type": "uint48", + "internalType": "uint48" + }, + { + "name": "submissionWindowEnd", + "type": "uint48", + "internalType": "uint48" + }, + { + "name": "parentSubmissionWindowEnd", + "type": "uint48", + "internalType": "uint48" + }, + { + "name": "rawTxListHash", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "parentRawTxListHash", + "type": "bytes32", + "internalType": "bytes32" + } + ] + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "impl", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "inNonReentrant", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "init", + "inputs": [ + { + "name": "_owner", + "type": "address", + "internalType": "address" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "l1ChainId", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint64", + "internalType": "uint64" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "owner", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "pause", + "inputs": [], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "paused", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "pendingOwner", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "proxiableUUID", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "bytes32", + "internalType": "bytes32" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "renounceOwnership", + "inputs": [], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "resolver", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "transferOwnership", + "inputs": [ + { + "name": "newOwner", + "type": "address", + "internalType": "address" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "unpause", + "inputs": [], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "upgradeTo", + "inputs": [ + { + "name": "newImplementation", + "type": "address", + "internalType": "address" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "upgradeToAndCall", + "inputs": [ + { + "name": "newImplementation", + "type": "address", + "internalType": "address" + }, + { + "name": "data", + "type": "bytes", + "internalType": "bytes" + } + ], + "outputs": [], + "stateMutability": "payable" + }, + { + "type": "function", + "name": "withdraw", + "inputs": [ + { + "name": "_token", + "type": "address", + "internalType": "address" + }, + { + "name": "_to", + "type": "address", + "internalType": "address" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "event", + "name": "AdminChanged", + "inputs": [ + { + "name": "previousAdmin", + "type": "address", + "indexed": false, + "internalType": "address" + }, + { + "name": "newAdmin", + "type": "address", + "indexed": false, + "internalType": "address" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "Anchored", + "inputs": [ + { + "name": "prevAnchorBlockNumber", + "type": "uint48", + "indexed": false, + "internalType": "uint48" + }, + { + "name": "anchorBlockNumber", + "type": "uint48", + "indexed": false, + "internalType": "uint48" + }, + { + "name": "ancestorsHash", + "type": "bytes32", + "indexed": false, + "internalType": "bytes32" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "BeaconUpgraded", + "inputs": [ + { + "name": "beacon", + "type": "address", + "indexed": true, + "internalType": "address" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "Initialized", + "inputs": [ + { + "name": "version", + "type": "uint8", + "indexed": false, + "internalType": "uint8" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "OwnershipTransferStarted", + "inputs": [ + { + "name": "previousOwner", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "newOwner", + "type": "address", + "indexed": true, + "internalType": "address" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "OwnershipTransferred", + "inputs": [ + { + "name": "previousOwner", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "newOwner", + "type": "address", + "indexed": true, + "internalType": "address" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "Paused", + "inputs": [ + { + "name": "account", + "type": "address", + "indexed": false, + "internalType": "address" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "Unpaused", + "inputs": [ + { + "name": "account", + "type": "address", + "indexed": false, + "internalType": "address" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "Upgraded", + "inputs": [ + { + "name": "implementation", + "type": "address", + "indexed": true, + "internalType": "address" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "Withdrawn", + "inputs": [ + { + "name": "token", + "type": "address", + "indexed": false, + "internalType": "address" + }, + { + "name": "to", + "type": "address", + "indexed": false, + "internalType": "address" + }, + { + "name": "amount", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + } + ], + "anonymous": false + }, + { + "type": "error", + "name": "ACCESS_DENIED", + "inputs": [] + }, + { + "type": "error", + "name": "AncestorsHashMismatch", + "inputs": [] + }, + { + "type": "error", + "name": "ETH_TRANSFER_FAILED", + "inputs": [] + }, + { + "type": "error", + "name": "FUNC_NOT_IMPLEMENTED", + "inputs": [] + }, + { + "type": "error", + "name": "INVALID_PAUSE_STATUS", + "inputs": [] + }, + { + "type": "error", + "name": "InvalidAddress", + "inputs": [] + }, + { + "type": "error", + "name": "InvalidBlockNumber", + "inputs": [] + }, + { + "type": "error", + "name": "InvalidL1ChainId", + "inputs": [] + }, + { + "type": "error", + "name": "InvalidL2ChainId", + "inputs": [] + }, + { + "type": "error", + "name": "InvalidSender", + "inputs": [] + }, + { + "type": "error", + "name": "REENTRANT_CALL", + "inputs": [] + }, + { + "type": "error", + "name": "ZERO_ADDRESS", + "inputs": [] + }, + { + "type": "error", + "name": "ZERO_VALUE", + "inputs": [] + } + ] +} \ No newline at end of file diff --git a/shasta/src/l2/abi/Bridge.json b/shasta/src/l2/abi/Bridge.json deleted file mode 100644 index 23a25f9d..00000000 --- a/shasta/src/l2/abi/Bridge.json +++ /dev/null @@ -1,8744 +0,0 @@ -{ - "abi": [ - { - "type": "constructor", - "inputs": [ - { - "name": "_authorized", - "type": "address", - "internalType": "address" - }, - { - "name": "_bondToken", - "type": "address", - "internalType": "address" - }, - { - "name": "_minBond", - "type": "uint256", - "internalType": "uint256" - }, - { - "name": "_withdrawalDelay", - "type": "uint48", - "internalType": "uint48" - } - ], - "stateMutability": "nonpayable" - }, - { - "type": "function", - "name": "acceptOwnership", - "inputs": [], - "outputs": [], - "stateMutability": "nonpayable" - }, - { - "type": "function", - "name": "authorized", - "inputs": [], - "outputs": [ - { - "name": "", - "type": "address", - "internalType": "address" - } - ], - "stateMutability": "view" - }, - { - "type": "function", - "name": "bond", - "inputs": [ - { - "name": "account", - "type": "address", - "internalType": "address" - } - ], - "outputs": [ - { - "name": "balance", - "type": "uint256", - "internalType": "uint256" - }, - { - "name": "withdrawalRequestedAt", - "type": "uint48", - "internalType": "uint48" - } - ], - "stateMutability": "view" - }, - { - "type": "function", - "name": "bondToken", - "inputs": [], - "outputs": [ - { - "name": "", - "type": "address", - "internalType": "contract IERC20" - } - ], - "stateMutability": "view" - }, - { - "type": "function", - "name": "cancelWithdrawal", - "inputs": [], - "outputs": [], - "stateMutability": "nonpayable" - }, - { - "type": "function", - "name": "creditBond", - "inputs": [ - { - "name": "_address", - "type": "address", - "internalType": "address" - }, - { - "name": "_bond", - "type": "uint256", - "internalType": "uint256" - } - ], - "outputs": [], - "stateMutability": "nonpayable" - }, - { - "type": "function", - "name": "debitBond", - "inputs": [ - { - "name": "_address", - "type": "address", - "internalType": "address" - }, - { - "name": "_bond", - "type": "uint256", - "internalType": "uint256" - } - ], - "outputs": [ - { - "name": "amountDebited_", - "type": "uint256", - "internalType": "uint256" - } - ], - "stateMutability": "nonpayable" - }, - { - "type": "function", - "name": "deposit", - "inputs": [ - { - "name": "_amount", - "type": "uint256", - "internalType": "uint256" - } - ], - "outputs": [], - "stateMutability": "nonpayable" - }, - { - "type": "function", - "name": "depositTo", - "inputs": [ - { - "name": "_recipient", - "type": "address", - "internalType": "address" - }, - { - "name": "_amount", - "type": "uint256", - "internalType": "uint256" - } - ], - "outputs": [], - "stateMutability": "nonpayable" - }, - { - "type": "function", - "name": "getBondBalance", - "inputs": [ - { - "name": "_address", - "type": "address", - "internalType": "address" - } - ], - "outputs": [ - { - "name": "", - "type": "uint256", - "internalType": "uint256" - } - ], - "stateMutability": "view" - }, - { - "type": "function", - "name": "hasSufficientBond", - "inputs": [ - { - "name": "_address", - "type": "address", - "internalType": "address" - }, - { - "name": "_additionalBond", - "type": "uint256", - "internalType": "uint256" - } - ], - "outputs": [ - { - "name": "", - "type": "bool", - "internalType": "bool" - } - ], - "stateMutability": "view" - }, - { - "type": "function", - "name": "impl", - "inputs": [], - "outputs": [ - { - "name": "", - "type": "address", - "internalType": "address" - } - ], - "stateMutability": "view" - }, - { - "type": "function", - "name": "inNonReentrant", - "inputs": [], - "outputs": [ - { - "name": "", - "type": "bool", - "internalType": "bool" - } - ], - "stateMutability": "view" - }, - { - "type": "function", - "name": "init", - "inputs": [ - { - "name": "_owner", - "type": "address", - "internalType": "address" - } - ], - "outputs": [], - "stateMutability": "nonpayable" - }, - { - "type": "function", - "name": "minBond", - "inputs": [], - "outputs": [ - { - "name": "", - "type": "uint256", - "internalType": "uint256" - } - ], - "stateMutability": "view" - }, - { - "type": "function", - "name": "owner", - "inputs": [], - "outputs": [ - { - "name": "", - "type": "address", - "internalType": "address" - } - ], - "stateMutability": "view" - }, - { - "type": "function", - "name": "pause", - "inputs": [], - "outputs": [], - "stateMutability": "nonpayable" - }, - { - "type": "function", - "name": "paused", - "inputs": [], - "outputs": [ - { - "name": "", - "type": "bool", - "internalType": "bool" - } - ], - "stateMutability": "view" - }, - { - "type": "function", - "name": "pendingOwner", - "inputs": [], - "outputs": [ - { - "name": "", - "type": "address", - "internalType": "address" - } - ], - "stateMutability": "view" - }, - { - "type": "function", - "name": "proxiableUUID", - "inputs": [], - "outputs": [ - { - "name": "", - "type": "bytes32", - "internalType": "bytes32" - } - ], - "stateMutability": "view" - }, - { - "type": "function", - "name": "renounceOwnership", - "inputs": [], - "outputs": [], - "stateMutability": "nonpayable" - }, - { - "type": "function", - "name": "requestWithdrawal", - "inputs": [], - "outputs": [], - "stateMutability": "nonpayable" - }, - { - "type": "function", - "name": "resolver", - "inputs": [], - "outputs": [ - { - "name": "", - "type": "address", - "internalType": "address" - } - ], - "stateMutability": "view" - }, - { - "type": "function", - "name": "transferOwnership", - "inputs": [ - { - "name": "newOwner", - "type": "address", - "internalType": "address" - } - ], - "outputs": [], - "stateMutability": "nonpayable" - }, - { - "type": "function", - "name": "unpause", - "inputs": [], - "outputs": [], - "stateMutability": "nonpayable" - }, - { - "type": "function", - "name": "upgradeTo", - "inputs": [ - { - "name": "newImplementation", - "type": "address", - "internalType": "address" - } - ], - "outputs": [], - "stateMutability": "nonpayable" - }, - { - "type": "function", - "name": "upgradeToAndCall", - "inputs": [ - { - "name": "newImplementation", - "type": "address", - "internalType": "address" - }, - { - "name": "data", - "type": "bytes", - "internalType": "bytes" - } - ], - "outputs": [], - "stateMutability": "payable" - }, - { - "type": "function", - "name": "withdraw", - "inputs": [ - { - "name": "_to", - "type": "address", - "internalType": "address" - }, - { - "name": "_amount", - "type": "uint256", - "internalType": "uint256" - } - ], - "outputs": [], - "stateMutability": "nonpayable" - }, - { - "type": "function", - "name": "withdrawalDelay", - "inputs": [], - "outputs": [ - { - "name": "", - "type": "uint48", - "internalType": "uint48" - } - ], - "stateMutability": "view" - }, - { - "type": "event", - "name": "AdminChanged", - "inputs": [ - { - "name": "previousAdmin", - "type": "address", - "indexed": false, - "internalType": "address" - }, - { - "name": "newAdmin", - "type": "address", - "indexed": false, - "internalType": "address" - } - ], - "anonymous": false - }, - { - "type": "event", - "name": "BeaconUpgraded", - "inputs": [ - { - "name": "beacon", - "type": "address", - "indexed": true, - "internalType": "address" - } - ], - "anonymous": false - }, - { - "type": "event", - "name": "BondCredited", - "inputs": [ - { - "name": "account", - "type": "address", - "indexed": true, - "internalType": "address" - }, - { - "name": "amount", - "type": "uint256", - "indexed": false, - "internalType": "uint256" - } - ], - "anonymous": false - }, - { - "type": "event", - "name": "BondDebited", - "inputs": [ - { - "name": "account", - "type": "address", - "indexed": true, - "internalType": "address" - }, - { - "name": "amount", - "type": "uint256", - "indexed": false, - "internalType": "uint256" - } - ], - "anonymous": false - }, - { - "type": "event", - "name": "BondDeposited", - "inputs": [ - { - "name": "account", - "type": "address", - "indexed": true, - "internalType": "address" - }, - { - "name": "amount", - "type": "uint256", - "indexed": false, - "internalType": "uint256" - } - ], - "anonymous": false - }, - { - "type": "event", - "name": "BondDepositedFor", - "inputs": [ - { - "name": "depositor", - "type": "address", - "indexed": true, - "internalType": "address" - }, - { - "name": "recipient", - "type": "address", - "indexed": true, - "internalType": "address" - }, - { - "name": "amount", - "type": "uint256", - "indexed": false, - "internalType": "uint256" - } - ], - "anonymous": false - }, - { - "type": "event", - "name": "BondWithdrawn", - "inputs": [ - { - "name": "account", - "type": "address", - "indexed": true, - "internalType": "address" - }, - { - "name": "amount", - "type": "uint256", - "indexed": false, - "internalType": "uint256" - } - ], - "anonymous": false - }, - { - "type": "event", - "name": "Initialized", - "inputs": [ - { - "name": "version", - "type": "uint8", - "indexed": false, - "internalType": "uint8" - } - ], - "anonymous": false - }, - { - "type": "event", - "name": "OwnershipTransferStarted", - "inputs": [ - { - "name": "previousOwner", - "type": "address", - "indexed": true, - "internalType": "address" - }, - { - "name": "newOwner", - "type": "address", - "indexed": true, - "internalType": "address" - } - ], - "anonymous": false - }, - { - "type": "event", - "name": "OwnershipTransferred", - "inputs": [ - { - "name": "previousOwner", - "type": "address", - "indexed": true, - "internalType": "address" - }, - { - "name": "newOwner", - "type": "address", - "indexed": true, - "internalType": "address" - } - ], - "anonymous": false - }, - { - "type": "event", - "name": "Paused", - "inputs": [ - { - "name": "account", - "type": "address", - "indexed": false, - "internalType": "address" - } - ], - "anonymous": false - }, - { - "type": "event", - "name": "Unpaused", - "inputs": [ - { - "name": "account", - "type": "address", - "indexed": false, - "internalType": "address" - } - ], - "anonymous": false - }, - { - "type": "event", - "name": "Upgraded", - "inputs": [ - { - "name": "implementation", - "type": "address", - "indexed": true, - "internalType": "address" - } - ], - "anonymous": false - }, - { - "type": "event", - "name": "WithdrawalCancelled", - "inputs": [ - { - "name": "account", - "type": "address", - "indexed": true, - "internalType": "address" - } - ], - "anonymous": false - }, - { - "type": "event", - "name": "WithdrawalRequested", - "inputs": [ - { - "name": "account", - "type": "address", - "indexed": true, - "internalType": "address" - }, - { - "name": "withdrawableAt", - "type": "uint256", - "indexed": false, - "internalType": "uint256" - } - ], - "anonymous": false - }, - { - "type": "error", - "name": "ACCESS_DENIED", - "inputs": [] - }, - { - "type": "error", - "name": "FUNC_NOT_IMPLEMENTED", - "inputs": [] - }, - { - "type": "error", - "name": "INVALID_PAUSE_STATUS", - "inputs": [] - }, - { - "type": "error", - "name": "InsufficientBond", - "inputs": [] - }, - { - "type": "error", - "name": "InvalidRecipient", - "inputs": [] - }, - { - "type": "error", - "name": "MustMaintainMinBond", - "inputs": [] - }, - { - "type": "error", - "name": "NoBondToWithdraw", - "inputs": [] - }, - { - "type": "error", - "name": "NoWithdrawalRequested", - "inputs": [] - }, - { - "type": "error", - "name": "REENTRANT_CALL", - "inputs": [] - }, - { - "type": "error", - "name": "WithdrawalAlreadyRequested", - "inputs": [] - }, - { - "type": "error", - "name": "ZERO_ADDRESS", - "inputs": [] - }, - { - "type": "error", - "name": "ZERO_VALUE", - "inputs": [] - } - ], - "bytecode": { - "object": "0x61014060405230608052348015610014575f5ffd5b50604051611f18380380611f188339810160408190526100339161013f565b61003b610068565b6001600160a01b0393841660c0529190921660e0526101009190915265ffffffffffff1661012052610195565b5f54610100900460ff16156100d35760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b5f5460ff90811614610122575f805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b80516001600160a01b038116811461013a575f5ffd5b919050565b5f5f5f5f60808587031215610152575f5ffd5b61015b85610124565b935061016960208601610124565b925060408501519150606085015165ffffffffffff8116811461018a575f5ffd5b939692955090935050565b60805160a05160c05160e0516101005161012051611ce16102375f395f818161048101528181610d700152610e6201525f81816103ea01528181610baa0152610ea301525f818161050901528181610c0f01528181610f49015261142f01525f81816103480152818161085e0152610c8201525f6101cc01525f818161079e015281816107de015281816109460152818161098601526109fd0152611ce15ff3fe6080604052600436106101ba575f3560e01c806379ba5097116100f2578063b6b55f2511610092578063e30c397811610062578063e30c39781461053f578063f2fde38b1461055c578063f3fef3a31461057b578063ffaad6a51461059a575f5ffd5b8063b6b55f25146104ba578063be32d1f4146104d9578063c28f4392146104f8578063dbaf21451461052b575f5ffd5b80638abf6077116100cd5780638abf6077146104205780638da5cb5b14610434578063a116e48614610451578063a7ab696114610470575f5ffd5b806379ba5097146103c5578063831518b7146103d95780638456cb591461040c575f5ffd5b8063391396de1161015d5780634f1ef286116101385780634f1ef2861461036a57806352d1902d1461037d5780635c975abb14610391578063715018a6146103b1575f5ffd5b8063391396de146103045780633f4ba83a14610323578063456cb7c614610337575f5ffd5b8063247ce85b11610198578063247ce85b1461023e5780633075db561461029457806333613cbe146102b85780633659cfe6146102e5575f5ffd5b806304f3bcec146101be57806319ab453c14610209578063226112801461022a575b5f5ffd5b3480156101c9575f5ffd5b507f00000000000000000000000000000000000000000000000000000000000000005b6040516001600160a01b0390911681526020015b60405180910390f35b348015610214575f5ffd5b50610228610223366004611954565b6105b9565b005b348015610235575f5ffd5b506102286106cb565b348015610249575f5ffd5b50610278610258366004611954565b60fb6020525f90815260409020805460019091015465ffffffffffff1682565b6040805192835265ffffffffffff909116602083015201610200565b34801561029f575f5ffd5b506102a861075d565b6040519015158152602001610200565b3480156102c3575f5ffd5b506102d76102d2366004611954565b610775565b604051908152602001610200565b3480156102f0575f5ffd5b506102286102ff366004611954565b610794565b34801561030f575f5ffd5b506102d761031e36600461196d565b61085b565b34801561032e575f5ffd5b506102286108e3565b348015610342575f5ffd5b506101ec7f000000000000000000000000000000000000000000000000000000000000000081565b6102286103783660046119a9565b61093c565b348015610388575f5ffd5b506102d76109f1565b34801561039c575f5ffd5b506102a860c954610100900460ff1660021490565b3480156103bc575f5ffd5b50610228610aa2565b3480156103d0575f5ffd5b50610228610ab3565b3480156103e4575f5ffd5b506102d77f000000000000000000000000000000000000000000000000000000000000000081565b348015610417575f5ffd5b50610228610b2a565b34801561042b575f5ffd5b506101ec610b7f565b34801561043f575f5ffd5b506033546001600160a01b03166101ec565b34801561045c575f5ffd5b506102a861046b36600461196d565b610b8d565b34801561047b575f5ffd5b506104a37f000000000000000000000000000000000000000000000000000000000000000081565b60405165ffffffffffff9091168152602001610200565b3480156104c5575f5ffd5b506102286104d4366004611a6d565b610bf0565b3480156104e4575f5ffd5b506102286104f336600461196d565b610c80565b348015610503575f5ffd5b506101ec7f000000000000000000000000000000000000000000000000000000000000000081565b348015610536575f5ffd5b50610228610cb9565b34801561054a575f5ffd5b506065546001600160a01b03166101ec565b348015610567575f5ffd5b50610228610576366004611954565b610db2565b348015610586575f5ffd5b5061022861059536600461196d565b610e23565b3480156105a5575f5ffd5b506102286105b436600461196d565b610f03565b5f54610100900460ff16158080156105d757505f54600160ff909116105b806105f05750303b1580156105f057505f5460ff166001145b6106585760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b5f805460ff191660011790558015610679575f805461ff0019166101001790555b61068282610fc5565b80156106c7575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b6106d3611023565b6106dd6002611052565b335f90815260fb60205260409020600181015465ffffffffffff16610715576040516387bdc6a960e01b815260040160405180910390fd5b60018101805465ffffffffffff1916905560405133907fc51fdb96728de385ec7859819e3997bc618362ef0dbca0ad051d856866cda3db905f90a25061075b6001611052565b565b5f600261076c60c95460ff1690565b60ff1614905090565b6001600160a01b0381165f90815260fb60205260408120545b92915050565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036107dc5760405162461bcd60e51b815260040161064f90611a84565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661080e611068565b6001600160a01b0316146108345760405162461bcd60e51b815260040161064f90611ad0565b61083d81611083565b604080515f808252602082019092526108589183919061108b565b50565b5f7f0000000000000000000000000000000000000000000000000000000000000000610886816111f5565b610890848461121e565b915081156108dc57836001600160a01b03167f85f32beeaff2d0019a8d196f06790c9a652191759c46643311344fd38920423c836040516108d391815260200190565b60405180910390a25b5092915050565b6108eb611261565b6108ff60c9805461ff001916610100179055565b6040513381527f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa9060200160405180910390a161075b335f611292565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036109845760405162461bcd60e51b815260040161064f90611a84565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166109b6611068565b6001600160a01b0316146109dc5760405162461bcd60e51b815260040161064f90611ad0565b6109e582611083565b6106c78282600161108b565b5f306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610a905760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c0000000000000000606482015260840161064f565b505f516020611c655f395f51905f5290565b610aaa611296565b61075b5f6112f0565b60655433906001600160a01b03168114610b215760405162461bcd60e51b815260206004820152602960248201527f4f776e61626c6532537465703a2063616c6c6572206973206e6f7420746865206044820152683732bb9037bbb732b960b91b606482015260840161064f565b610858816112f0565b610b32611309565b60c9805461ff0019166102001790556040513381527f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2589060200160405180910390a161075b336001611292565b5f610b88611068565b905090565b6001600160a01b0382165f90815260fb60205260408120610bce837f0000000000000000000000000000000000000000000000000000000000000000611b30565b815410801590610be85750600181015465ffffffffffff16155b949350505050565b610bf8611023565b610c026002611052565b610c376001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001633308461133b565b610c4133826113ac565b60405181815233907f8ed8c6869618197b68315ade66e75ed3906c97b111fa3ab81e5760046825c7db9060200160405180910390a26108586001611052565b7f0000000000000000000000000000000000000000000000000000000000000000610caa816111f5565b610cb483836113ac565b505050565b610cc1611023565b610ccb6002611052565b335f90815260fb602052604090208054610cf857604051634555262b60e01b815260040160405180910390fd5b600181015465ffffffffffff1615610d235760405163fb52063b60e01b815260040160405180910390fd5b60018101805465ffffffffffff4281811665ffffffffffff199093169290921790925533917fe670e4e82118d22a1f9ee18920455ebc958bae26a90a05d31d3378788b1b0e4491610d96917f00000000000000000000000000000000000000000000000000000000000000001690611b30565b60405190815260200160405180910390a25061075b6001611052565b610dba611296565b606580546001600160a01b0383166001600160a01b03199091168117909155610deb6033546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b610e2b611023565b610e356002611052565b335f90815260fb60205260409020600181015465ffffffffffff161580610e9a57506001810154610e8f907f00000000000000000000000000000000000000000000000000000000000000009065ffffffffffff16611b43565b65ffffffffffff1642105b15610eed5780547f000000000000000000000000000000000000000000000000000000000000000090610ece908490611b61565b1015610eed576040516321f68cc160e21b815260040160405180910390fd5b610ef8338484611415565b506106c76001611052565b610f0b611023565b610f156002611052565b6001600160a01b038216610f3c57604051634e46966960e11b815260040160405180910390fd5b610f716001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001633308461133b565b610f7b82826113ac565b6040518181526001600160a01b0383169033907fd723e7d201efb4985d2e17282a1a09e756601f0b4a724d36ea60913ecae4ae9a9060200160405180910390a36106c76001611052565b5f54610100900460ff16610feb5760405162461bcd60e51b815260040161064f90611b74565b610ff361149f565b6110116001600160a01b0382161561100b57816112f0565b336112f0565b5060c9805461ff001916610100179055565b600261103160c95460ff1690565b60ff160361075b5760405163dfc60d8560e01b815260040160405180910390fd5b60c9805460ff191660ff92909216919091179055565b5f516020611c655f395f51905f52546001600160a01b031690565b610858611296565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff16156110be57610cb4836114c5565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611118575060408051601f3d908101601f1916820190925261111591810190611bbf565b60015b61117b5760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b606482015260840161064f565b5f516020611c655f395f51905f5281146111e95760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b606482015260840161064f565b50610cb4838383611560565b336001600160a01b03821614610858576040516395383ea160e01b815260040160405180910390fd5b6001600160a01b0382165f90815260fb60205260408120805483106112495780545f825591506108dc565b8054839250611259908390611b61565b905592915050565b61127560c954610100900460ff1660021490565b61075b5760405163bae6e2a960e01b815260040160405180910390fd5b6106c75b6033546001600160a01b0316331461075b5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161064f565b606580546001600160a01b031916905561085881611584565b61131d60c954610100900460ff1660021490565b1561075b5760405163bae6e2a960e01b815260040160405180910390fd5b6040516001600160a01b03808516602483015283166044820152606481018290526113a69085906323b872dd60e01b906084015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b0319909316929092179091526115d5565b50505050565b6001600160a01b0382165f90815260fb6020526040902080546113d0908390611b30565b81556040518281526001600160a01b038416907f6de6fe586196fa05b73b973026c5fda3968a2933989bff3a0b6bd57644fab6069060200160405180910390a2505050565b5f611420848361121e565b90506114566001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001684836116a8565b836001600160a01b03167f0d41118e36df44efb77a471fc49fb9c0be0406d802ef95520e9fbf606e65b4558260405161149191815260200190565b60405180910390a250505050565b5f54610100900460ff1661075b5760405162461bcd60e51b815260040161064f90611b74565b6001600160a01b0381163b6115325760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840161064f565b5f516020611c655f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b611569836116d8565b5f825111806115755750805b15610cb4576113a68383611717565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b5f611629826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166117439092919063ffffffff16565b905080515f14806116495750808060200190518101906116499190611bd6565b610cb45760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b606482015260840161064f565b6040516001600160a01b038316602482015260448101829052610cb490849063a9059cbb60e01b9060640161136f565b6116e1816114c5565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b606061173c8383604051806060016040528060278152602001611c8560279139611751565b9392505050565b6060610be884845f856117c5565b60605f5f856001600160a01b03168560405161176d9190611c17565b5f60405180830381855af49150503d805f81146117a5576040519150601f19603f3d011682016040523d82523d5f602084013e6117aa565b606091505b50915091506117bb8683838761189c565b9695505050505050565b6060824710156118265760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b606482015260840161064f565b5f5f866001600160a01b031685876040516118419190611c17565b5f6040518083038185875af1925050503d805f811461187b576040519150601f19603f3d011682016040523d82523d5f602084013e611880565b606091505b50915091506118918783838761189c565b979650505050505050565b6060831561190a5782515f03611903576001600160a01b0385163b6119035760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161064f565b5081610be8565b610be8838381511561191f5781518083602001fd5b8060405162461bcd60e51b815260040161064f9190611c32565b80356001600160a01b038116811461194f575f5ffd5b919050565b5f60208284031215611964575f5ffd5b61173c82611939565b5f5f6040838503121561197e575f5ffd5b61198783611939565b946020939093013593505050565b634e487b7160e01b5f52604160045260245ffd5b5f5f604083850312156119ba575f5ffd5b6119c383611939565b9150602083013567ffffffffffffffff8111156119de575f5ffd5b8301601f810185136119ee575f5ffd5b803567ffffffffffffffff811115611a0857611a08611995565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715611a3757611a37611995565b604052818152828201602001871015611a4e575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f60208284031215611a7d575f5ffd5b5035919050565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b634e487b7160e01b5f52601160045260245ffd5b8082018082111561078e5761078e611b1c565b65ffffffffffff818116838216019081111561078e5761078e611b1c565b8181038181111561078e5761078e611b1c565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b5f60208284031215611bcf575f5ffd5b5051919050565b5f60208284031215611be6575f5ffd5b8151801515811461173c575f5ffd5b5f5b83811015611c0f578181015183820152602001611bf7565b50505f910152565b5f8251611c28818460208701611bf5565b9190910192915050565b602081525f8251806020840152611c50816040850160208701611bf5565b601f01601f1916919091016040019291505056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212208631ea18b120dd608cae3a5d1f20512dffdc4afab9092db6c85c4d2fb0413eb864736f6c634300081e0033", - "sourceMap": "498:7572:4:-:0;;;1088:4:84;1045:48;;2108:287:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4375:22:12;:20;:22::i;:::-;-1:-1:-1;;;;;2252:24:4;;;;;2286:30;;;;;;2326:18;;;;;2354:34;;;;498:7572;;5939:280:48;6007:13;;;;;;;6006:14;5998:66;;;;-1:-1:-1;;;5998:66:48;;919:2:150;5998:66:48;;;901:21:150;958:2;938:18;;;931:30;997:34;977:18;;;970:62;-1:-1:-1;;;1048:18:150;;;1041:37;1095:19;;5998:66:48;;;;;;;;6078:12;;6094:15;6078:12;;;:31;6074:139;;6125:12;:30;;-1:-1:-1;;6125:30:48;6140:15;6125:30;;;;;;6174:28;;1267:36:150;;;6174:28:48;;1255:2:150;1240:18;6174:28:48;;;;;;;6074:139;5939:280::o;14:177:150:-;93:13;;-1:-1:-1;;;;;135:31:150;;125:42;;115:70;;181:1;178;171:12;115:70;14:177;;;:::o;196:516::-;292:6;300;308;316;369:3;357:9;348:7;344:23;340:33;337:53;;;386:1;383;376:12;337:53;409:40;439:9;409:40;:::i;:::-;399:50;;468:49;513:2;502:9;498:18;468:49;:::i;:::-;458:59;;557:2;546:9;542:18;536:25;526:35;;604:2;593:9;589:18;583:25;648:14;641:5;637:26;630:5;627:37;617:65;;678:1;675;668:12;617:65;196:516;;;;-1:-1:-1;196:516:150;;-1:-1:-1;;196:516:150:o;1125:184::-;498:7572:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;", - "linkReferences": {} - }, - "deployedBytecode": { - "object": "0x6080604052600436106101ba575f3560e01c806379ba5097116100f2578063b6b55f2511610092578063e30c397811610062578063e30c39781461053f578063f2fde38b1461055c578063f3fef3a31461057b578063ffaad6a51461059a575f5ffd5b8063b6b55f25146104ba578063be32d1f4146104d9578063c28f4392146104f8578063dbaf21451461052b575f5ffd5b80638abf6077116100cd5780638abf6077146104205780638da5cb5b14610434578063a116e48614610451578063a7ab696114610470575f5ffd5b806379ba5097146103c5578063831518b7146103d95780638456cb591461040c575f5ffd5b8063391396de1161015d5780634f1ef286116101385780634f1ef2861461036a57806352d1902d1461037d5780635c975abb14610391578063715018a6146103b1575f5ffd5b8063391396de146103045780633f4ba83a14610323578063456cb7c614610337575f5ffd5b8063247ce85b11610198578063247ce85b1461023e5780633075db561461029457806333613cbe146102b85780633659cfe6146102e5575f5ffd5b806304f3bcec146101be57806319ab453c14610209578063226112801461022a575b5f5ffd5b3480156101c9575f5ffd5b507f00000000000000000000000000000000000000000000000000000000000000005b6040516001600160a01b0390911681526020015b60405180910390f35b348015610214575f5ffd5b50610228610223366004611954565b6105b9565b005b348015610235575f5ffd5b506102286106cb565b348015610249575f5ffd5b50610278610258366004611954565b60fb6020525f90815260409020805460019091015465ffffffffffff1682565b6040805192835265ffffffffffff909116602083015201610200565b34801561029f575f5ffd5b506102a861075d565b6040519015158152602001610200565b3480156102c3575f5ffd5b506102d76102d2366004611954565b610775565b604051908152602001610200565b3480156102f0575f5ffd5b506102286102ff366004611954565b610794565b34801561030f575f5ffd5b506102d761031e36600461196d565b61085b565b34801561032e575f5ffd5b506102286108e3565b348015610342575f5ffd5b506101ec7f000000000000000000000000000000000000000000000000000000000000000081565b6102286103783660046119a9565b61093c565b348015610388575f5ffd5b506102d76109f1565b34801561039c575f5ffd5b506102a860c954610100900460ff1660021490565b3480156103bc575f5ffd5b50610228610aa2565b3480156103d0575f5ffd5b50610228610ab3565b3480156103e4575f5ffd5b506102d77f000000000000000000000000000000000000000000000000000000000000000081565b348015610417575f5ffd5b50610228610b2a565b34801561042b575f5ffd5b506101ec610b7f565b34801561043f575f5ffd5b506033546001600160a01b03166101ec565b34801561045c575f5ffd5b506102a861046b36600461196d565b610b8d565b34801561047b575f5ffd5b506104a37f000000000000000000000000000000000000000000000000000000000000000081565b60405165ffffffffffff9091168152602001610200565b3480156104c5575f5ffd5b506102286104d4366004611a6d565b610bf0565b3480156104e4575f5ffd5b506102286104f336600461196d565b610c80565b348015610503575f5ffd5b506101ec7f000000000000000000000000000000000000000000000000000000000000000081565b348015610536575f5ffd5b50610228610cb9565b34801561054a575f5ffd5b506065546001600160a01b03166101ec565b348015610567575f5ffd5b50610228610576366004611954565b610db2565b348015610586575f5ffd5b5061022861059536600461196d565b610e23565b3480156105a5575f5ffd5b506102286105b436600461196d565b610f03565b5f54610100900460ff16158080156105d757505f54600160ff909116105b806105f05750303b1580156105f057505f5460ff166001145b6106585760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b5f805460ff191660011790558015610679575f805461ff0019166101001790555b61068282610fc5565b80156106c7575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b6106d3611023565b6106dd6002611052565b335f90815260fb60205260409020600181015465ffffffffffff16610715576040516387bdc6a960e01b815260040160405180910390fd5b60018101805465ffffffffffff1916905560405133907fc51fdb96728de385ec7859819e3997bc618362ef0dbca0ad051d856866cda3db905f90a25061075b6001611052565b565b5f600261076c60c95460ff1690565b60ff1614905090565b6001600160a01b0381165f90815260fb60205260408120545b92915050565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036107dc5760405162461bcd60e51b815260040161064f90611a84565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661080e611068565b6001600160a01b0316146108345760405162461bcd60e51b815260040161064f90611ad0565b61083d81611083565b604080515f808252602082019092526108589183919061108b565b50565b5f7f0000000000000000000000000000000000000000000000000000000000000000610886816111f5565b610890848461121e565b915081156108dc57836001600160a01b03167f85f32beeaff2d0019a8d196f06790c9a652191759c46643311344fd38920423c836040516108d391815260200190565b60405180910390a25b5092915050565b6108eb611261565b6108ff60c9805461ff001916610100179055565b6040513381527f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa9060200160405180910390a161075b335f611292565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036109845760405162461bcd60e51b815260040161064f90611a84565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166109b6611068565b6001600160a01b0316146109dc5760405162461bcd60e51b815260040161064f90611ad0565b6109e582611083565b6106c78282600161108b565b5f306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610a905760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c0000000000000000606482015260840161064f565b505f516020611c655f395f51905f5290565b610aaa611296565b61075b5f6112f0565b60655433906001600160a01b03168114610b215760405162461bcd60e51b815260206004820152602960248201527f4f776e61626c6532537465703a2063616c6c6572206973206e6f7420746865206044820152683732bb9037bbb732b960b91b606482015260840161064f565b610858816112f0565b610b32611309565b60c9805461ff0019166102001790556040513381527f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2589060200160405180910390a161075b336001611292565b5f610b88611068565b905090565b6001600160a01b0382165f90815260fb60205260408120610bce837f0000000000000000000000000000000000000000000000000000000000000000611b30565b815410801590610be85750600181015465ffffffffffff16155b949350505050565b610bf8611023565b610c026002611052565b610c376001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001633308461133b565b610c4133826113ac565b60405181815233907f8ed8c6869618197b68315ade66e75ed3906c97b111fa3ab81e5760046825c7db9060200160405180910390a26108586001611052565b7f0000000000000000000000000000000000000000000000000000000000000000610caa816111f5565b610cb483836113ac565b505050565b610cc1611023565b610ccb6002611052565b335f90815260fb602052604090208054610cf857604051634555262b60e01b815260040160405180910390fd5b600181015465ffffffffffff1615610d235760405163fb52063b60e01b815260040160405180910390fd5b60018101805465ffffffffffff4281811665ffffffffffff199093169290921790925533917fe670e4e82118d22a1f9ee18920455ebc958bae26a90a05d31d3378788b1b0e4491610d96917f00000000000000000000000000000000000000000000000000000000000000001690611b30565b60405190815260200160405180910390a25061075b6001611052565b610dba611296565b606580546001600160a01b0383166001600160a01b03199091168117909155610deb6033546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b610e2b611023565b610e356002611052565b335f90815260fb60205260409020600181015465ffffffffffff161580610e9a57506001810154610e8f907f00000000000000000000000000000000000000000000000000000000000000009065ffffffffffff16611b43565b65ffffffffffff1642105b15610eed5780547f000000000000000000000000000000000000000000000000000000000000000090610ece908490611b61565b1015610eed576040516321f68cc160e21b815260040160405180910390fd5b610ef8338484611415565b506106c76001611052565b610f0b611023565b610f156002611052565b6001600160a01b038216610f3c57604051634e46966960e11b815260040160405180910390fd5b610f716001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001633308461133b565b610f7b82826113ac565b6040518181526001600160a01b0383169033907fd723e7d201efb4985d2e17282a1a09e756601f0b4a724d36ea60913ecae4ae9a9060200160405180910390a36106c76001611052565b5f54610100900460ff16610feb5760405162461bcd60e51b815260040161064f90611b74565b610ff361149f565b6110116001600160a01b0382161561100b57816112f0565b336112f0565b5060c9805461ff001916610100179055565b600261103160c95460ff1690565b60ff160361075b5760405163dfc60d8560e01b815260040160405180910390fd5b60c9805460ff191660ff92909216919091179055565b5f516020611c655f395f51905f52546001600160a01b031690565b610858611296565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff16156110be57610cb4836114c5565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611118575060408051601f3d908101601f1916820190925261111591810190611bbf565b60015b61117b5760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b606482015260840161064f565b5f516020611c655f395f51905f5281146111e95760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b606482015260840161064f565b50610cb4838383611560565b336001600160a01b03821614610858576040516395383ea160e01b815260040160405180910390fd5b6001600160a01b0382165f90815260fb60205260408120805483106112495780545f825591506108dc565b8054839250611259908390611b61565b905592915050565b61127560c954610100900460ff1660021490565b61075b5760405163bae6e2a960e01b815260040160405180910390fd5b6106c75b6033546001600160a01b0316331461075b5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161064f565b606580546001600160a01b031916905561085881611584565b61131d60c954610100900460ff1660021490565b1561075b5760405163bae6e2a960e01b815260040160405180910390fd5b6040516001600160a01b03808516602483015283166044820152606481018290526113a69085906323b872dd60e01b906084015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b0319909316929092179091526115d5565b50505050565b6001600160a01b0382165f90815260fb6020526040902080546113d0908390611b30565b81556040518281526001600160a01b038416907f6de6fe586196fa05b73b973026c5fda3968a2933989bff3a0b6bd57644fab6069060200160405180910390a2505050565b5f611420848361121e565b90506114566001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001684836116a8565b836001600160a01b03167f0d41118e36df44efb77a471fc49fb9c0be0406d802ef95520e9fbf606e65b4558260405161149191815260200190565b60405180910390a250505050565b5f54610100900460ff1661075b5760405162461bcd60e51b815260040161064f90611b74565b6001600160a01b0381163b6115325760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840161064f565b5f516020611c655f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b611569836116d8565b5f825111806115755750805b15610cb4576113a68383611717565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b5f611629826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166117439092919063ffffffff16565b905080515f14806116495750808060200190518101906116499190611bd6565b610cb45760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b606482015260840161064f565b6040516001600160a01b038316602482015260448101829052610cb490849063a9059cbb60e01b9060640161136f565b6116e1816114c5565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b606061173c8383604051806060016040528060278152602001611c8560279139611751565b9392505050565b6060610be884845f856117c5565b60605f5f856001600160a01b03168560405161176d9190611c17565b5f60405180830381855af49150503d805f81146117a5576040519150601f19603f3d011682016040523d82523d5f602084013e6117aa565b606091505b50915091506117bb8683838761189c565b9695505050505050565b6060824710156118265760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b606482015260840161064f565b5f5f866001600160a01b031685876040516118419190611c17565b5f6040518083038185875af1925050503d805f811461187b576040519150601f19603f3d011682016040523d82523d5f602084013e611880565b606091505b50915091506118918783838761189c565b979650505050505050565b6060831561190a5782515f03611903576001600160a01b0385163b6119035760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161064f565b5081610be8565b610be8838381511561191f5781518083602001fd5b8060405162461bcd60e51b815260040161064f9190611c32565b80356001600160a01b038116811461194f575f5ffd5b919050565b5f60208284031215611964575f5ffd5b61173c82611939565b5f5f6040838503121561197e575f5ffd5b61198783611939565b946020939093013593505050565b634e487b7160e01b5f52604160045260245ffd5b5f5f604083850312156119ba575f5ffd5b6119c383611939565b9150602083013567ffffffffffffffff8111156119de575f5ffd5b8301601f810185136119ee575f5ffd5b803567ffffffffffffffff811115611a0857611a08611995565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715611a3757611a37611995565b604052818152828201602001871015611a4e575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f60208284031215611a7d575f5ffd5b5035919050565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b634e487b7160e01b5f52601160045260245ffd5b8082018082111561078e5761078e611b1c565b65ffffffffffff818116838216019081111561078e5761078e611b1c565b8181038181111561078e5761078e611b1c565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b5f60208284031215611bcf575f5ffd5b5051919050565b5f60208284031215611be6575f5ffd5b8151801515811461173c575f5ffd5b5f5b83811015611c0f578181015183820152602001611bf7565b50505f910152565b5f8251611c28818460208701611bf5565b9190910192915050565b602081525f8251806020840152611c50816040850160208701611bf5565b601f01601f1916919091016040019291505056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212208631ea18b120dd608cae3a5d1f20512dffdc4afab9092db6c85c4d2fb0413eb864736f6c634300081e0033", - "sourceMap": "498:7572:4:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5694:92:12;;;;;;;;;;-1:-1:-1;5769:10:12;5694:92;;;-1:-1:-1;;;;;178:32:150;;;160:51;;148:2;133:18;5694:92:12;;;;;;;;2503::4;;;;;;;;;;-1:-1:-1;2503:92:4;;;;;:::i;:::-;;:::i;:::-;;4893:267;;;;;;;;;;;;;:::i;1506:49::-;;;;;;;;;;-1:-1:-1;1506:49:4;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;763:25:150;;;836:14;824:27;;;819:2;804:18;;797:55;736:18;1506:49:4;591:267:150;5484:104:12;;;;;;;;;;;;;:::i;:::-;;;1028:14:150;;1021:22;1003:41;;991:2;976:18;5484:104:12;863:187:150;3335:123:4;;;;;;;;;;-1:-1:-1;3335:123:4;;;;;:::i;:::-;;:::i;:::-;;;1201:25:150;;;1189:2;1174:18;3335:123:4;1055:177:150;3143:195:84;;;;;;;;;;-1:-1:-1;3143:195:84;;;;;:::i;:::-;;:::i;2803:326:4:-;;;;;;;;;;-1:-1:-1;2803:326:4;;;;;:::i;:::-;;:::i;4911:245:12:-;;;;;;;;;;;;;:::i;858:35:4:-;;;;;;;;;;;;;;;3657:220:84;;;;;;:::i;:::-;;:::i;2762:131::-;;;;;;;;;;;;;:::i;5384:94:12:-;;;;;;;;;;;;5454:8;;;;;:17;:8;650:1;5454:17;;5384:94;2085:101:43;;;;;;;;;;;;;:::i;2031:212:42:-;;;;;;;;;;;;;:::i;1020:32:4:-;;;;;;;;;;;;;;;4625:241:12;;;;;;;;;;;;;:::i;5162:90::-;;;;;;;;;;;;;:::i;1462:85:43:-;;;;;;;;;;-1:-1:-1;1534:6:43;;-1:-1:-1;;;;;1534:6:43;1462:85;;4132:296:4;;;;;;;;;;-1:-1:-1;4132:296:4;;;;;:::i;:::-;;:::i;1421:39::-;;;;;;;;;;;;;;;;;;3053:14:150;3041:27;;;3023:46;;3011:2;2996:18;1421:39:4;2879:196:150;3497:228:4;;;;;;;;;;-1:-1:-1;3497:228:4;;;;;:::i;:::-;;:::i;3168:128::-;;;;;;;;;;-1:-1:-1;3168:128:4;;;;;:::i;:::-;;:::i;942:33::-;;;;;;;;;;;;;;;4467:387;;;;;;;;;;;;;:::i;1144:99:42:-;;;;;;;;;;-1:-1:-1;1223:13:42;;-1:-1:-1;;;;;1223:13:42;1144:99;;1436:178;;;;;;;;;;-1:-1:-1;1436:178:42;;;;;:::i;:::-;;:::i;5199:534:4:-;;;;;;;;;;-1:-1:-1;5199:534:4;;;;;:::i;:::-;;:::i;3764:329::-;;;;;;;;;;-1:-1:-1;3764:329:4;;;;;:::i;:::-;;:::i;2503:92::-;3279:19:48;3302:13;;;;;;3301:14;;3347:34;;;;-1:-1:-1;3365:12:48;;3380:1;3365:12;;;;:16;3347:34;3346:108;;;-1:-1:-1;3426:4:48;1713:19:64;:23;;;3387:66:48;;-1:-1:-1;3436:12:48;;;;;:17;3387:66;3325:201;;;;-1:-1:-1;;;3325:201:48;;3737:2:150;3325:201:48;;;3719:21:150;3776:2;3756:18;;;3749:30;3815:34;3795:18;;;3788:62;-1:-1:-1;;;3866:18:150;;;3859:44;3920:19;;3325:201:48;;;;;;;;;3536:12;:16;;-1:-1:-1;;3536:16:48;3551:1;3536:16;;;3562:65;;;;3596:13;:20;;-1:-1:-1;;3596:20:48;;;;;3562:65;2564:24:4::1;2581:6;2564:16;:24::i;:::-;3651:14:48::0;3647:99;;;3697:5;3681:21;;-1:-1:-1;;3681:21:48;;;3721:14;;-1:-1:-1;4102:36:150;;3721:14:48;;4090:2:150;4075:18;3721:14:48;;;;;;;3647:99;3269:483;2503:92:4;:::o;4893:267::-;2345:18:12;:16;:18::i;:::-;2373:24;650:1;2373:17;:24::i;:::-;4979:10:4::1;4953:18;4974:16:::0;;;:4:::1;:16;::::0;;;;5008:27:::1;::::0;::::1;::::0;::::1;;5000:65;;;;-1:-1:-1::0;;;5000:65:4::1;;;;;;;;;;;;5076:27;::::0;::::1;:31:::0;;-1:-1:-1;;5076:31:4::1;::::0;;5122::::1;::::0;5142:10:::1;::::0;5122:31:::1;::::0;5106:1:::1;::::0;5122:31:::1;4943:217;2418:25:12::0;611:1;2418:17;:25::i;:::-;4893:267:4:o;5484:104:12:-;5531:4;650:1;5554:18;6882:9;;;;;6786:112;5554:18;:27;;;5547:34;;5484:104;:::o;3335:123:4:-;-1:-1:-1;;;;;7683:14:4;;3400:7;7683:14;;;:4;:14;;;;;:22;3426:25;3419:32;3335:123;-1:-1:-1;;3335:123:4:o;3143:195:84:-;-1:-1:-1;;;;;1654:6:84;1637:23;1645:4;1637:23;1629:80;;;;-1:-1:-1;;;1629:80:84;;;;;;;:::i;:::-;1751:6;-1:-1:-1;;;;;1727:30:84;:20;:18;:20::i;:::-;-1:-1:-1;;;;;1727:30:84;;1719:87;;;;-1:-1:-1;;;1719:87:84;;;;;;;:::i;:::-;3224:36:::1;3242:17;3224;:36::i;:::-;3311:12;::::0;;3321:1:::1;3311:12:::0;;;::::1;::::0;::::1;::::0;;;3270:61:::1;::::0;3292:17;;3311:12;3270:21:::1;:61::i;:::-;3143:195:::0;:::o;2803:326:4:-;2940:22;2911:10;3925:17:12;3936:5;3925:10;:17::i;:::-;2995:27:4::1;3006:8;3016:5;2995:10;:27::i;:::-;2978:44:::0;-1:-1:-1;3036:18:4;;3032:91:::1;;3087:8;-1:-1:-1::0;;;;;3075:37:4::1;;3097:14;3075:37;;;;1201:25:150::0;;1189:2;1174:18;;1055:177;3075:37:4::1;;;;;;;;3032:91;2803:326:::0;;;;;:::o;4911:245:12:-;2575:14;:12;:14::i;:::-;4958:10:::1;6435:8:::0;:17;;-1:-1:-1;;6435:17:12;;;;;6388:71;4958:10:::1;4983:20;::::0;4992:10:::1;160:51:150::0;;4983:20:12::1;::::0;148:2:150;133:18;4983:20:12::1;;;;;;;5115:34;5131:10;5143:5;5115:15;:34::i;3657:220:84:-:0;-1:-1:-1;;;;;1654:6:84;1637:23;1645:4;1637:23;1629:80;;;;-1:-1:-1;;;1629:80:84;;;;;;;:::i;:::-;1751:6;-1:-1:-1;;;;;1727:30:84;:20;:18;:20::i;:::-;-1:-1:-1;;;;;1727:30:84;;1719:87;;;;-1:-1:-1;;;1719:87:84;;;;;;;:::i;:::-;3772:36:::1;3790:17;3772;:36::i;:::-;3818:52;3840:17;3859:4;3865;3818:21;:52::i;2762:131::-:0;2840:7;2080:4;-1:-1:-1;;;;;2089:6:84;2072:23;;2064:92;;;;-1:-1:-1;;;2064:92:84;;5177:2:150;2064:92:84;;;5159:21:150;5216:2;5196:18;;;5189:30;5255:34;5235:18;;;5228:62;5326:26;5306:18;;;5299:54;5370:19;;2064:92:84;4975:420:150;2064:92:84;-1:-1:-1;;;;;;;;;;;;2762:131:84;:::o;2085:101:43:-;1355:13;:11;:13::i;:::-;2149:30:::1;2176:1;2149:18;:30::i;2031:212:42:-:0;1223:13;;965:10:65;;-1:-1:-1;;;;;1223:13:42;2130:24;;2122:78;;;;-1:-1:-1;;;2122:78:42;;5602:2:150;2122:78:42;;;5584:21:150;5641:2;5621:18;;;5614:30;5680:34;5660:18;;;5653:62;-1:-1:-1;;;5731:18:150;;;5724:39;5780:19;;2122:78:42;5400:405:150;2122:78:42;2210:26;2229:6;2210:18;:26::i;4625:241:12:-;2739:17;:15;:17::i;:::-;6359:8;:16;;-1:-1:-1;;6359:16:12;;;;;4696:18:::1;::::0;4703:10:::1;160:51:150::0;;4696:18:12::1;::::0;148:2:150;133:18;4696::12::1;;;;;;;4826:33;4842:10;4854:4;4826:15;:33::i;5162:90::-:0;5199:7;5225:20;:18;:20::i;:::-;5218:27;;5162:90;:::o;4132:296:4:-;-1:-1:-1;;;;;4312:14:4;;4271:4;4312:14;;;:4;:14;;;;;4360:25;4370:15;4360:7;:25;:::i;:::-;4343:13;;:42;;;;:78;;-1:-1:-1;4389:27:4;;;;;;:32;4343:78;4336:85;4132:296;-1:-1:-1;;;;4132:296:4:o;3497:228::-;2345:18:12;:16;:18::i;:::-;2373:24;650:1;2373:17;:24::i;:::-;3563:62:4::1;-1:-1:-1::0;;;;;3563:9:4::1;:26;3590:10;3610:4;3617:7:::0;3563:26:::1;:62::i;:::-;3636:32;3648:10;3660:7;3636:11;:32::i;:::-;3684:34;::::0;1201:25:150;;;3698:10:4::1;::::0;3684:34:::1;::::0;1189:2:150;1174:18;3684:34:4::1;;;;;;;2418:25:12::0;611:1;2418:17;:25::i;3168:128:4:-;3239:10;3925:17:12;3936:5;3925:10;:17::i;:::-;3261:28:4::1;3273:8;3283:5;3261:11;:28::i;:::-;3168:128:::0;;;:::o;4467:387::-;2345:18:12;:16;:18::i;:::-;2373:24;650:1;2373:17;:24::i;:::-;4554:10:4::1;4528:18;4549:16:::0;;;:4:::1;:16;::::0;;;;4583:13;;4575:46:::1;;;;-1:-1:-1::0;;;4575:46:4::1;;;;;;;;;;;;4639:27;::::0;::::1;::::0;::::1;;:32:::0;4631:71:::1;;;;-1:-1:-1::0;;;4631:71:4::1;;;;;;;;;;;;4713:27;::::0;::::1;:53:::0;;::::1;4750:15;4713:53:::0;;::::1;-1:-1:-1::0;;4713:53:4;;::::1;::::0;;;::::1;::::0;;;4801:10:::1;::::0;4781:66:::1;::::0;4813:33:::1;::::0;4831:15:::1;4813:33;::::0;::::1;:::i;:::-;4781:66;::::0;1201:25:150;;;1189:2;1174:18;4781:66:4::1;;;;;;;4518:336;2418:25:12::0;611:1;2418:17;:25::i;1436:178:42:-;1355:13:43;:11;:13::i;:::-;1525::42::1;:24:::0;;-1:-1:-1;;;;;1525:24:42;::::1;-1:-1:-1::0;;;;;;1525:24:42;;::::1;::::0;::::1;::::0;;;1589:7:::1;1534:6:43::0;;-1:-1:-1;;;;;1534:6:43;;1462:85;1589:7:42::1;-1:-1:-1::0;;;;;1564:43:42::1;;;;;;;;;;;1436:178:::0;:::o;5199:534:4:-;2345:18:12;:16;:18::i;:::-;2373:24;650:1;2373:17;:24::i;:::-;5305:10:4::1;5279:18;5300:16:::0;;;:4:::1;:16;::::0;;;;5344:27:::1;::::0;::::1;::::0;::::1;;:32:::0;;:115:::1;;-1:-1:-1::0;5414:27:4::1;::::0;::::1;::::0;:45:::1;::::0;5444:15:::1;::::0;5414:27:::1;;:45;:::i;:::-;5396:63;;:15;:63;5344:115;5327:354;;;5612:13:::0;;5639:7:::1;::::0;5612:23:::1;::::0;5628:7;;5612:23:::1;:::i;:::-;:34;;5604:66;;;;-1:-1:-1::0;;;5604:66:4::1;;;;;;;;;;;;5691:35;5701:10;5713:3;5718:7;5691:9;:35::i;:::-;5269:464;2418:25:12::0;611:1;2418:17;:25::i;3764:329:4:-;2345:18:12;:16;:18::i;:::-;2373:24;650:1;2373:17;:24::i;:::-;-1:-1:-1;;;;;3860:24:4;::::1;3852:53;;;;-1:-1:-1::0;;;3852:53:4::1;;;;;;;;;;;;3916:62;-1:-1:-1::0;;;;;3916:9:4::1;:26;3943:10;3963:4;3970:7:::0;3916:26:::1;:62::i;:::-;3989:32;4001:10;4013:7;3989:11;:32::i;:::-;4037:49;::::0;1201:25:150;;;-1:-1:-1;;;;;4037:49:4;::::1;::::0;4054:10:::1;::::0;4037:49:::1;::::0;1189:2:150;1174:18;4037:49:4::1;;;;;;;2418:25:12::0;611:1;2418:17;:25::i;6100:208::-;5374:13:48;;;;;;;5366:69;;;;-1:-1:-1;;;5366:69:48;;;;;;;:::i;:::-;6186:16:12::1;:14;:16::i;:::-;6212:62;-1:-1:-1::0;;;;;6231:20:12;::::1;::::0;:42:::1;;6267:6;6212:18;:62::i;6231:42::-;6254:10;6212:18;:62::i;:::-;-1:-1:-1::0;6284:8:12::1;:17:::0;;-1:-1:-1;;6284:17:12::1;;;::::0;;6100:208::o;7216:112::-;650:1;7275:18;6882:9;;;;;6786:112;7275:18;:27;;;7267:54;;;;-1:-1:-1;;;7267:54:12;;;;;;;;;;;6653:97;6723:9;:20;;-1:-1:-1;;6723:20:12;;;;;;;;;;;;6653:97::o;1175:140:80:-;-1:-1:-1;;;;;;;;;;;1254:54:80;-1:-1:-1;;;;;1254:54:80;;1175:140::o;6465:75:12:-;1355:13:43;:11;:13::i;2494:922:80:-;689:66;2910:48;;;2906:504;;;2974:37;2993:17;2974:18;:37::i;2906:504::-;3064:17;-1:-1:-1;;;;;3046:50:80;;:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3046:52:80;;;;;;;;-1:-1:-1;;3046:52:80;;;;;;;;;;;;:::i;:::-;;;3042:291;;3262:56;;-1:-1:-1;;;3262:56:80;;7192:2:150;3262:56:80;;;7174:21:150;7231:2;7211:18;;;7204:30;7270:34;7250:18;;;7243:62;-1:-1:-1;;;7321:18:150;;;7314:44;7375:19;;3262:56:80;6990:410:150;3042:291:80;-1:-1:-1;;;;;;;;;;;3148:28:80;;3140:82;;;;-1:-1:-1;;;3140:82:80;;7607:2:150;3140:82:80;;;7589:21:150;7646:2;7626:18;;;7619:30;7685:34;7665:18;;;7658:62;-1:-1:-1;;;7736:18:150;;;7729:39;7785:19;;3140:82:80;7405:405:150;3140:82:80;3099:138;3346:53;3364:17;3383:4;3389:9;3346:17;:53::i;8056:110:12:-;8122:10;-1:-1:-1;;;;;8122:19:12;;;8114:45;;;;-1:-1:-1;;;8114:45:12;;;;;;;;;;;6144:411:4;-1:-1:-1;;;;;6310:14:4;;6253:20;6310:14;;;:4;:14;;;;;6339:13;;:22;-1:-1:-1;6335:214:4;;6392:13;;;6419:17;;6392:13;-1:-1:-1;6335:214:4;;;6517:13;;6482:5;;-1:-1:-1;6517:21:4;;6482:5;;6517:21;:::i;:::-;6501:37;;6144:411;;-1:-1:-1;;6144:411:4:o;7334:95:12:-;7389:8;5454;;;;;:17;:8;650:1;5454:17;;5384:94;7389:8;7381:41;;;;-1:-1:-1;;;7381:41:12;;;;;;;;;;;6546:70;1355:13:43;1620:130;1534:6;;-1:-1:-1;;;;;1534:6:43;965:10:65;1683:23:43;1675:68;;;;-1:-1:-1;;;1675:68:43;;8017:2:150;1675:68:43;;;7999:21:150;;;8036:18;;;8029:30;8095:34;8075:18;;;8068:62;8147:18;;1675:68:43;7815:356:150;1798:153:42;1887:13;1880:20;;-1:-1:-1;;;;;;1880:20:42;;;1910:34;1935:8;1910:24;:34::i;7435:99:12:-;7494:8;5454;;;;;:17;:8;650:1;5454:17;;5384:94;7494:8;7493:9;7485:42;;;;-1:-1:-1;;;7485:42:12;;;;;;;;;;;1355:203:91;1482:68;;-1:-1:-1;;;;;8396:32:150;;;1482:68:91;;;8378:51:150;8465:32;;8445:18;;;8438:60;8514:18;;;8507:34;;;1455:96:91;;1475:5;;-1:-1:-1;;;1505:27:91;8351:18:150;;1482:68:91;;;;-1:-1:-1;;1482:68:91;;;;;;;;;;;;;;-1:-1:-1;;;;;1482:68:91;-1:-1:-1;;;;;;1482:68:91;;;;;;;;;;1455:19;:96::i;:::-;1355:203;;;;:::o;6735:206:4:-;-1:-1:-1;;;;;6829:14:4;;6808:18;6829:14;;;:4;:14;;;;;6869:13;;:21;;6885:5;;6869:21;:::i;:::-;6853:37;;6905:29;;1201:25:150;;;-1:-1:-1;;;;;6905:29:4;;;;;1189:2:150;1174:18;6905:29:4;;;;;;;6798:143;6735:206;;:::o;7183:224::-;7266:15;7284:26;7295:5;7302:7;7284:10;:26::i;:::-;7266:44;-1:-1:-1;7320:36:4;-1:-1:-1;;;;;7320:9:4;:22;7343:3;7266:44;7320:22;:36::i;:::-;7385:5;-1:-1:-1;;;;;7371:29:4;;7392:7;7371:29;;;;1201:25:150;;1189:2;1174:18;;1055:177;7371:29:4;;;;;;;;7256:151;7183:224;;;:::o;747:59:65:-;5374:13:48;;;;;;;5366:69;;;;-1:-1:-1;;;5366:69:48;;;;;;;:::i;1406:259:80:-;-1:-1:-1;;;;;1713:19:64;;;1479:95:80;;;;-1:-1:-1;;;1479:95:80;;8754:2:150;1479:95:80;;;8736:21:150;8793:2;8773:18;;;8766:30;8832:34;8812:18;;;8805:62;-1:-1:-1;;;8883:18:150;;;8876:43;8936:19;;1479:95:80;8552:409:150;1479:95:80;-1:-1:-1;;;;;;;;;;;1584:74:80;;-1:-1:-1;;;;;;1584:74:80;-1:-1:-1;;;;;1584:74:80;;;;;;;;;;1406:259::o;2057:265::-;2165:29;2176:17;2165:10;:29::i;:::-;2222:1;2208:4;:11;:15;:28;;;;2227:9;2208:28;2204:112;;;2252:53;2281:17;2300:4;2252:28;:53::i;2687:187:43:-;2779:6;;;-1:-1:-1;;;;;2795:17:43;;;-1:-1:-1;;;;;;2795:17:43;;;;;;;2827:40;;2779:6;;;2795:17;2779:6;;2827:40;;2760:16;;2827:40;2750:124;2687:187;:::o;5196:642:91:-;5615:23;5641:69;5669:4;5641:69;;;;;;;;;;;;;;;;;5649:5;-1:-1:-1;;;;;5641:27:91;;;:69;;;;;:::i;:::-;5615:95;;5728:10;:17;5749:1;5728:22;:56;;;;5765:10;5754:30;;;;;;;;;;;;:::i;:::-;5720:111;;;;-1:-1:-1;;;5720:111:91;;9450:2:150;5720:111:91;;;9432:21:150;9489:2;9469:18;;;9462:30;9528:34;9508:18;;;9501:62;-1:-1:-1;;;9579:18:150;;;9572:40;9629:19;;5720:111:91;9248:406:150;941:175:91;1050:58;;-1:-1:-1;;;;;9851:32:150;;1050:58:91;;;9833:51:150;9900:18;;;9893:34;;;1023:86:91;;1043:5;;-1:-1:-1;;;1073:23:91;9806:18:150;;1050:58:91;9659:274:150;1771:152:80;1837:37;1856:17;1837:18;:37::i;:::-;1889:27;;-1:-1:-1;;;;;1889:27:80;;;;;;;;1771:152;:::o;6674:198:94:-;6757:12;6788:77;6809:6;6817:4;6788:77;;;;;;;;;;;;;;;;;:20;:77::i;:::-;6781:84;6674:198;-1:-1:-1;;;6674:198:94:o;4108:223::-;4241:12;4272:52;4294:6;4302:4;4308:1;4311:12;4272:21;:52::i;7058:325::-;7199:12;7224;7238:23;7265:6;-1:-1:-1;;;;;7265:19:94;7285:4;7265:25;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7223:67;;;;7307:69;7334:6;7342:7;7351:10;7363:12;7307:26;:69::i;:::-;7300:76;7058:325;-1:-1:-1;;;;;;7058:325:94:o;5165:446::-;5330:12;5387:5;5362:21;:30;;5354:81;;;;-1:-1:-1;;;5354:81:94;;10687:2:150;5354:81:94;;;10669:21:150;10726:2;10706:18;;;10699:30;10765:34;10745:18;;;10738:62;-1:-1:-1;;;10816:18:150;;;10809:36;10862:19;;5354:81:94;10485:402:150;5354:81:94;5446:12;5460:23;5487:6;-1:-1:-1;;;;;5487:11:94;5506:5;5513:4;5487:31;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5445:73;;;;5535:69;5562:6;5570:7;5579:10;5591:12;5535:26;:69::i;:::-;5528:76;5165:446;-1:-1:-1;;;;;;;5165:446:94:o;7671:628::-;7851:12;7879:7;7875:418;;;7906:10;:17;7927:1;7906:22;7902:286;;-1:-1:-1;;;;;1713:19:64;;;8113:60:94;;;;-1:-1:-1;;;8113:60:94;;11094:2:150;8113:60:94;;;11076:21:150;11133:2;11113:18;;;11106:30;11172:31;11152:18;;;11145:59;11221:18;;8113:60:94;10892:353:150;8113:60:94;-1:-1:-1;8208:10:94;8201:17;;7875:418;8249:33;8257:10;8269:12;8980:17;;:21;8976:379;;9208:10;9202:17;9264:15;9251:10;9247:2;9243:19;9236:44;8976:379;9331:12;9324:20;;-1:-1:-1;;;9324:20:94;;;;;;;;:::i;222:173:150:-;290:20;;-1:-1:-1;;;;;339:31:150;;329:42;;319:70;;385:1;382;375:12;319:70;222:173;;;:::o;400:186::-;459:6;512:2;500:9;491:7;487:23;483:32;480:52;;;528:1;525;518:12;480:52;551:29;570:9;551:29;:::i;1237:300::-;1305:6;1313;1366:2;1354:9;1345:7;1341:23;1337:32;1334:52;;;1382:1;1379;1372:12;1334:52;1405:29;1424:9;1405:29;:::i;:::-;1395:39;1503:2;1488:18;;;;1475:32;;-1:-1:-1;;;1237:300:150:o;1542:127::-;1603:10;1598:3;1594:20;1591:1;1584:31;1634:4;1631:1;1624:15;1658:4;1655:1;1648:15;1674:1018;1751:6;1759;1812:2;1800:9;1791:7;1787:23;1783:32;1780:52;;;1828:1;1825;1818:12;1780:52;1851:29;1870:9;1851:29;:::i;:::-;1841:39;;1931:2;1920:9;1916:18;1903:32;1958:18;1950:6;1947:30;1944:50;;;1990:1;1987;1980:12;1944:50;2013:22;;2066:4;2058:13;;2054:27;-1:-1:-1;2044:55:150;;2095:1;2092;2085:12;2044:55;2135:2;2122:16;2161:18;2153:6;2150:30;2147:56;;;2183:18;;:::i;:::-;2232:2;2226:9;2324:2;2286:17;;-1:-1:-1;;2282:31:150;;;2315:2;2278:40;2274:54;2262:67;;2359:18;2344:34;;2380:22;;;2341:62;2338:88;;;2406:18;;:::i;:::-;2442:2;2435:22;2466;;;2507:15;;;2524:2;2503:24;2500:37;-1:-1:-1;2497:57:150;;;2550:1;2547;2540:12;2497:57;2606:6;2601:2;2597;2593:11;2588:2;2580:6;2576:15;2563:50;2659:1;2654:2;2645:6;2637;2633:19;2629:28;2622:39;2680:6;2670:16;;;;;1674:1018;;;;;:::o;3080:226::-;3139:6;3192:2;3180:9;3171:7;3167:23;3163:32;3160:52;;;3208:1;3205;3198:12;3160:52;-1:-1:-1;3253:23:150;;3080:226;-1:-1:-1;3080:226:150:o;4149:408::-;4351:2;4333:21;;;4390:2;4370:18;;;4363:30;4429:34;4424:2;4409:18;;4402:62;-1:-1:-1;;;4495:2:150;4480:18;;4473:42;4547:3;4532:19;;4149:408::o;4562:::-;4764:2;4746:21;;;4803:2;4783:18;;;4776:30;4842:34;4837:2;4822:18;;4815:62;-1:-1:-1;;;4908:2:150;4893:18;;4886:42;4960:3;4945:19;;4562:408::o;5810:127::-;5871:10;5866:3;5862:20;5859:1;5852:31;5902:4;5899:1;5892:15;5926:4;5923:1;5916:15;5942:125;6007:9;;;6028:10;;;6025:36;;;6041:18;;:::i;6072:179::-;6171:14;6140:22;;;6164;;;6136:51;;6199:23;;6196:49;;;6225:18;;:::i;6256:128::-;6323:9;;;6344:11;;;6341:37;;;6358:18;;:::i;6389:407::-;6591:2;6573:21;;;6630:2;6610:18;;;6603:30;6669:34;6664:2;6649:18;;6642:62;-1:-1:-1;;;6735:2:150;6720:18;;6713:41;6786:3;6771:19;;6389:407::o;6801:184::-;6871:6;6924:2;6912:9;6903:7;6899:23;6895:32;6892:52;;;6940:1;6937;6930:12;6892:52;-1:-1:-1;6963:16:150;;6801:184;-1:-1:-1;6801:184:150:o;8966:277::-;9033:6;9086:2;9074:9;9065:7;9061:23;9057:32;9054:52;;;9102:1;9099;9092:12;9054:52;9134:9;9128:16;9187:5;9180:13;9173:21;9166:5;9163:32;9153:60;;9209:1;9206;9199:12;9938:250;10023:1;10033:113;10047:6;10044:1;10041:13;10033:113;;;10123:11;;;10117:18;10104:11;;;10097:39;10069:2;10062:10;10033:113;;;-1:-1:-1;;10180:1:150;10162:16;;10155:27;9938:250::o;10193:287::-;10322:3;10360:6;10354:13;10376:66;10435:6;10430:3;10423:4;10415:6;10411:17;10376:66;:::i;:::-;10458:16;;;;;10193:287;-1:-1:-1;;10193:287:150:o;11250:396::-;11399:2;11388:9;11381:21;11362:4;11431:6;11425:13;11474:6;11469:2;11458:9;11454:18;11447:34;11490:79;11562:6;11557:2;11546:9;11542:18;11537:2;11529:6;11525:15;11490:79;:::i;:::-;11630:2;11609:15;-1:-1:-1;;11605:29:150;11590:45;;;;11637:2;11586:54;;11250:396;-1:-1:-1;;11250:396:150:o", - "linkReferences": {}, - "immutableReferences": { - "1526": [ - { - "start": 840, - "length": 32 - }, - { - "start": 2142, - "length": 32 - }, - { - "start": 3202, - "length": 32 - } - ], - "1530": [ - { - "start": 1289, - "length": 32 - }, - { - "start": 3087, - "length": 32 - }, - { - "start": 3913, - "length": 32 - }, - { - "start": 5167, - "length": 32 - } - ], - "1533": [ - { - "start": 1002, - "length": 32 - }, - { - "start": 2986, - "length": 32 - }, - { - "start": 3747, - "length": 32 - } - ], - "1536": [ - { - "start": 1153, - "length": 32 - }, - { - "start": 3440, - "length": 32 - }, - { - "start": 3682, - "length": 32 - } - ], - "20913": [ - { - "start": 1950, - "length": 32 - }, - { - "start": 2014, - "length": 32 - }, - { - "start": 2374, - "length": 32 - }, - { - "start": 2438, - "length": 32 - }, - { - "start": 2557, - "length": 32 - } - ], - "4312": [ - { - "start": 460, - "length": 32 - } - ] - } - }, - "methodIdentifiers": { - "acceptOwnership()": "79ba5097", - "authorized()": "456cb7c6", - "bond(address)": "247ce85b", - "bondToken()": "c28f4392", - "cancelWithdrawal()": "22611280", - "creditBond(address,uint256)": "be32d1f4", - "debitBond(address,uint256)": "391396de", - "deposit(uint256)": "b6b55f25", - "depositTo(address,uint256)": "ffaad6a5", - "getBondBalance(address)": "33613cbe", - "hasSufficientBond(address,uint256)": "a116e486", - "impl()": "8abf6077", - "inNonReentrant()": "3075db56", - "init(address)": "19ab453c", - "minBond()": "831518b7", - "owner()": "8da5cb5b", - "pause()": "8456cb59", - "paused()": "5c975abb", - "pendingOwner()": "e30c3978", - "proxiableUUID()": "52d1902d", - "renounceOwnership()": "715018a6", - "requestWithdrawal()": "dbaf2145", - "resolver()": "04f3bcec", - "transferOwnership(address)": "f2fde38b", - "unpause()": "3f4ba83a", - "upgradeTo(address)": "3659cfe6", - "upgradeToAndCall(address,bytes)": "4f1ef286", - "withdraw(address,uint256)": "f3fef3a3", - "withdrawalDelay()": "a7ab6961" - }, - "rawMetadata": "{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_authorized\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_bondToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_minBond\",\"type\":\"uint256\"},{\"internalType\":\"uint48\",\"name\":\"_withdrawalDelay\",\"type\":\"uint48\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"ACCESS_DENIED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FUNC_NOT_IMPLEMENTED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"INVALID_PAUSE_STATUS\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientBond\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidRecipient\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MustMaintainMinBond\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NoBondToWithdraw\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NoWithdrawalRequested\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"REENTRANT_CALL\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"WithdrawalAlreadyRequested\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZERO_ADDRESS\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZERO_VALUE\",\"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\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"BondCredited\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"BondDebited\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"BondDeposited\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"depositor\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"BondDepositedFor\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"BondWithdrawn\",\"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\":\"OwnershipTransferStarted\",\"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\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Paused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Unpaused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"WithdrawalCancelled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"withdrawableAt\",\"type\":\"uint256\"}],\"name\":\"WithdrawalRequested\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"acceptOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"authorized\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"bond\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint48\",\"name\":\"withdrawalRequestedAt\",\"type\":\"uint48\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"bondToken\",\"outputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"cancelWithdrawal\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_address\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_bond\",\"type\":\"uint256\"}],\"name\":\"creditBond\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_address\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_bond\",\"type\":\"uint256\"}],\"name\":\"debitBond\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountDebited_\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"deposit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"depositTo\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_address\",\"type\":\"address\"}],\"name\":\"getBondBalance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_address\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_additionalBond\",\"type\":\"uint256\"}],\"name\":\"hasSufficientBond\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"impl\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"inNonReentrant\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_owner\",\"type\":\"address\"}],\"name\":\"init\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"minBond\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"paused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pendingOwner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"proxiableUUID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"requestWithdrawal\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"resolver\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"unpause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"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\":[{\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"withdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"withdrawalDelay\",\"outputs\":[{\"internalType\":\"uint48\",\"name\":\"\",\"type\":\"uint48\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"custom:security-contact\":\"security@taiko.xyz\",\"events\":{\"AdminChanged(address,address)\":{\"details\":\"Emitted when the admin account has changed.\"},\"BeaconUpgraded(address)\":{\"details\":\"Emitted when the beacon is changed.\"},\"BondCredited(address,uint256)\":{\"params\":{\"account\":\"The account to which the bond was credited\",\"amount\":\"The amount credited\"}},\"BondDebited(address,uint256)\":{\"params\":{\"account\":\"The account from which the bond was debited\",\"amount\":\"The amount debited\"}},\"BondDeposited(address,uint256)\":{\"params\":{\"account\":\"The account that deposited the bond\",\"amount\":\"The amount deposited\"}},\"BondDepositedFor(address,address,uint256)\":{\"params\":{\"amount\":\"The amount deposited\",\"depositor\":\"The account that made the deposit\",\"recipient\":\"The account that received the bond credit\"}},\"BondWithdrawn(address,uint256)\":{\"params\":{\"account\":\"The account that withdrew the bond\",\"amount\":\"The amount withdrawn\"}},\"Initialized(uint8)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"},\"Paused(address)\":{\"params\":{\"account\":\"The account that paused the contract.\"}},\"Unpaused(address)\":{\"params\":{\"account\":\"The account that unpaused the contract.\"}},\"Upgraded(address)\":{\"details\":\"Emitted when the implementation is upgraded.\"}},\"kind\":\"dev\",\"methods\":{\"acceptOwnership()\":{\"details\":\"The new owner accepts the ownership transfer.\"},\"cancelWithdrawal()\":{\"details\":\"Can be called during or after the withdrawal delay period\"},\"constructor\":{\"params\":{\"_authorized\":\"The address of the authorized contract (Inbox)\",\"_bondToken\":\"The ERC20 bond token address\",\"_minBond\":\"The minimum bond required\",\"_withdrawalDelay\":\"The delay period for withdrawals (e.g., 7 days)\"}},\"creditBond(address,uint256)\":{\"params\":{\"_address\":\"The address to credit the bond to\",\"_bond\":\"The amount of bond to credit\"}},\"debitBond(address,uint256)\":{\"details\":\"Best effort means that if `_bond` is greater than the balance, the entire balance is debited instead\",\"params\":{\"_address\":\"The address to debit the bond from\",\"_bond\":\"The amount of bond to debit\"},\"returns\":{\"amountDebited_\":\"The actual amount debited\"}},\"deposit(uint256)\":{\"params\":{\"_amount\":\"The amount to deposit.\"}},\"depositTo(address,uint256)\":{\"params\":{\"_amount\":\"The amount to deposit.\",\"_recipient\":\"The address to credit the bond to.\"}},\"getBondBalance(address)\":{\"params\":{\"_address\":\"The address to get the bond balance for\"},\"returns\":{\"_0\":\"The bond balance of the address\"}},\"hasSufficientBond(address,uint256)\":{\"params\":{\"_additionalBond\":\"The additional bond required the account has to have on top of the minimum bond\",\"_address\":\"The address to check\"},\"returns\":{\"_0\":\"True if the account has sufficient bond and is active\"}},\"init(address)\":{\"params\":{\"_owner\":\"The owner of this contract\"}},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"paused()\":{\"returns\":{\"_0\":\"true if paused, false otherwise.\"}},\"pendingOwner()\":{\"details\":\"Returns the address of the pending owner.\"},\"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.\"},\"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.\"},\"requestWithdrawal()\":{\"details\":\"Account cannot perform bond-restricted actions after requesting withdrawal\"},\"resolver()\":{\"returns\":{\"_0\":\"The address of this contract.\"}},\"transferOwnership(address)\":{\"details\":\"Starts the ownership transfer of the contract to a new account. Replaces the pending transfer if there is one. Can only be called by the current owner.\"},\"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.\"},\"withdraw(address,uint256)\":{\"details\":\"On L1, withdrawal is subject to time-based security. On L2, withdrawals are unrestricted.\",\"params\":{\"_amount\":\"The amount to withdraw.\",\"_to\":\"The recipient of withdrawn funds.\"}}},\"stateVariables\":{\"withdrawalDelay\":{\"details\":\"WARNING: In theory operations can remain unfinalized indefinitely, but in practice after the `extendedProvingWindow` the incentives are very strong for finalization. A safe value for this is `extendedProvingWindow` + buffer, for example, 2 weeks.\"}},\"title\":\"BondManager\",\"version\":1},\"userdoc\":{\"events\":{\"BondCredited(address,uint256)\":{\"notice\":\"Emitted when a bond is credited to an address\"},\"BondDebited(address,uint256)\":{\"notice\":\"Emitted when a bond is debited from an address\"},\"BondDeposited(address,uint256)\":{\"notice\":\"Emitted when a bond is deposited into the manager\"},\"BondDepositedFor(address,address,uint256)\":{\"notice\":\"Emitted when a bond is deposited for another address\"},\"BondWithdrawn(address,uint256)\":{\"notice\":\"Emitted when a bond is withdrawn from the manager\"},\"Paused(address)\":{\"notice\":\"Emitted when the contract is paused.\"},\"Unpaused(address)\":{\"notice\":\"Emitted when the contract is unpaused.\"},\"WithdrawalCancelled(address)\":{\"notice\":\"Emitted when a withdrawal request is cancelled\"},\"WithdrawalRequested(address,uint256)\":{\"notice\":\"Emitted when a withdrawal is requested\"}},\"kind\":\"user\",\"methods\":{\"authorized()\":{\"notice\":\"The address of the inbox contract that is allowed to call debitBond and creditBond\"},\"bond(address)\":{\"notice\":\"Per-account bond state\"},\"bondToken()\":{\"notice\":\"ERC20 token used as bond.\"},\"cancelWithdrawal()\":{\"notice\":\"Cancel withdrawal request to reactivate the account\"},\"constructor\":{\"notice\":\"Constructor disables initializers for upgradeable pattern\"},\"creditBond(address,uint256)\":{\"notice\":\"Credits a bond to an address\"},\"debitBond(address,uint256)\":{\"notice\":\"Debits a bond from an address with best effort\"},\"deposit(uint256)\":{\"notice\":\"Deposit ERC20 bond tokens into the manager.\"},\"depositTo(address,uint256)\":{\"notice\":\"Deposit ERC20 bond tokens for another address.\"},\"getBondBalance(address)\":{\"notice\":\"Gets the bond balance of an address\"},\"hasSufficientBond(address,uint256)\":{\"notice\":\"Checks if an account has sufficient bond and hasn't requested withdrawal\"},\"init(address)\":{\"notice\":\"Initializes the BondManager contract\"},\"minBond()\":{\"notice\":\"Minimum bond required\"},\"pause()\":{\"notice\":\"Pauses the contract.\"},\"paused()\":{\"notice\":\"Returns true if the contract is paused, and false otherwise.\"},\"requestWithdrawal()\":{\"notice\":\"Request to start the withdrawal process\"},\"resolver()\":{\"notice\":\"Returns the address of this contract.\"},\"unpause()\":{\"notice\":\"Unpauses the contract.\"},\"withdraw(address,uint256)\":{\"notice\":\"Withdraw bond to a recipient.\"},\"withdrawalDelay()\":{\"notice\":\"Time delay required before withdrawal after request\"}},\"notice\":\"L1 implementation of BondManager with time-based withdrawal mechanism\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/layer2/core/BondManager.sol\":\"BondManager\"},\"evmVersion\":\"shanghai\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@eth-fabric/urc/=node_modules/urc/src/\",\":@openzeppelin-upgrades/contracts/=node_modules/@openzeppelin/contracts-upgradeable/\",\":@openzeppelin/=node_modules/@openzeppelin/\",\":@optimism/=node_modules/optimism/\",\":@p256-verifier/contracts/=node_modules/p256-verifier/src/\",\":@risc0/contracts/=node_modules/risc0-ethereum/contracts/src/\",\":@solady/=node_modules/solady/\",\":@sp1-contracts/=node_modules/sp1-contracts/contracts/\",\":ds-test/=node_modules/ds-test/\",\":forge-std/=node_modules/forge-std/\",\":openzeppelin/=node_modules/@openzeppelin/\",\":optimism/=node_modules/optimism/\",\":p256-verifier/=node_modules/p256-verifier/\",\":risc0-ethereum/=node_modules/risc0-ethereum/\",\":script/=script/\",\":solady/src/=node_modules/solady/src/\",\":solady/utils/=node_modules/solady/src/utils/\",\":sp1-contracts/=node_modules/sp1-contracts/\",\":src/=contracts/\",\":test/=test/\",\":urc/=node_modules/urc/\"]},\"sources\":{\"contracts/layer2/core/BondManager.sol\":{\"keccak256\":\"0xde7c80e4018ab2e13d9877b4baca57de7324af0473856c31f26208515f013db6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a388f3bc303f04a1108ea6fb40e420a785ecfa3bcbbc574e03cdd8d8326bf352\",\"dweb:/ipfs/QmXYKGmHAivSxVWhzatXKZCxCd8oY2bjUfeGBFZ7iDRtw2\"]},\"contracts/layer2/core/IBondManager.sol\":{\"keccak256\":\"0x434f4528166c44d411603e3d221fdda8a2e5c73404e7b3256db8fea16fbe6954\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d9ee4f789f154881b683cdfb92f0e63a8ddc4d32a7a9960020d6d253d72053d6\",\"dweb:/ipfs/QmViASeY24iP9QPosNAjSeHxSisjh1oLqMtqexAqpFjfsY\"]},\"contracts/shared/common/EssentialContract.sol\":{\"keccak256\":\"0x23f5e92e919911e82b308b25cf5c06050fd7c7799d44156d8492c2879a12c0a6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://800f8bc7c8a362c8c684906e20c060d893cd4e8badf74cf12026e0cc159c846f\",\"dweb:/ipfs/QmPbre9Skvfz5K7TWVHYTGGnec99VMnY9EUFbB6VqMsd9C\"]},\"contracts/shared/common/IResolver.sol\":{\"keccak256\":\"0x01273635aa0be2ad8d6218ad520f824f2003eab82be1d14c46da58f2516a48dd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://122dd3456077cf0be42bb974954c9918dca296415b076faeba0336ecee33de8e\",\"dweb:/ipfs/QmSr4WQEFDJwqyqpextmY8Fp3b7Z96SBHgAEKsvXe6dEZV\"]},\"node_modules/@openzeppelin/contracts-upgradeable/access/Ownable2StepUpgradeable.sol\":{\"keccak256\":\"0x9140dabc466abab21b48b72dbda26736b1183a310d0e677d3719d201df026510\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://75267b14b60dc216d01d596a4008189a6c44d3314e53eded0edb1e757d95be16\",\"dweb:/ipfs/QmQoMaxTRT6V7uQj9USfdQH9jh1crywB9auVjThzUSAbG2\"]},\"node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol\":{\"keccak256\":\"0x359a1ab89b46b9aba7bcad3fb651924baf4893d15153049b9976b0fc9be1358e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e89863421b4014b96a4b62be76eb3b9f0a8afe9684664a6f389124c0964bfe5c\",\"dweb:/ipfs/Qmbk7xr1irpDuU1WdxXgxELBXxs61rHhCgod7heVcvFx16\"]},\"node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x89be10e757d242e9b18d5a32c9fbe2019f6d63052bbe46397a430a1d60d7f794\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f103ee2e4aecd37aac6ceefe670709cdd7613dee25fa2d4d9feaf7fc0aaa155e\",\"dweb:/ipfs/QmRiNZLoJk5k3HPMYGPGjZFd2ke1ZxjhJZkM45Ec9GH9hv\"]},\"node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol\":{\"keccak256\":\"0x9c80f545915582e63fe206c6ce27cbe85a86fc10b9cd2a0e8c9488fb7c2ee422\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://310136ad60820af4177a11a61d77a3686faf5fca4942b600e08fc940db38396b\",\"dweb:/ipfs/QmbCzMNSTL7Zi7M4UCSqBrkHtp4jjxUnGbkneCZKdR1qeq\"]},\"node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0x75097e35253e7fb282ee4d7f27a80eaacfa759923185bf17302a89cbc059c5ef\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8b06267c5f80bad727af3e48b1382333d591dad51376399ef2f6b0ee6d58bf95\",\"dweb:/ipfs/QmdU5La1agcQvghnfMpWZGDPz2TUDTCxUwTLKmuMRXBpAx\"]},\"node_modules/@openzeppelin/contracts/interfaces/IERC1967.sol\":{\"keccak256\":\"0x3cbef5ebc24b415252e2f8c0c9254555d30d9f085603b4b80d9b5ed20ab87e90\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e8fa670c3bdce78e642cc6ae11c4cb38b133499cdce5e1990a9979d424703263\",\"dweb:/ipfs/QmVxeCUk4jL2pXQyhsoNJwyU874wRufS2WvGe8TgPKPqhE\"]},\"node_modules/@openzeppelin/contracts/interfaces/draft-IERC1822.sol\":{\"keccak256\":\"0x1d4afe6cb24200cc4545eed814ecf5847277dfe5d613a1707aad5fceecebcfff\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://383fb7b8181016ac5ccf07bc9cdb7c1b5045ea36e2cc4df52bcbf20396fc7688\",\"dweb:/ipfs/QmYJ7Cg4WmE3rR8KGQxjUCXFfTH6TcwZ2Z1f6tPrq7jHFr\"]},\"node_modules/@openzeppelin/contracts/proxy/ERC1967/ERC1967Upgrade.sol\":{\"keccak256\":\"0x3b21ae06bf5957f73fa16754b0669c77b7abd8ba6c072d35c3281d446fdb86c2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2db8e18505e86e02526847005d7287a33e397ed7fb9eaba3fd4a4a197add16e2\",\"dweb:/ipfs/QmW9BSuKTzHWHBNSHF4L8XfVuU1uJrP2vLg84YtBd8mL82\"]},\"node_modules/@openzeppelin/contracts/proxy/beacon/IBeacon.sol\":{\"keccak256\":\"0xd50a3421ac379ccb1be435fa646d66a65c986b4924f0849839f08692f39dde61\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ada1e030c0231db8d143b44ce92b4d1158eedb087880cad6d8cc7bd7ebe7b354\",\"dweb:/ipfs/QmWZ2NHZweRpz1U9GF6R1h65ri76dnX7fNxLBeM2t5N5Ce\"]},\"node_modules/@openzeppelin/contracts/proxy/utils/UUPSUpgradeable.sol\":{\"keccak256\":\"0xc6619957bcc6641fe8984bfaf9ff11a9e4b97d8149c0495f608f9a2416d7c5cf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://543be67f7fa43b1b932637c1c7f12035f0f4b0f7ee2bd3c33841186f79c165c1\",\"dweb:/ipfs/QmSBPM2UVKbmJqWfD9i6hSiqbaE8TV4TSqfuiivziRRLKM\"]},\"node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x287b55befed2961a7eabd7d7b1b2839cbca8a5b80ef8dcbb25ed3d4c2002c305\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bd39944e8fc06be6dbe2dd1d8449b5336e23c6a7ba3e8e9ae5ae0f37f35283f5\",\"dweb:/ipfs/QmPV3FGYjVwvKSgAXKUN3r9T9GwniZz83CxBpM7vyj2G53\"]},\"node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Permit.sol\":{\"keccak256\":\"0xb264c03a3442eb37a68ad620cefd1182766b58bee6cec40343480392d6b14d69\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://28879d01fd22c07b44f006612775f8577defbe459cb01685c5e25cd518c91a71\",\"dweb:/ipfs/QmVgfkwv2Fxw6hhTcDUZhE7NkoSKjab3ipM7UaRbt6uXb5\"]},\"node_modules/@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0xabefac93435967b4d36a4fabcbdbb918d1f0b7ae3c3d85bc30923b326c927ed1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9d213d3befca47da33f6db0310826bcdb148299805c10d77175ecfe1d06a9a68\",\"dweb:/ipfs/QmRgCn6SP1hbBkExUADFuDo8xkT4UU47yjNF5FhCeRbQmS\"]},\"node_modules/@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0x006dd67219697fe68d7fbfdea512e7c4cb64a43565ed86171d67e844982da6fa\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2455248c8ddd9cc6a7af76a13973cddf222072427e7b0e2a7d1aff345145e931\",\"dweb:/ipfs/QmfYjnjRbWqYpuxurqveE6HtzsY1Xx323J428AKQgtBJZm\"]},\"node_modules/@openzeppelin/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0xf09e68aa0dc6722a25bc46490e8d48ed864466d17313b8a0b254c36b54e49899\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e26daf81e2252dc1fe1ce0e4b55c2eb7c6d1ee84ae6558d1a9554432ea1d32da\",\"dweb:/ipfs/Qmb1UANWiWq5pCKbmHSu772hd4nt374dVaghGmwSVNuk8Q\"]}},\"version\":1}", - "metadata": { - "compiler": { - "version": "0.8.30+commit.73712a01" - }, - "language": "Solidity", - "output": { - "abi": [ - { - "inputs": [ - { - "internalType": "address", - "name": "_authorized", - "type": "address" - }, - { - "internalType": "address", - "name": "_bondToken", - "type": "address" - }, - { - "internalType": "uint256", - "name": "_minBond", - "type": "uint256" - }, - { - "internalType": "uint48", - "name": "_withdrawalDelay", - "type": "uint48" - } - ], - "stateMutability": "nonpayable", - "type": "constructor" - }, - { - "inputs": [], - "type": "error", - "name": "ACCESS_DENIED" - }, - { - "inputs": [], - "type": "error", - "name": "FUNC_NOT_IMPLEMENTED" - }, - { - "inputs": [], - "type": "error", - "name": "INVALID_PAUSE_STATUS" - }, - { - "inputs": [], - "type": "error", - "name": "InsufficientBond" - }, - { - "inputs": [], - "type": "error", - "name": "InvalidRecipient" - }, - { - "inputs": [], - "type": "error", - "name": "MustMaintainMinBond" - }, - { - "inputs": [], - "type": "error", - "name": "NoBondToWithdraw" - }, - { - "inputs": [], - "type": "error", - "name": "NoWithdrawalRequested" - }, - { - "inputs": [], - "type": "error", - "name": "REENTRANT_CALL" - }, - { - "inputs": [], - "type": "error", - "name": "WithdrawalAlreadyRequested" - }, - { - "inputs": [], - "type": "error", - "name": "ZERO_ADDRESS" - }, - { - "inputs": [], - "type": "error", - "name": "ZERO_VALUE" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "previousAdmin", - "type": "address", - "indexed": false - }, - { - "internalType": "address", - "name": "newAdmin", - "type": "address", - "indexed": false - } - ], - "type": "event", - "name": "AdminChanged", - "anonymous": false - }, - { - "inputs": [ - { - "internalType": "address", - "name": "beacon", - "type": "address", - "indexed": true - } - ], - "type": "event", - "name": "BeaconUpgraded", - "anonymous": false - }, - { - "inputs": [ - { - "internalType": "address", - "name": "account", - "type": "address", - "indexed": true - }, - { - "internalType": "uint256", - "name": "amount", - "type": "uint256", - "indexed": false - } - ], - "type": "event", - "name": "BondCredited", - "anonymous": false - }, - { - "inputs": [ - { - "internalType": "address", - "name": "account", - "type": "address", - "indexed": true - }, - { - "internalType": "uint256", - "name": "amount", - "type": "uint256", - "indexed": false - } - ], - "type": "event", - "name": "BondDebited", - "anonymous": false - }, - { - "inputs": [ - { - "internalType": "address", - "name": "account", - "type": "address", - "indexed": true - }, - { - "internalType": "uint256", - "name": "amount", - "type": "uint256", - "indexed": false - } - ], - "type": "event", - "name": "BondDeposited", - "anonymous": false - }, - { - "inputs": [ - { - "internalType": "address", - "name": "depositor", - "type": "address", - "indexed": true - }, - { - "internalType": "address", - "name": "recipient", - "type": "address", - "indexed": true - }, - { - "internalType": "uint256", - "name": "amount", - "type": "uint256", - "indexed": false - } - ], - "type": "event", - "name": "BondDepositedFor", - "anonymous": false - }, - { - "inputs": [ - { - "internalType": "address", - "name": "account", - "type": "address", - "indexed": true - }, - { - "internalType": "uint256", - "name": "amount", - "type": "uint256", - "indexed": false - } - ], - "type": "event", - "name": "BondWithdrawn", - "anonymous": false - }, - { - "inputs": [ - { - "internalType": "uint8", - "name": "version", - "type": "uint8", - "indexed": false - } - ], - "type": "event", - "name": "Initialized", - "anonymous": false - }, - { - "inputs": [ - { - "internalType": "address", - "name": "previousOwner", - "type": "address", - "indexed": true - }, - { - "internalType": "address", - "name": "newOwner", - "type": "address", - "indexed": true - } - ], - "type": "event", - "name": "OwnershipTransferStarted", - "anonymous": false - }, - { - "inputs": [ - { - "internalType": "address", - "name": "previousOwner", - "type": "address", - "indexed": true - }, - { - "internalType": "address", - "name": "newOwner", - "type": "address", - "indexed": true - } - ], - "type": "event", - "name": "OwnershipTransferred", - "anonymous": false - }, - { - "inputs": [ - { - "internalType": "address", - "name": "account", - "type": "address", - "indexed": false - } - ], - "type": "event", - "name": "Paused", - "anonymous": false - }, - { - "inputs": [ - { - "internalType": "address", - "name": "account", - "type": "address", - "indexed": false - } - ], - "type": "event", - "name": "Unpaused", - "anonymous": false - }, - { - "inputs": [ - { - "internalType": "address", - "name": "implementation", - "type": "address", - "indexed": true - } - ], - "type": "event", - "name": "Upgraded", - "anonymous": false - }, - { - "inputs": [ - { - "internalType": "address", - "name": "account", - "type": "address", - "indexed": true - } - ], - "type": "event", - "name": "WithdrawalCancelled", - "anonymous": false - }, - { - "inputs": [ - { - "internalType": "address", - "name": "account", - "type": "address", - "indexed": true - }, - { - "internalType": "uint256", - "name": "withdrawableAt", - "type": "uint256", - "indexed": false - } - ], - "type": "event", - "name": "WithdrawalRequested", - "anonymous": false - }, - { - "inputs": [], - "stateMutability": "nonpayable", - "type": "function", - "name": "acceptOwnership" - }, - { - "inputs": [], - "stateMutability": "view", - "type": "function", - "name": "authorized", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ] - }, - { - "inputs": [ - { - "internalType": "address", - "name": "account", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function", - "name": "bond", - "outputs": [ - { - "internalType": "uint256", - "name": "balance", - "type": "uint256" - }, - { - "internalType": "uint48", - "name": "withdrawalRequestedAt", - "type": "uint48" - } - ] - }, - { - "inputs": [], - "stateMutability": "view", - "type": "function", - "name": "bondToken", - "outputs": [ - { - "internalType": "contract IERC20", - "name": "", - "type": "address" - } - ] - }, - { - "inputs": [], - "stateMutability": "nonpayable", - "type": "function", - "name": "cancelWithdrawal" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_address", - "type": "address" - }, - { - "internalType": "uint256", - "name": "_bond", - "type": "uint256" - } - ], - "stateMutability": "nonpayable", - "type": "function", - "name": "creditBond" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_address", - "type": "address" - }, - { - "internalType": "uint256", - "name": "_bond", - "type": "uint256" - } - ], - "stateMutability": "nonpayable", - "type": "function", - "name": "debitBond", - "outputs": [ - { - "internalType": "uint256", - "name": "amountDebited_", - "type": "uint256" - } - ] - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "_amount", - "type": "uint256" - } - ], - "stateMutability": "nonpayable", - "type": "function", - "name": "deposit" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_recipient", - "type": "address" - }, - { - "internalType": "uint256", - "name": "_amount", - "type": "uint256" - } - ], - "stateMutability": "nonpayable", - "type": "function", - "name": "depositTo" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_address", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function", - "name": "getBondBalance", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ] - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_address", - "type": "address" - }, - { - "internalType": "uint256", - "name": "_additionalBond", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function", - "name": "hasSufficientBond", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ] - }, - { - "inputs": [], - "stateMutability": "view", - "type": "function", - "name": "impl", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ] - }, - { - "inputs": [], - "stateMutability": "view", - "type": "function", - "name": "inNonReentrant", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ] - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_owner", - "type": "address" - } - ], - "stateMutability": "nonpayable", - "type": "function", - "name": "init" - }, - { - "inputs": [], - "stateMutability": "view", - "type": "function", - "name": "minBond", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ] - }, - { - "inputs": [], - "stateMutability": "view", - "type": "function", - "name": "owner", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ] - }, - { - "inputs": [], - "stateMutability": "nonpayable", - "type": "function", - "name": "pause" - }, - { - "inputs": [], - "stateMutability": "view", - "type": "function", - "name": "paused", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ] - }, - { - "inputs": [], - "stateMutability": "view", - "type": "function", - "name": "pendingOwner", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ] - }, - { - "inputs": [], - "stateMutability": "view", - "type": "function", - "name": "proxiableUUID", - "outputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ] - }, - { - "inputs": [], - "stateMutability": "nonpayable", - "type": "function", - "name": "renounceOwnership" - }, - { - "inputs": [], - "stateMutability": "nonpayable", - "type": "function", - "name": "requestWithdrawal" - }, - { - "inputs": [], - "stateMutability": "view", - "type": "function", - "name": "resolver", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ] - }, - { - "inputs": [ - { - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "stateMutability": "nonpayable", - "type": "function", - "name": "transferOwnership" - }, - { - "inputs": [], - "stateMutability": "nonpayable", - "type": "function", - "name": "unpause" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "newImplementation", - "type": "address" - } - ], - "stateMutability": "nonpayable", - "type": "function", - "name": "upgradeTo" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "newImplementation", - "type": "address" - }, - { - "internalType": "bytes", - "name": "data", - "type": "bytes" - } - ], - "stateMutability": "payable", - "type": "function", - "name": "upgradeToAndCall" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_to", - "type": "address" - }, - { - "internalType": "uint256", - "name": "_amount", - "type": "uint256" - } - ], - "stateMutability": "nonpayable", - "type": "function", - "name": "withdraw" - }, - { - "inputs": [], - "stateMutability": "view", - "type": "function", - "name": "withdrawalDelay", - "outputs": [ - { - "internalType": "uint48", - "name": "", - "type": "uint48" - } - ] - } - ], - "devdoc": { - "kind": "dev", - "methods": { - "acceptOwnership()": { - "details": "The new owner accepts the ownership transfer." - }, - "cancelWithdrawal()": { - "details": "Can be called during or after the withdrawal delay period" - }, - "constructor": { - "params": { - "_authorized": "The address of the authorized contract (Inbox)", - "_bondToken": "The ERC20 bond token address", - "_minBond": "The minimum bond required", - "_withdrawalDelay": "The delay period for withdrawals (e.g., 7 days)" - } - }, - "creditBond(address,uint256)": { - "params": { - "_address": "The address to credit the bond to", - "_bond": "The amount of bond to credit" - } - }, - "debitBond(address,uint256)": { - "details": "Best effort means that if `_bond` is greater than the balance, the entire balance is debited instead", - "params": { - "_address": "The address to debit the bond from", - "_bond": "The amount of bond to debit" - }, - "returns": { - "amountDebited_": "The actual amount debited" - } - }, - "deposit(uint256)": { - "params": { - "_amount": "The amount to deposit." - } - }, - "depositTo(address,uint256)": { - "params": { - "_amount": "The amount to deposit.", - "_recipient": "The address to credit the bond to." - } - }, - "getBondBalance(address)": { - "params": { - "_address": "The address to get the bond balance for" - }, - "returns": { - "_0": "The bond balance of the address" - } - }, - "hasSufficientBond(address,uint256)": { - "params": { - "_additionalBond": "The additional bond required the account has to have on top of the minimum bond", - "_address": "The address to check" - }, - "returns": { - "_0": "True if the account has sufficient bond and is active" - } - }, - "init(address)": { - "params": { - "_owner": "The owner of this contract" - } - }, - "owner()": { - "details": "Returns the address of the current owner." - }, - "paused()": { - "returns": { - "_0": "true if paused, false otherwise." - } - }, - "pendingOwner()": { - "details": "Returns the address of the pending owner." - }, - "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." - }, - "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." - }, - "requestWithdrawal()": { - "details": "Account cannot perform bond-restricted actions after requesting withdrawal" - }, - "resolver()": { - "returns": { - "_0": "The address of this contract." - } - }, - "transferOwnership(address)": { - "details": "Starts the ownership transfer of the contract to a new account. Replaces the pending transfer if there is one. Can only be called by the current owner." - }, - "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." - }, - "withdraw(address,uint256)": { - "details": "On L1, withdrawal is subject to time-based security. On L2, withdrawals are unrestricted.", - "params": { - "_amount": "The amount to withdraw.", - "_to": "The recipient of withdrawn funds." - } - } - }, - "version": 1 - }, - "userdoc": { - "kind": "user", - "methods": { - "authorized()": { - "notice": "The address of the inbox contract that is allowed to call debitBond and creditBond" - }, - "bond(address)": { - "notice": "Per-account bond state" - }, - "bondToken()": { - "notice": "ERC20 token used as bond." - }, - "cancelWithdrawal()": { - "notice": "Cancel withdrawal request to reactivate the account" - }, - "constructor": { - "notice": "Constructor disables initializers for upgradeable pattern" - }, - "creditBond(address,uint256)": { - "notice": "Credits a bond to an address" - }, - "debitBond(address,uint256)": { - "notice": "Debits a bond from an address with best effort" - }, - "deposit(uint256)": { - "notice": "Deposit ERC20 bond tokens into the manager." - }, - "depositTo(address,uint256)": { - "notice": "Deposit ERC20 bond tokens for another address." - }, - "getBondBalance(address)": { - "notice": "Gets the bond balance of an address" - }, - "hasSufficientBond(address,uint256)": { - "notice": "Checks if an account has sufficient bond and hasn't requested withdrawal" - }, - "init(address)": { - "notice": "Initializes the BondManager contract" - }, - "minBond()": { - "notice": "Minimum bond required" - }, - "pause()": { - "notice": "Pauses the contract." - }, - "paused()": { - "notice": "Returns true if the contract is paused, and false otherwise." - }, - "requestWithdrawal()": { - "notice": "Request to start the withdrawal process" - }, - "resolver()": { - "notice": "Returns the address of this contract." - }, - "unpause()": { - "notice": "Unpauses the contract." - }, - "withdraw(address,uint256)": { - "notice": "Withdraw bond to a recipient." - }, - "withdrawalDelay()": { - "notice": "Time delay required before withdrawal after request" - } - }, - "version": 1 - } - }, - "settings": { - "remappings": [ - "@eth-fabric/urc/=node_modules/urc/src/", - "@openzeppelin-upgrades/contracts/=node_modules/@openzeppelin/contracts-upgradeable/", - "@openzeppelin/=node_modules/@openzeppelin/", - "@optimism/=node_modules/optimism/", - "@p256-verifier/contracts/=node_modules/p256-verifier/src/", - "@risc0/contracts/=node_modules/risc0-ethereum/contracts/src/", - "@solady/=node_modules/solady/", - "@sp1-contracts/=node_modules/sp1-contracts/contracts/", - "ds-test/=node_modules/ds-test/", - "forge-std/=node_modules/forge-std/", - "openzeppelin/=node_modules/@openzeppelin/", - "optimism/=node_modules/optimism/", - "p256-verifier/=node_modules/p256-verifier/", - "risc0-ethereum/=node_modules/risc0-ethereum/", - "script/=script/", - "solady/src/=node_modules/solady/src/", - "solady/utils/=node_modules/solady/src/utils/", - "sp1-contracts/=node_modules/sp1-contracts/", - "src/=contracts/", - "test/=test/", - "urc/=node_modules/urc/" - ], - "optimizer": { - "enabled": true, - "runs": 200 - }, - "metadata": { - "bytecodeHash": "ipfs" - }, - "compilationTarget": { - "contracts/layer2/core/BondManager.sol": "BondManager" - }, - "evmVersion": "shanghai", - "libraries": {} - }, - "sources": { - "contracts/layer2/core/BondManager.sol": { - "keccak256": "0xde7c80e4018ab2e13d9877b4baca57de7324af0473856c31f26208515f013db6", - "urls": [ - "bzz-raw://a388f3bc303f04a1108ea6fb40e420a785ecfa3bcbbc574e03cdd8d8326bf352", - "dweb:/ipfs/QmXYKGmHAivSxVWhzatXKZCxCd8oY2bjUfeGBFZ7iDRtw2" - ], - "license": "MIT" - }, - "contracts/layer2/core/IBondManager.sol": { - "keccak256": "0x434f4528166c44d411603e3d221fdda8a2e5c73404e7b3256db8fea16fbe6954", - "urls": [ - "bzz-raw://d9ee4f789f154881b683cdfb92f0e63a8ddc4d32a7a9960020d6d253d72053d6", - "dweb:/ipfs/QmViASeY24iP9QPosNAjSeHxSisjh1oLqMtqexAqpFjfsY" - ], - "license": "MIT" - }, - "contracts/shared/common/EssentialContract.sol": { - "keccak256": "0x23f5e92e919911e82b308b25cf5c06050fd7c7799d44156d8492c2879a12c0a6", - "urls": [ - "bzz-raw://800f8bc7c8a362c8c684906e20c060d893cd4e8badf74cf12026e0cc159c846f", - "dweb:/ipfs/QmPbre9Skvfz5K7TWVHYTGGnec99VMnY9EUFbB6VqMsd9C" - ], - "license": "MIT" - }, - "contracts/shared/common/IResolver.sol": { - "keccak256": "0x01273635aa0be2ad8d6218ad520f824f2003eab82be1d14c46da58f2516a48dd", - "urls": [ - "bzz-raw://122dd3456077cf0be42bb974954c9918dca296415b076faeba0336ecee33de8e", - "dweb:/ipfs/QmSr4WQEFDJwqyqpextmY8Fp3b7Z96SBHgAEKsvXe6dEZV" - ], - "license": "MIT" - }, - "node_modules/@openzeppelin/contracts-upgradeable/access/Ownable2StepUpgradeable.sol": { - "keccak256": "0x9140dabc466abab21b48b72dbda26736b1183a310d0e677d3719d201df026510", - "urls": [ - "bzz-raw://75267b14b60dc216d01d596a4008189a6c44d3314e53eded0edb1e757d95be16", - "dweb:/ipfs/QmQoMaxTRT6V7uQj9USfdQH9jh1crywB9auVjThzUSAbG2" - ], - "license": "MIT" - }, - "node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol": { - "keccak256": "0x359a1ab89b46b9aba7bcad3fb651924baf4893d15153049b9976b0fc9be1358e", - "urls": [ - "bzz-raw://e89863421b4014b96a4b62be76eb3b9f0a8afe9684664a6f389124c0964bfe5c", - "dweb:/ipfs/Qmbk7xr1irpDuU1WdxXgxELBXxs61rHhCgod7heVcvFx16" - ], - "license": "MIT" - }, - "node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol": { - "keccak256": "0x89be10e757d242e9b18d5a32c9fbe2019f6d63052bbe46397a430a1d60d7f794", - "urls": [ - "bzz-raw://f103ee2e4aecd37aac6ceefe670709cdd7613dee25fa2d4d9feaf7fc0aaa155e", - "dweb:/ipfs/QmRiNZLoJk5k3HPMYGPGjZFd2ke1ZxjhJZkM45Ec9GH9hv" - ], - "license": "MIT" - }, - "node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol": { - "keccak256": "0x9c80f545915582e63fe206c6ce27cbe85a86fc10b9cd2a0e8c9488fb7c2ee422", - "urls": [ - "bzz-raw://310136ad60820af4177a11a61d77a3686faf5fca4942b600e08fc940db38396b", - "dweb:/ipfs/QmbCzMNSTL7Zi7M4UCSqBrkHtp4jjxUnGbkneCZKdR1qeq" - ], - "license": "MIT" - }, - "node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol": { - "keccak256": "0x75097e35253e7fb282ee4d7f27a80eaacfa759923185bf17302a89cbc059c5ef", - "urls": [ - "bzz-raw://8b06267c5f80bad727af3e48b1382333d591dad51376399ef2f6b0ee6d58bf95", - "dweb:/ipfs/QmdU5La1agcQvghnfMpWZGDPz2TUDTCxUwTLKmuMRXBpAx" - ], - "license": "MIT" - }, - "node_modules/@openzeppelin/contracts/interfaces/IERC1967.sol": { - "keccak256": "0x3cbef5ebc24b415252e2f8c0c9254555d30d9f085603b4b80d9b5ed20ab87e90", - "urls": [ - "bzz-raw://e8fa670c3bdce78e642cc6ae11c4cb38b133499cdce5e1990a9979d424703263", - "dweb:/ipfs/QmVxeCUk4jL2pXQyhsoNJwyU874wRufS2WvGe8TgPKPqhE" - ], - "license": "MIT" - }, - "node_modules/@openzeppelin/contracts/interfaces/draft-IERC1822.sol": { - "keccak256": "0x1d4afe6cb24200cc4545eed814ecf5847277dfe5d613a1707aad5fceecebcfff", - "urls": [ - "bzz-raw://383fb7b8181016ac5ccf07bc9cdb7c1b5045ea36e2cc4df52bcbf20396fc7688", - "dweb:/ipfs/QmYJ7Cg4WmE3rR8KGQxjUCXFfTH6TcwZ2Z1f6tPrq7jHFr" - ], - "license": "MIT" - }, - "node_modules/@openzeppelin/contracts/proxy/ERC1967/ERC1967Upgrade.sol": { - "keccak256": "0x3b21ae06bf5957f73fa16754b0669c77b7abd8ba6c072d35c3281d446fdb86c2", - "urls": [ - "bzz-raw://2db8e18505e86e02526847005d7287a33e397ed7fb9eaba3fd4a4a197add16e2", - "dweb:/ipfs/QmW9BSuKTzHWHBNSHF4L8XfVuU1uJrP2vLg84YtBd8mL82" - ], - "license": "MIT" - }, - "node_modules/@openzeppelin/contracts/proxy/beacon/IBeacon.sol": { - "keccak256": "0xd50a3421ac379ccb1be435fa646d66a65c986b4924f0849839f08692f39dde61", - "urls": [ - "bzz-raw://ada1e030c0231db8d143b44ce92b4d1158eedb087880cad6d8cc7bd7ebe7b354", - "dweb:/ipfs/QmWZ2NHZweRpz1U9GF6R1h65ri76dnX7fNxLBeM2t5N5Ce" - ], - "license": "MIT" - }, - "node_modules/@openzeppelin/contracts/proxy/utils/UUPSUpgradeable.sol": { - "keccak256": "0xc6619957bcc6641fe8984bfaf9ff11a9e4b97d8149c0495f608f9a2416d7c5cf", - "urls": [ - "bzz-raw://543be67f7fa43b1b932637c1c7f12035f0f4b0f7ee2bd3c33841186f79c165c1", - "dweb:/ipfs/QmSBPM2UVKbmJqWfD9i6hSiqbaE8TV4TSqfuiivziRRLKM" - ], - "license": "MIT" - }, - "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol": { - "keccak256": "0x287b55befed2961a7eabd7d7b1b2839cbca8a5b80ef8dcbb25ed3d4c2002c305", - "urls": [ - "bzz-raw://bd39944e8fc06be6dbe2dd1d8449b5336e23c6a7ba3e8e9ae5ae0f37f35283f5", - "dweb:/ipfs/QmPV3FGYjVwvKSgAXKUN3r9T9GwniZz83CxBpM7vyj2G53" - ], - "license": "MIT" - }, - "node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Permit.sol": { - "keccak256": "0xb264c03a3442eb37a68ad620cefd1182766b58bee6cec40343480392d6b14d69", - "urls": [ - "bzz-raw://28879d01fd22c07b44f006612775f8577defbe459cb01685c5e25cd518c91a71", - "dweb:/ipfs/QmVgfkwv2Fxw6hhTcDUZhE7NkoSKjab3ipM7UaRbt6uXb5" - ], - "license": "MIT" - }, - "node_modules/@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol": { - "keccak256": "0xabefac93435967b4d36a4fabcbdbb918d1f0b7ae3c3d85bc30923b326c927ed1", - "urls": [ - "bzz-raw://9d213d3befca47da33f6db0310826bcdb148299805c10d77175ecfe1d06a9a68", - "dweb:/ipfs/QmRgCn6SP1hbBkExUADFuDo8xkT4UU47yjNF5FhCeRbQmS" - ], - "license": "MIT" - }, - "node_modules/@openzeppelin/contracts/utils/Address.sol": { - "keccak256": "0x006dd67219697fe68d7fbfdea512e7c4cb64a43565ed86171d67e844982da6fa", - "urls": [ - "bzz-raw://2455248c8ddd9cc6a7af76a13973cddf222072427e7b0e2a7d1aff345145e931", - "dweb:/ipfs/QmfYjnjRbWqYpuxurqveE6HtzsY1Xx323J428AKQgtBJZm" - ], - "license": "MIT" - }, - "node_modules/@openzeppelin/contracts/utils/StorageSlot.sol": { - "keccak256": "0xf09e68aa0dc6722a25bc46490e8d48ed864466d17313b8a0b254c36b54e49899", - "urls": [ - "bzz-raw://e26daf81e2252dc1fe1ce0e4b55c2eb7c6d1ee84ae6558d1a9554432ea1d32da", - "dweb:/ipfs/Qmb1UANWiWq5pCKbmHSu772hd4nt374dVaghGmwSVNuk8Q" - ], - "license": "MIT" - } - }, - "version": 1 - }, - "storageLayout": { - "storage": [ - { - "astId": 11586, - "contract": "contracts/layer2/core/BondManager.sol:BondManager", - "label": "_initialized", - "offset": 0, - "slot": "0", - "type": "t_uint8" - }, - { - "astId": 11589, - "contract": "contracts/layer2/core/BondManager.sol:BondManager", - "label": "_initializing", - "offset": 1, - "slot": "0", - "type": "t_bool" - }, - { - "astId": 16420, - "contract": "contracts/layer2/core/BondManager.sol:BondManager", - "label": "__gap", - "offset": 0, - "slot": "1", - "type": "t_array(t_uint256)50_storage" - }, - { - "astId": 11331, - "contract": "contracts/layer2/core/BondManager.sol:BondManager", - "label": "_owner", - "offset": 0, - "slot": "51", - "type": "t_address" - }, - { - "astId": 11451, - "contract": "contracts/layer2/core/BondManager.sol:BondManager", - "label": "__gap", - "offset": 0, - "slot": "52", - "type": "t_array(t_uint256)49_storage" - }, - { - "astId": 11224, - "contract": "contracts/layer2/core/BondManager.sol:BondManager", - "label": "_pendingOwner", - "offset": 0, - "slot": "101", - "type": "t_address" - }, - { - "astId": 11318, - "contract": "contracts/layer2/core/BondManager.sol:BondManager", - "label": "__gap", - "offset": 0, - "slot": "102", - "type": "t_array(t_uint256)49_storage" - }, - { - "astId": 4316, - "contract": "contracts/layer2/core/BondManager.sol:BondManager", - "label": "__gapFromOldAddressResolver", - "offset": 0, - "slot": "151", - "type": "t_array(t_uint256)50_storage" - }, - { - "astId": 4319, - "contract": "contracts/layer2/core/BondManager.sol:BondManager", - "label": "__reentry", - "offset": 0, - "slot": "201", - "type": "t_uint8" - }, - { - "astId": 4321, - "contract": "contracts/layer2/core/BondManager.sol:BondManager", - "label": "__paused", - "offset": 1, - "slot": "201", - "type": "t_uint8" - }, - { - "astId": 4325, - "contract": "contracts/layer2/core/BondManager.sol:BondManager", - "label": "__gap", - "offset": 0, - "slot": "202", - "type": "t_array(t_uint256)49_storage" - }, - { - "astId": 1542, - "contract": "contracts/layer2/core/BondManager.sol:BondManager", - "label": "bond", - "offset": 0, - "slot": "251", - "type": "t_mapping(t_address,t_struct(Bond)2043_storage)" - }, - { - "astId": 1546, - "contract": "contracts/layer2/core/BondManager.sol:BondManager", - "label": "__gap", - "offset": 0, - "slot": "252", - "type": "t_array(t_uint256)49_storage" - } - ], - "types": { - "t_address": { - "encoding": "inplace", - "label": "address", - "numberOfBytes": "20" - }, - "t_array(t_uint256)49_storage": { - "encoding": "inplace", - "label": "uint256[49]", - "numberOfBytes": "1568", - "base": "t_uint256" - }, - "t_array(t_uint256)50_storage": { - "encoding": "inplace", - "label": "uint256[50]", - "numberOfBytes": "1600", - "base": "t_uint256" - }, - "t_bool": { - "encoding": "inplace", - "label": "bool", - "numberOfBytes": "1" - }, - "t_mapping(t_address,t_struct(Bond)2043_storage)": { - "encoding": "mapping", - "key": "t_address", - "label": "mapping(address => struct IBondManager.Bond)", - "numberOfBytes": "32", - "value": "t_struct(Bond)2043_storage" - }, - "t_struct(Bond)2043_storage": { - "encoding": "inplace", - "label": "struct IBondManager.Bond", - "numberOfBytes": "64", - "members": [ - { - "astId": 2040, - "contract": "contracts/layer2/core/BondManager.sol:BondManager", - "label": "balance", - "offset": 0, - "slot": "0", - "type": "t_uint256" - }, - { - "astId": 2042, - "contract": "contracts/layer2/core/BondManager.sol:BondManager", - "label": "withdrawalRequestedAt", - "offset": 0, - "slot": "1", - "type": "t_uint48" - } - ] - }, - "t_uint256": { - "encoding": "inplace", - "label": "uint256", - "numberOfBytes": "32" - }, - "t_uint48": { - "encoding": "inplace", - "label": "uint48", - "numberOfBytes": "6" - }, - "t_uint8": { - "encoding": "inplace", - "label": "uint8", - "numberOfBytes": "1" - } - } - }, - "ast": { - "absolutePath": "contracts/layer2/core/BondManager.sol", - "id": 2035, - "exportedSymbols": { - "BondManager": [ - 2034 - ], - "EssentialContract": [ - 4802 - ], - "IBondManager": [ - 2159 - ], - "IERC20": [ - 21865 - ], - "SafeERC20": [ - 22302 - ] - }, - "nodeType": "SourceUnit", - "src": "32:8039:4", - "nodes": [ - { - "id": 1506, - "nodeType": "PragmaDirective", - "src": "32:24:4", - "nodes": [], - "literals": [ - "solidity", - "^", - "0.8", - ".24" - ] - }, - { - "id": 1508, - "nodeType": "ImportDirective", - "src": "58:50:4", - "nodes": [], - "absolutePath": "contracts/layer2/core/IBondManager.sol", - "file": "./IBondManager.sol", - "nameLocation": "-1:-1:-1", - "scope": 2035, - "sourceUnit": 2160, - "symbolAliases": [ - { - "foreign": { - "id": 1507, - "name": "IBondManager", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2159, - "src": "67:12:4", - "typeDescriptions": {} - }, - "nameLocation": "-1:-1:-1" - } - ], - "unitAlias": "" - }, - { - "id": 1510, - "nodeType": "ImportDirective", - "src": "109:72:4", - "nodes": [], - "absolutePath": "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", - "file": "@openzeppelin/contracts/token/ERC20/IERC20.sol", - "nameLocation": "-1:-1:-1", - "scope": 2035, - "sourceUnit": 21866, - "symbolAliases": [ - { - "foreign": { - "id": 1509, - "name": "IERC20", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 21865, - "src": "118:6:4", - "typeDescriptions": {} - }, - "nameLocation": "-1:-1:-1" - } - ], - "unitAlias": "" - }, - { - "id": 1512, - "nodeType": "ImportDirective", - "src": "182:84:4", - "nodes": [], - "absolutePath": "node_modules/@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol", - "file": "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol", - "nameLocation": "-1:-1:-1", - "scope": 2035, - "sourceUnit": 22303, - "symbolAliases": [ - { - "foreign": { - "id": 1511, - "name": "SafeERC20", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 22302, - "src": "191:9:4", - "typeDescriptions": {} - }, - "nameLocation": "-1:-1:-1" - } - ], - "unitAlias": "" - }, - { - "id": 1514, - "nodeType": "ImportDirective", - "src": "267:76:4", - "nodes": [], - "absolutePath": "contracts/shared/common/EssentialContract.sol", - "file": "src/shared/common/EssentialContract.sol", - "nameLocation": "-1:-1:-1", - "scope": 2035, - "sourceUnit": 4803, - "symbolAliases": [ - { - "foreign": { - "id": 1513, - "name": "EssentialContract", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4802, - "src": "276:17:4", - "typeDescriptions": {} - }, - "nameLocation": "-1:-1:-1" - } - ], - "unitAlias": "" - }, - { - "id": 2034, - "nodeType": "ContractDefinition", - "src": "498:7572:4", - "nodes": [ - { - "id": 1523, - "nodeType": "UsingForDirective", - "src": "560:27:4", - "nodes": [], - "global": false, - "libraryName": { - "id": 1520, - "name": "SafeERC20", - "nameLocations": [ - "566:9:4" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 22302, - "src": "566:9:4" - }, - "typeName": { - "id": 1522, - "nodeType": "UserDefinedTypeName", - "pathNode": { - "id": 1521, - "name": "IERC20", - "nameLocations": [ - "580:6:4" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 21865, - "src": "580:6:4" - }, - "referencedDeclaration": 21865, - "src": "580:6:4", - "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$21865", - "typeString": "contract IERC20" - } - } - }, - { - "id": 1526, - "nodeType": "VariableDeclaration", - "src": "858:35:4", - "nodes": [], - "constant": false, - "documentation": { - "id": 1524, - "nodeType": "StructuredDocumentation", - "src": "759:94:4", - "text": "@notice The address of the inbox contract that is allowed to call debitBond and creditBond" - }, - "functionSelector": "456cb7c6", - "mutability": "immutable", - "name": "authorized", - "nameLocation": "883:10:4", - "scope": 2034, - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 1525, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "858:7:4", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "public" - }, - { - "id": 1530, - "nodeType": "VariableDeclaration", - "src": "942:33:4", - "nodes": [], - "constant": false, - "documentation": { - "id": 1527, - "nodeType": "StructuredDocumentation", - "src": "900:37:4", - "text": "@notice ERC20 token used as bond." - }, - "functionSelector": "c28f4392", - "mutability": "immutable", - "name": "bondToken", - "nameLocation": "966:9:4", - "scope": 2034, - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$21865", - "typeString": "contract IERC20" - }, - "typeName": { - "id": 1529, - "nodeType": "UserDefinedTypeName", - "pathNode": { - "id": 1528, - "name": "IERC20", - "nameLocations": [ - "942:6:4" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 21865, - "src": "942:6:4" - }, - "referencedDeclaration": 21865, - "src": "942:6:4", - "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$21865", - "typeString": "contract IERC20" - } - }, - "visibility": "public" - }, - { - "id": 1533, - "nodeType": "VariableDeclaration", - "src": "1020:32:4", - "nodes": [], - "constant": false, - "documentation": { - "id": 1531, - "nodeType": "StructuredDocumentation", - "src": "982:33:4", - "text": "@notice Minimum bond required" - }, - "functionSelector": "831518b7", - "mutability": "immutable", - "name": "minBond", - "nameLocation": "1045:7:4", - "scope": 2034, - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1532, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1020:7:4", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "public" - }, - { - "id": 1536, - "nodeType": "VariableDeclaration", - "src": "1421:39:4", - "nodes": [], - "constant": false, - "documentation": { - "id": 1534, - "nodeType": "StructuredDocumentation", - "src": "1059:357:4", - "text": "@notice Time delay required before withdrawal after request\n @dev WARNING: In theory operations can remain unfinalized indefinitely, but in practice\n after\n the `extendedProvingWindow` the incentives are very strong for finalization.\n A safe value for this is `extendedProvingWindow` + buffer, for example, 2 weeks." - }, - "functionSelector": "a7ab6961", - "mutability": "immutable", - "name": "withdrawalDelay", - "nameLocation": "1445:15:4", - "scope": 2034, - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint48", - "typeString": "uint48" - }, - "typeName": { - "id": 1535, - "name": "uint48", - "nodeType": "ElementaryTypeName", - "src": "1421:6:4", - "typeDescriptions": { - "typeIdentifier": "t_uint48", - "typeString": "uint48" - } - }, - "visibility": "public" - }, - { - "id": 1542, - "nodeType": "VariableDeclaration", - "src": "1506:49:4", - "nodes": [], - "constant": false, - "documentation": { - "id": 1537, - "nodeType": "StructuredDocumentation", - "src": "1467:34:4", - "text": "@notice Per-account bond state" - }, - "functionSelector": "247ce85b", - "mutability": "mutable", - "name": "bond", - "nameLocation": "1551:4:4", - "scope": 2034, - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Bond_$2043_storage_$", - "typeString": "mapping(address => struct IBondManager.Bond)" - }, - "typeName": { - "id": 1541, - "keyName": "account", - "keyNameLocation": "1522:7:4", - "keyType": { - "id": 1538, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "1514:7:4", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "Mapping", - "src": "1506:37:4", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Bond_$2043_storage_$", - "typeString": "mapping(address => struct IBondManager.Bond)" - }, - "valueName": "bond", - "valueNameLocation": "1538:4:4", - "valueType": { - "id": 1540, - "nodeType": "UserDefinedTypeName", - "pathNode": { - "id": 1539, - "name": "Bond", - "nameLocations": [ - "1533:4:4" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 2043, - "src": "1533:4:4" - }, - "referencedDeclaration": 2043, - "src": "1533:4:4", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Bond_$2043_storage_ptr", - "typeString": "struct IBondManager.Bond" - } - } - }, - "visibility": "public" - }, - { - "id": 1546, - "nodeType": "VariableDeclaration", - "src": "1562:25:4", - "nodes": [], - "constant": false, - "mutability": "mutable", - "name": "__gap", - "nameLocation": "1582:5:4", - "scope": 2034, - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$49_storage", - "typeString": "uint256[49]" - }, - "typeName": { - "baseType": { - "id": 1543, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1562:7:4", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 1545, - "length": { - "hexValue": "3439", - "id": 1544, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1570:2:4", - "typeDescriptions": { - "typeIdentifier": "t_rational_49_by_1", - "typeString": "int_const 49" - }, - "value": "49" - }, - "nodeType": "ArrayTypeName", - "src": "1562:11:4", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$49_storage_ptr", - "typeString": "uint256[49]" - } - }, - "visibility": "private" - }, - { - "id": 1577, - "nodeType": "FunctionDefinition", - "src": "2108:287:4", - "nodes": [], - "body": { - "id": 1576, - "nodeType": "Block", - "src": "2242:153:4", - "nodes": [], - "statements": [ - { - "expression": { - "id": 1560, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 1558, - "name": "authorized", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1526, - "src": "2252:10:4", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "id": 1559, - "name": "_authorized", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1549, - "src": "2265:11:4", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "2252:24:4", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 1561, - "nodeType": "ExpressionStatement", - "src": "2252:24:4" - }, - { - "expression": { - "id": 1566, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 1562, - "name": "bondToken", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1530, - "src": "2286:9:4", - "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$21865", - "typeString": "contract IERC20" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "arguments": [ - { - "id": 1564, - "name": "_bondToken", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1551, - "src": "2305:10:4", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": 1563, - "name": "IERC20", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 21865, - "src": "2298:6:4", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_IERC20_$21865_$", - "typeString": "type(contract IERC20)" - } - }, - "id": 1565, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "2298:18:4", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$21865", - "typeString": "contract IERC20" - } - }, - "src": "2286:30:4", - "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$21865", - "typeString": "contract IERC20" - } - }, - "id": 1567, - "nodeType": "ExpressionStatement", - "src": "2286:30:4" - }, - { - "expression": { - "id": 1570, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 1568, - "name": "minBond", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1533, - "src": "2326:7:4", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "id": 1569, - "name": "_minBond", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1553, - "src": "2336:8:4", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "2326:18:4", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 1571, - "nodeType": "ExpressionStatement", - "src": "2326:18:4" - }, - { - "expression": { - "id": 1574, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 1572, - "name": "withdrawalDelay", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1536, - "src": "2354:15:4", - "typeDescriptions": { - "typeIdentifier": "t_uint48", - "typeString": "uint48" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "id": 1573, - "name": "_withdrawalDelay", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1555, - "src": "2372:16:4", - "typeDescriptions": { - "typeIdentifier": "t_uint48", - "typeString": "uint48" - } - }, - "src": "2354:34:4", - "typeDescriptions": { - "typeIdentifier": "t_uint48", - "typeString": "uint48" - } - }, - "id": 1575, - "nodeType": "ExpressionStatement", - "src": "2354:34:4" - } - ] - }, - "documentation": { - "id": 1547, - "nodeType": "StructuredDocumentation", - "src": "1775:328:4", - "text": "@notice Constructor disables initializers for upgradeable pattern\n @param _authorized The address of the authorized contract (Inbox)\n @param _bondToken The ERC20 bond token address\n @param _minBond The minimum bond required\n @param _withdrawalDelay The delay period for withdrawals (e.g., 7 days)" - }, - "implemented": true, - "kind": "constructor", - "modifiers": [], - "name": "", - "nameLocation": "-1:-1:-1", - "parameters": { - "id": 1556, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1549, - "mutability": "mutable", - "name": "_authorized", - "nameLocation": "2137:11:4", - "nodeType": "VariableDeclaration", - "scope": 1577, - "src": "2129:19:4", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 1548, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "2129:7:4", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 1551, - "mutability": "mutable", - "name": "_bondToken", - "nameLocation": "2166:10:4", - "nodeType": "VariableDeclaration", - "scope": 1577, - "src": "2158:18:4", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 1550, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "2158:7:4", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 1553, - "mutability": "mutable", - "name": "_minBond", - "nameLocation": "2194:8:4", - "nodeType": "VariableDeclaration", - "scope": 1577, - "src": "2186:16:4", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1552, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "2186:7:4", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 1555, - "mutability": "mutable", - "name": "_withdrawalDelay", - "nameLocation": "2219:16:4", - "nodeType": "VariableDeclaration", - "scope": 1577, - "src": "2212:23:4", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint48", - "typeString": "uint48" - }, - "typeName": { - "id": 1554, - "name": "uint48", - "nodeType": "ElementaryTypeName", - "src": "2212:6:4", - "typeDescriptions": { - "typeIdentifier": "t_uint48", - "typeString": "uint48" - } - }, - "visibility": "internal" - } - ], - "src": "2119:122:4" - }, - "returnParameters": { - "id": 1557, - "nodeType": "ParameterList", - "parameters": [], - "src": "2242:0:4" - }, - "scope": 2034, - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "public" - }, - { - "id": 1590, - "nodeType": "FunctionDefinition", - "src": "2503:92:4", - "nodes": [], - "body": { - "id": 1589, - "nodeType": "Block", - "src": "2554:41:4", - "nodes": [], - "statements": [ - { - "expression": { - "arguments": [ - { - "id": 1586, - "name": "_owner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1580, - "src": "2581:6:4", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": 1585, - "name": "__Essential_init", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4585, - "src": "2564:16:4", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", - "typeString": "function (address)" - } - }, - "id": 1587, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "2564:24:4", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1588, - "nodeType": "ExpressionStatement", - "src": "2564:24:4" - } - ] - }, - "documentation": { - "id": 1578, - "nodeType": "StructuredDocumentation", - "src": "2401:97:4", - "text": "@notice Initializes the BondManager contract\n @param _owner The owner of this contract" - }, - "functionSelector": "19ab453c", - "implemented": true, - "kind": "function", - "modifiers": [ - { - "id": 1583, - "kind": "modifierInvocation", - "modifierName": { - "id": 1582, - "name": "initializer", - "nameLocations": [ - "2542:11:4" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 11650, - "src": "2542:11:4" - }, - "nodeType": "ModifierInvocation", - "src": "2542:11:4" - } - ], - "name": "init", - "nameLocation": "2512:4:4", - "parameters": { - "id": 1581, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1580, - "mutability": "mutable", - "name": "_owner", - "nameLocation": "2525:6:4", - "nodeType": "VariableDeclaration", - "scope": 1590, - "src": "2517:14:4", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 1579, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "2517:7:4", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - } - ], - "src": "2516:16:4" - }, - "returnParameters": { - "id": 1584, - "nodeType": "ParameterList", - "parameters": [], - "src": "2554:0:4" - }, - "scope": 2034, - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "external" - }, - { - "id": 1621, - "nodeType": "FunctionDefinition", - "src": "2803:326:4", - "nodes": [], - "body": { - "id": 1620, - "nodeType": "Block", - "src": "2968:161:4", - "nodes": [], - "statements": [ - { - "expression": { - "id": 1608, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 1603, - "name": "amountDebited_", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1601, - "src": "2978:14:4", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "arguments": [ - { - "id": 1605, - "name": "_address", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1593, - "src": "3006:8:4", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "id": 1606, - "name": "_bond", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1595, - "src": "3016:5:4", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 1604, - "name": "_debitBond", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1947, - "src": "2995:10:4", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (address,uint256) returns (uint256)" - } - }, - "id": 1607, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "2995:27:4", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "2978:44:4", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 1609, - "nodeType": "ExpressionStatement", - "src": "2978:44:4" - }, - { - "condition": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 1612, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 1610, - "name": "amountDebited_", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1601, - "src": "3036:14:4", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": ">", - "rightExpression": { - "hexValue": "30", - "id": 1611, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3053:1:4", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "3036:18:4", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 1619, - "nodeType": "IfStatement", - "src": "3032:91:4", - "trueBody": { - "id": 1618, - "nodeType": "Block", - "src": "3056:67:4", - "statements": [ - { - "eventCall": { - "arguments": [ - { - "id": 1614, - "name": "_address", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1593, - "src": "3087:8:4", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "id": 1615, - "name": "amountDebited_", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1601, - "src": "3097:14:4", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 1613, - "name": "BondDebited", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2050, - "src": "3075:11:4", - "typeDescriptions": { - "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$returns$__$", - "typeString": "function (address,uint256)" - } - }, - "id": 1616, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "3075:37:4", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1617, - "nodeType": "EmitStatement", - "src": "3070:42:4" - } - ] - } - } - ] - }, - "baseFunctions": [ - 2102 - ], - "documentation": { - "id": 1591, - "nodeType": "StructuredDocumentation", - "src": "2770:28:4", - "text": "@inheritdoc IBondManager" - }, - "functionSelector": "391396de", - "implemented": true, - "kind": "function", - "modifiers": [ - { - "arguments": [ - { - "id": 1598, - "name": "authorized", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1526, - "src": "2911:10:4", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "id": 1599, - "kind": "modifierInvocation", - "modifierName": { - "id": 1597, - "name": "onlyFrom", - "nameLocations": [ - "2902:8:4" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 4456, - "src": "2902:8:4" - }, - "nodeType": "ModifierInvocation", - "src": "2902:20:4" - } - ], - "name": "debitBond", - "nameLocation": "2812:9:4", - "parameters": { - "id": 1596, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1593, - "mutability": "mutable", - "name": "_address", - "nameLocation": "2839:8:4", - "nodeType": "VariableDeclaration", - "scope": 1621, - "src": "2831:16:4", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 1592, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "2831:7:4", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 1595, - "mutability": "mutable", - "name": "_bond", - "nameLocation": "2865:5:4", - "nodeType": "VariableDeclaration", - "scope": 1621, - "src": "2857:13:4", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1594, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "2857:7:4", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "2821:55:4" - }, - "returnParameters": { - "id": 1602, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1601, - "mutability": "mutable", - "name": "amountDebited_", - "nameLocation": "2948:14:4", - "nodeType": "VariableDeclaration", - "scope": 1621, - "src": "2940:22:4", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1600, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "2940:7:4", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "2939:24:4" - }, - "scope": 2034, - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "external" - }, - { - "id": 1638, - "nodeType": "FunctionDefinition", - "src": "3168:128:4", - "nodes": [], - "body": { - "id": 1637, - "nodeType": "Block", - "src": "3251:45:4", - "nodes": [], - "statements": [ - { - "expression": { - "arguments": [ - { - "id": 1633, - "name": "_address", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1624, - "src": "3273:8:4", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "id": 1634, - "name": "_bond", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1626, - "src": "3283:5:4", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 1632, - "name": "_creditBond", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1977, - "src": "3261:11:4", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", - "typeString": "function (address,uint256)" - } - }, - "id": 1635, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "3261:28:4", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1636, - "nodeType": "ExpressionStatement", - "src": "3261:28:4" - } - ] - }, - "baseFunctions": [ - 2110 - ], - "documentation": { - "id": 1622, - "nodeType": "StructuredDocumentation", - "src": "3135:28:4", - "text": "@inheritdoc IBondManager" - }, - "functionSelector": "be32d1f4", - "implemented": true, - "kind": "function", - "modifiers": [ - { - "arguments": [ - { - "id": 1629, - "name": "authorized", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1526, - "src": "3239:10:4", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "id": 1630, - "kind": "modifierInvocation", - "modifierName": { - "id": 1628, - "name": "onlyFrom", - "nameLocations": [ - "3230:8:4" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 4456, - "src": "3230:8:4" - }, - "nodeType": "ModifierInvocation", - "src": "3230:20:4" - } - ], - "name": "creditBond", - "nameLocation": "3177:10:4", - "parameters": { - "id": 1627, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1624, - "mutability": "mutable", - "name": "_address", - "nameLocation": "3196:8:4", - "nodeType": "VariableDeclaration", - "scope": 1638, - "src": "3188:16:4", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 1623, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "3188:7:4", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 1626, - "mutability": "mutable", - "name": "_bond", - "nameLocation": "3214:5:4", - "nodeType": "VariableDeclaration", - "scope": 1638, - "src": "3206:13:4", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1625, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "3206:7:4", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "3187:33:4" - }, - "returnParameters": { - "id": 1631, - "nodeType": "ParameterList", - "parameters": [], - "src": "3251:0:4" - }, - "scope": 2034, - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "external" - }, - { - "id": 1651, - "nodeType": "FunctionDefinition", - "src": "3335:123:4", - "nodes": [], - "body": { - "id": 1650, - "nodeType": "Block", - "src": "3409:49:4", - "nodes": [], - "statements": [ - { - "expression": { - "arguments": [ - { - "id": 1647, - "name": "_address", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1641, - "src": "3442:8:4", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": 1646, - "name": "_getBondBalance", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2021, - "src": "3426:15:4", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_uint256_$", - "typeString": "function (address) view returns (uint256)" - } - }, - "id": 1648, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "3426:25:4", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "functionReturnParameters": 1645, - "id": 1649, - "nodeType": "Return", - "src": "3419:32:4" - } - ] - }, - "baseFunctions": [ - 2118 - ], - "documentation": { - "id": 1639, - "nodeType": "StructuredDocumentation", - "src": "3302:28:4", - "text": "@inheritdoc IBondManager" - }, - "functionSelector": "33613cbe", - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "getBondBalance", - "nameLocation": "3344:14:4", - "parameters": { - "id": 1642, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1641, - "mutability": "mutable", - "name": "_address", - "nameLocation": "3367:8:4", - "nodeType": "VariableDeclaration", - "scope": 1651, - "src": "3359:16:4", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 1640, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "3359:7:4", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - } - ], - "src": "3358:18:4" - }, - "returnParameters": { - "id": 1645, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1644, - "mutability": "mutable", - "name": "", - "nameLocation": "-1:-1:-1", - "nodeType": "VariableDeclaration", - "scope": 1651, - "src": "3400:7:4", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1643, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "3400:7:4", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "3399:9:4" - }, - "scope": 2034, - "stateMutability": "view", - "virtual": false, - "visibility": "external" - }, - { - "id": 1684, - "nodeType": "FunctionDefinition", - "src": "3497:228:4", - "nodes": [], - "body": { - "id": 1683, - "nodeType": "Block", - "src": "3553:172:4", - "nodes": [], - "statements": [ - { - "expression": { - "arguments": [ - { - "expression": { - "id": 1662, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -15, - "src": "3590:3:4", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 1663, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "3594:6:4", - "memberName": "sender", - "nodeType": "MemberAccess", - "src": "3590:10:4", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "arguments": [ - { - "id": 1666, - "name": "this", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -28, - "src": "3610:4:4", - "typeDescriptions": { - "typeIdentifier": "t_contract$_BondManager_$2034", - "typeString": "contract BondManager" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_contract$_BondManager_$2034", - "typeString": "contract BondManager" - } - ], - "id": 1665, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "3602:7:4", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_address_$", - "typeString": "type(address)" - }, - "typeName": { - "id": 1664, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "3602:7:4", - "typeDescriptions": {} - } - }, - "id": 1667, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "3602:13:4", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "id": 1668, - "name": "_amount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1654, - "src": "3617:7:4", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "expression": { - "id": 1659, - "name": "bondToken", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1530, - "src": "3563:9:4", - "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$21865", - "typeString": "contract IERC20" - } - }, - "id": 1661, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "3573:16:4", - "memberName": "safeTransferFrom", - "nodeType": "MemberAccess", - "referencedDeclaration": 21986, - "src": "3563:26:4", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$21865_$_t_address_$_t_address_$_t_uint256_$returns$__$attached_to$_t_contract$_IERC20_$21865_$", - "typeString": "function (contract IERC20,address,address,uint256)" - } - }, - "id": 1669, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "3563:62:4", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1670, - "nodeType": "ExpressionStatement", - "src": "3563:62:4" - }, - { - "expression": { - "arguments": [ - { - "expression": { - "id": 1672, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -15, - "src": "3648:3:4", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 1673, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "3652:6:4", - "memberName": "sender", - "nodeType": "MemberAccess", - "src": "3648:10:4", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "id": 1674, - "name": "_amount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1654, - "src": "3660:7:4", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 1671, - "name": "_creditBond", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1977, - "src": "3636:11:4", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", - "typeString": "function (address,uint256)" - } - }, - "id": 1675, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "3636:32:4", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1676, - "nodeType": "ExpressionStatement", - "src": "3636:32:4" - }, - { - "eventCall": { - "arguments": [ - { - "expression": { - "id": 1678, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -15, - "src": "3698:3:4", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 1679, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "3702:6:4", - "memberName": "sender", - "nodeType": "MemberAccess", - "src": "3698:10:4", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "id": 1680, - "name": "_amount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1654, - "src": "3710:7:4", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 1677, - "name": "BondDeposited", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2064, - "src": "3684:13:4", - "typeDescriptions": { - "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$returns$__$", - "typeString": "function (address,uint256)" - } - }, - "id": 1681, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "3684:34:4", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1682, - "nodeType": "EmitStatement", - "src": "3679:39:4" - } - ] - }, - "baseFunctions": [ - 2124 - ], - "documentation": { - "id": 1652, - "nodeType": "StructuredDocumentation", - "src": "3464:28:4", - "text": "@inheritdoc IBondManager" - }, - "functionSelector": "b6b55f25", - "implemented": true, - "kind": "function", - "modifiers": [ - { - "id": 1657, - "kind": "modifierInvocation", - "modifierName": { - "id": 1656, - "name": "nonReentrant", - "nameLocations": [ - "3540:12:4" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 4382, - "src": "3540:12:4" - }, - "nodeType": "ModifierInvocation", - "src": "3540:12:4" - } - ], - "name": "deposit", - "nameLocation": "3506:7:4", - "parameters": { - "id": 1655, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1654, - "mutability": "mutable", - "name": "_amount", - "nameLocation": "3522:7:4", - "nodeType": "VariableDeclaration", - "scope": 1684, - "src": "3514:15:4", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1653, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "3514:7:4", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "3513:17:4" - }, - "returnParameters": { - "id": 1658, - "nodeType": "ParameterList", - "parameters": [], - "src": "3553:0:4" - }, - "scope": 2034, - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "external" - }, - { - "id": 1730, - "nodeType": "FunctionDefinition", - "src": "3764:329:4", - "nodes": [], - "body": { - "id": 1729, - "nodeType": "Block", - "src": "3842:251:4", - "nodes": [], - "statements": [ - { - "expression": { - "arguments": [ - { - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 1700, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 1695, - "name": "_recipient", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1687, - "src": "3860:10:4", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "arguments": [ - { - "hexValue": "30", - "id": 1698, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3882:1:4", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - } - ], - "id": 1697, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "3874:7:4", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_address_$", - "typeString": "type(address)" - }, - "typeName": { - "id": 1696, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "3874:7:4", - "typeDescriptions": {} - } - }, - "id": 1699, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "typeConversion", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "3874:10:4", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "3860:24:4", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - { - "arguments": [], - "expression": { - "argumentTypes": [], - "id": 1701, - "name": "InvalidRecipient", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2025, - "src": "3886:16:4", - "typeDescriptions": { - "typeIdentifier": "t_function_error_pure$__$returns$_t_error_$", - "typeString": "function () pure returns (error)" - } - }, - "id": 1702, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "3886:18:4", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_error", - "typeString": "error" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_error", - "typeString": "error" - } - ], - "id": 1694, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - -18, - -18, - -18 - ], - "referencedDeclaration": -18, - "src": "3852:7:4", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_error_$returns$__$", - "typeString": "function (bool,error) pure" - } - }, - "id": 1703, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "3852:53:4", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1704, - "nodeType": "ExpressionStatement", - "src": "3852:53:4" - }, - { - "expression": { - "arguments": [ - { - "expression": { - "id": 1708, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -15, - "src": "3943:3:4", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 1709, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "3947:6:4", - "memberName": "sender", - "nodeType": "MemberAccess", - "src": "3943:10:4", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "arguments": [ - { - "id": 1712, - "name": "this", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -28, - "src": "3963:4:4", - "typeDescriptions": { - "typeIdentifier": "t_contract$_BondManager_$2034", - "typeString": "contract BondManager" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_contract$_BondManager_$2034", - "typeString": "contract BondManager" - } - ], - "id": 1711, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "3955:7:4", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_address_$", - "typeString": "type(address)" - }, - "typeName": { - "id": 1710, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "3955:7:4", - "typeDescriptions": {} - } - }, - "id": 1713, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "3955:13:4", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "id": 1714, - "name": "_amount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1689, - "src": "3970:7:4", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "expression": { - "id": 1705, - "name": "bondToken", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1530, - "src": "3916:9:4", - "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$21865", - "typeString": "contract IERC20" - } - }, - "id": 1707, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "3926:16:4", - "memberName": "safeTransferFrom", - "nodeType": "MemberAccess", - "referencedDeclaration": 21986, - "src": "3916:26:4", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$21865_$_t_address_$_t_address_$_t_uint256_$returns$__$attached_to$_t_contract$_IERC20_$21865_$", - "typeString": "function (contract IERC20,address,address,uint256)" - } - }, - "id": 1715, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "3916:62:4", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1716, - "nodeType": "ExpressionStatement", - "src": "3916:62:4" - }, - { - "expression": { - "arguments": [ - { - "id": 1718, - "name": "_recipient", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1687, - "src": "4001:10:4", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "id": 1719, - "name": "_amount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1689, - "src": "4013:7:4", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 1717, - "name": "_creditBond", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1977, - "src": "3989:11:4", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", - "typeString": "function (address,uint256)" - } - }, - "id": 1720, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "3989:32:4", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1721, - "nodeType": "ExpressionStatement", - "src": "3989:32:4" - }, - { - "eventCall": { - "arguments": [ - { - "expression": { - "id": 1723, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -15, - "src": "4054:3:4", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 1724, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "4058:6:4", - "memberName": "sender", - "nodeType": "MemberAccess", - "src": "4054:10:4", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "id": 1725, - "name": "_recipient", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1687, - "src": "4066:10:4", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "id": 1726, - "name": "_amount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1689, - "src": "4078:7:4", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 1722, - "name": "BondDepositedFor", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2073, - "src": "4037:16:4", - "typeDescriptions": { - "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", - "typeString": "function (address,address,uint256)" - } - }, - "id": 1727, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "4037:49:4", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1728, - "nodeType": "EmitStatement", - "src": "4032:54:4" - } - ] - }, - "baseFunctions": [ - 2132 - ], - "documentation": { - "id": 1685, - "nodeType": "StructuredDocumentation", - "src": "3731:28:4", - "text": "@inheritdoc IBondManager" - }, - "functionSelector": "ffaad6a5", - "implemented": true, - "kind": "function", - "modifiers": [ - { - "id": 1692, - "kind": "modifierInvocation", - "modifierName": { - "id": 1691, - "name": "nonReentrant", - "nameLocations": [ - "3829:12:4" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 4382, - "src": "3829:12:4" - }, - "nodeType": "ModifierInvocation", - "src": "3829:12:4" - } - ], - "name": "depositTo", - "nameLocation": "3773:9:4", - "parameters": { - "id": 1690, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1687, - "mutability": "mutable", - "name": "_recipient", - "nameLocation": "3791:10:4", - "nodeType": "VariableDeclaration", - "scope": 1730, - "src": "3783:18:4", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 1686, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "3783:7:4", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 1689, - "mutability": "mutable", - "name": "_amount", - "nameLocation": "3811:7:4", - "nodeType": "VariableDeclaration", - "scope": 1730, - "src": "3803:15:4", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1688, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "3803:7:4", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "3782:37:4" - }, - "returnParameters": { - "id": 1693, - "nodeType": "ParameterList", - "parameters": [], - "src": "3842:0:4" - }, - "scope": 2034, - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "external" - }, - { - "id": 1760, - "nodeType": "FunctionDefinition", - "src": "4132:296:4", - "nodes": [], - "body": { - "id": 1759, - "nodeType": "Block", - "src": "4281:147:4", - "nodes": [], - "statements": [ - { - "assignments": [ - 1742 - ], - "declarations": [ - { - "constant": false, - "id": 1742, - "mutability": "mutable", - "name": "bond_", - "nameLocation": "4304:5:4", - "nodeType": "VariableDeclaration", - "scope": 1759, - "src": "4291:18:4", - "stateVariable": false, - "storageLocation": "storage", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Bond_$2043_storage_ptr", - "typeString": "struct IBondManager.Bond" - }, - "typeName": { - "id": 1741, - "nodeType": "UserDefinedTypeName", - "pathNode": { - "id": 1740, - "name": "Bond", - "nameLocations": [ - "4291:4:4" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 2043, - "src": "4291:4:4" - }, - "referencedDeclaration": 2043, - "src": "4291:4:4", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Bond_$2043_storage_ptr", - "typeString": "struct IBondManager.Bond" - } - }, - "visibility": "internal" - } - ], - "id": 1746, - "initialValue": { - "baseExpression": { - "id": 1743, - "name": "bond", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1542, - "src": "4312:4:4", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Bond_$2043_storage_$", - "typeString": "mapping(address => struct IBondManager.Bond storage ref)" - } - }, - "id": 1745, - "indexExpression": { - "id": 1744, - "name": "_address", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1733, - "src": "4317:8:4", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "4312:14:4", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Bond_$2043_storage", - "typeString": "struct IBondManager.Bond storage ref" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "4291:35:4" - }, - { - "expression": { - "commonType": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "id": 1757, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 1752, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "expression": { - "id": 1747, - "name": "bond_", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1742, - "src": "4343:5:4", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Bond_$2043_storage_ptr", - "typeString": "struct IBondManager.Bond storage pointer" - } - }, - "id": 1748, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberLocation": "4349:7:4", - "memberName": "balance", - "nodeType": "MemberAccess", - "referencedDeclaration": 2040, - "src": "4343:13:4", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": ">=", - "rightExpression": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 1751, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 1749, - "name": "minBond", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1533, - "src": "4360:7:4", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "+", - "rightExpression": { - "id": 1750, - "name": "_additionalBond", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1735, - "src": "4370:15:4", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "4360:25:4", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "4343:42:4", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "BinaryOperation", - "operator": "&&", - "rightExpression": { - "commonType": { - "typeIdentifier": "t_uint48", - "typeString": "uint48" - }, - "id": 1756, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "expression": { - "id": 1753, - "name": "bond_", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1742, - "src": "4389:5:4", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Bond_$2043_storage_ptr", - "typeString": "struct IBondManager.Bond storage pointer" - } - }, - "id": 1754, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberLocation": "4395:21:4", - "memberName": "withdrawalRequestedAt", - "nodeType": "MemberAccess", - "referencedDeclaration": 2042, - "src": "4389:27:4", - "typeDescriptions": { - "typeIdentifier": "t_uint48", - "typeString": "uint48" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "hexValue": "30", - "id": 1755, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "4420:1:4", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "4389:32:4", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "src": "4343:78:4", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "functionReturnParameters": 1739, - "id": 1758, - "nodeType": "Return", - "src": "4336:85:4" - } - ] - }, - "baseFunctions": [ - 2150 - ], - "documentation": { - "id": 1731, - "nodeType": "StructuredDocumentation", - "src": "4099:28:4", - "text": "@inheritdoc IBondManager" - }, - "functionSelector": "a116e486", - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "hasSufficientBond", - "nameLocation": "4141:17:4", - "parameters": { - "id": 1736, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1733, - "mutability": "mutable", - "name": "_address", - "nameLocation": "4176:8:4", - "nodeType": "VariableDeclaration", - "scope": 1760, - "src": "4168:16:4", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 1732, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "4168:7:4", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 1735, - "mutability": "mutable", - "name": "_additionalBond", - "nameLocation": "4202:15:4", - "nodeType": "VariableDeclaration", - "scope": 1760, - "src": "4194:23:4", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1734, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "4194:7:4", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "4158:65:4" - }, - "returnParameters": { - "id": 1739, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1738, - "mutability": "mutable", - "name": "", - "nameLocation": "-1:-1:-1", - "nodeType": "VariableDeclaration", - "scope": 1760, - "src": "4271:4:4", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 1737, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "4271:4:4", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "visibility": "internal" - } - ], - "src": "4270:6:4" - }, - "scope": 2034, - "stateMutability": "view", - "virtual": false, - "visibility": "external" - }, - { - "id": 1812, - "nodeType": "FunctionDefinition", - "src": "4467:387:4", - "nodes": [], - "body": { - "id": 1811, - "nodeType": "Block", - "src": "4518:336:4", - "nodes": [], - "statements": [ - { - "assignments": [ - 1768 - ], - "declarations": [ - { - "constant": false, - "id": 1768, - "mutability": "mutable", - "name": "bond_", - "nameLocation": "4541:5:4", - "nodeType": "VariableDeclaration", - "scope": 1811, - "src": "4528:18:4", - "stateVariable": false, - "storageLocation": "storage", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Bond_$2043_storage_ptr", - "typeString": "struct IBondManager.Bond" - }, - "typeName": { - "id": 1767, - "nodeType": "UserDefinedTypeName", - "pathNode": { - "id": 1766, - "name": "Bond", - "nameLocations": [ - "4528:4:4" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 2043, - "src": "4528:4:4" - }, - "referencedDeclaration": 2043, - "src": "4528:4:4", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Bond_$2043_storage_ptr", - "typeString": "struct IBondManager.Bond" - } - }, - "visibility": "internal" - } - ], - "id": 1773, - "initialValue": { - "baseExpression": { - "id": 1769, - "name": "bond", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1542, - "src": "4549:4:4", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Bond_$2043_storage_$", - "typeString": "mapping(address => struct IBondManager.Bond storage ref)" - } - }, - "id": 1772, - "indexExpression": { - "expression": { - "id": 1770, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -15, - "src": "4554:3:4", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 1771, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "4558:6:4", - "memberName": "sender", - "nodeType": "MemberAccess", - "src": "4554:10:4", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "4549:16:4", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Bond_$2043_storage", - "typeString": "struct IBondManager.Bond storage ref" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "4528:37:4" - }, - { - "expression": { - "arguments": [ - { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 1778, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "expression": { - "id": 1775, - "name": "bond_", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1768, - "src": "4583:5:4", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Bond_$2043_storage_ptr", - "typeString": "struct IBondManager.Bond storage pointer" - } - }, - "id": 1776, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberLocation": "4589:7:4", - "memberName": "balance", - "nodeType": "MemberAccess", - "referencedDeclaration": 2040, - "src": "4583:13:4", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": ">", - "rightExpression": { - "hexValue": "30", - "id": 1777, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "4599:1:4", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "4583:17:4", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - { - "arguments": [], - "expression": { - "argumentTypes": [], - "id": 1779, - "name": "NoBondToWithdraw", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2029, - "src": "4602:16:4", - "typeDescriptions": { - "typeIdentifier": "t_function_error_pure$__$returns$_t_error_$", - "typeString": "function () pure returns (error)" - } - }, - "id": 1780, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "4602:18:4", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_error", - "typeString": "error" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_error", - "typeString": "error" - } - ], - "id": 1774, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - -18, - -18, - -18 - ], - "referencedDeclaration": -18, - "src": "4575:7:4", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_error_$returns$__$", - "typeString": "function (bool,error) pure" - } - }, - "id": 1781, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "4575:46:4", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1782, - "nodeType": "ExpressionStatement", - "src": "4575:46:4" - }, - { - "expression": { - "arguments": [ - { - "commonType": { - "typeIdentifier": "t_uint48", - "typeString": "uint48" - }, - "id": 1787, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "expression": { - "id": 1784, - "name": "bond_", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1768, - "src": "4639:5:4", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Bond_$2043_storage_ptr", - "typeString": "struct IBondManager.Bond storage pointer" - } - }, - "id": 1785, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberLocation": "4645:21:4", - "memberName": "withdrawalRequestedAt", - "nodeType": "MemberAccess", - "referencedDeclaration": 2042, - "src": "4639:27:4", - "typeDescriptions": { - "typeIdentifier": "t_uint48", - "typeString": "uint48" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "hexValue": "30", - "id": 1786, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "4670:1:4", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "4639:32:4", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - { - "arguments": [], - "expression": { - "argumentTypes": [], - "id": 1788, - "name": "WithdrawalAlreadyRequested", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2033, - "src": "4673:26:4", - "typeDescriptions": { - "typeIdentifier": "t_function_error_pure$__$returns$_t_error_$", - "typeString": "function () pure returns (error)" - } - }, - "id": 1789, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "4673:28:4", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_error", - "typeString": "error" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_error", - "typeString": "error" - } - ], - "id": 1783, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - -18, - -18, - -18 - ], - "referencedDeclaration": -18, - "src": "4631:7:4", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_error_$returns$__$", - "typeString": "function (bool,error) pure" - } - }, - "id": 1790, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "4631:71:4", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1791, - "nodeType": "ExpressionStatement", - "src": "4631:71:4" - }, - { - "expression": { - "id": 1800, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "expression": { - "id": 1792, - "name": "bond_", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1768, - "src": "4713:5:4", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Bond_$2043_storage_ptr", - "typeString": "struct IBondManager.Bond storage pointer" - } - }, - "id": 1794, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "memberLocation": "4719:21:4", - "memberName": "withdrawalRequestedAt", - "nodeType": "MemberAccess", - "referencedDeclaration": 2042, - "src": "4713:27:4", - "typeDescriptions": { - "typeIdentifier": "t_uint48", - "typeString": "uint48" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "arguments": [ - { - "expression": { - "id": 1797, - "name": "block", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -4, - "src": "4750:5:4", - "typeDescriptions": { - "typeIdentifier": "t_magic_block", - "typeString": "block" - } - }, - "id": 1798, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "4756:9:4", - "memberName": "timestamp", - "nodeType": "MemberAccess", - "src": "4750:15:4", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 1796, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "4743:6:4", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_uint48_$", - "typeString": "type(uint48)" - }, - "typeName": { - "id": 1795, - "name": "uint48", - "nodeType": "ElementaryTypeName", - "src": "4743:6:4", - "typeDescriptions": {} - } - }, - "id": 1799, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "4743:23:4", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint48", - "typeString": "uint48" - } - }, - "src": "4713:53:4", - "typeDescriptions": { - "typeIdentifier": "t_uint48", - "typeString": "uint48" - } - }, - "id": 1801, - "nodeType": "ExpressionStatement", - "src": "4713:53:4" - }, - { - "eventCall": { - "arguments": [ - { - "expression": { - "id": 1803, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -15, - "src": "4801:3:4", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 1804, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "4805:6:4", - "memberName": "sender", - "nodeType": "MemberAccess", - "src": "4801:10:4", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 1808, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "expression": { - "id": 1805, - "name": "block", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -4, - "src": "4813:5:4", - "typeDescriptions": { - "typeIdentifier": "t_magic_block", - "typeString": "block" - } - }, - "id": 1806, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "4819:9:4", - "memberName": "timestamp", - "nodeType": "MemberAccess", - "src": "4813:15:4", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "+", - "rightExpression": { - "id": 1807, - "name": "withdrawalDelay", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1536, - "src": "4831:15:4", - "typeDescriptions": { - "typeIdentifier": "t_uint48", - "typeString": "uint48" - } - }, - "src": "4813:33:4", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 1802, - "name": "WithdrawalRequested", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2087, - "src": "4781:19:4", - "typeDescriptions": { - "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$returns$__$", - "typeString": "function (address,uint256)" - } - }, - "id": 1809, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "4781:66:4", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1810, - "nodeType": "EmitStatement", - "src": "4776:71:4" - } - ] - }, - "baseFunctions": [ - 2154 - ], - "documentation": { - "id": 1761, - "nodeType": "StructuredDocumentation", - "src": "4434:28:4", - "text": "@inheritdoc IBondManager" - }, - "functionSelector": "dbaf2145", - "implemented": true, - "kind": "function", - "modifiers": [ - { - "id": 1764, - "kind": "modifierInvocation", - "modifierName": { - "id": 1763, - "name": "nonReentrant", - "nameLocations": [ - "4505:12:4" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 4382, - "src": "4505:12:4" - }, - "nodeType": "ModifierInvocation", - "src": "4505:12:4" - } - ], - "name": "requestWithdrawal", - "nameLocation": "4476:17:4", - "parameters": { - "id": 1762, - "nodeType": "ParameterList", - "parameters": [], - "src": "4493:2:4" - }, - "returnParameters": { - "id": 1765, - "nodeType": "ParameterList", - "parameters": [], - "src": "4518:0:4" - }, - "scope": 2034, - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "external" - }, - { - "id": 1847, - "nodeType": "FunctionDefinition", - "src": "4893:267:4", - "nodes": [], - "body": { - "id": 1846, - "nodeType": "Block", - "src": "4943:217:4", - "nodes": [], - "statements": [ - { - "assignments": [ - 1820 - ], - "declarations": [ - { - "constant": false, - "id": 1820, - "mutability": "mutable", - "name": "bond_", - "nameLocation": "4966:5:4", - "nodeType": "VariableDeclaration", - "scope": 1846, - "src": "4953:18:4", - "stateVariable": false, - "storageLocation": "storage", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Bond_$2043_storage_ptr", - "typeString": "struct IBondManager.Bond" - }, - "typeName": { - "id": 1819, - "nodeType": "UserDefinedTypeName", - "pathNode": { - "id": 1818, - "name": "Bond", - "nameLocations": [ - "4953:4:4" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 2043, - "src": "4953:4:4" - }, - "referencedDeclaration": 2043, - "src": "4953:4:4", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Bond_$2043_storage_ptr", - "typeString": "struct IBondManager.Bond" - } - }, - "visibility": "internal" - } - ], - "id": 1825, - "initialValue": { - "baseExpression": { - "id": 1821, - "name": "bond", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1542, - "src": "4974:4:4", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Bond_$2043_storage_$", - "typeString": "mapping(address => struct IBondManager.Bond storage ref)" - } - }, - "id": 1824, - "indexExpression": { - "expression": { - "id": 1822, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -15, - "src": "4979:3:4", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 1823, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "4983:6:4", - "memberName": "sender", - "nodeType": "MemberAccess", - "src": "4979:10:4", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "4974:16:4", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Bond_$2043_storage", - "typeString": "struct IBondManager.Bond storage ref" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "4953:37:4" - }, - { - "expression": { - "arguments": [ - { - "commonType": { - "typeIdentifier": "t_uint48", - "typeString": "uint48" - }, - "id": 1830, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "expression": { - "id": 1827, - "name": "bond_", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1820, - "src": "5008:5:4", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Bond_$2043_storage_ptr", - "typeString": "struct IBondManager.Bond storage pointer" - } - }, - "id": 1828, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberLocation": "5014:21:4", - "memberName": "withdrawalRequestedAt", - "nodeType": "MemberAccess", - "referencedDeclaration": 2042, - "src": "5008:27:4", - "typeDescriptions": { - "typeIdentifier": "t_uint48", - "typeString": "uint48" - } - }, - "nodeType": "BinaryOperation", - "operator": ">", - "rightExpression": { - "hexValue": "30", - "id": 1829, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "5038:1:4", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "5008:31:4", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - { - "arguments": [], - "expression": { - "argumentTypes": [], - "id": 1831, - "name": "NoWithdrawalRequested", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2031, - "src": "5041:21:4", - "typeDescriptions": { - "typeIdentifier": "t_function_error_pure$__$returns$_t_error_$", - "typeString": "function () pure returns (error)" - } - }, - "id": 1832, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "5041:23:4", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_error", - "typeString": "error" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_error", - "typeString": "error" - } - ], - "id": 1826, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - -18, - -18, - -18 - ], - "referencedDeclaration": -18, - "src": "5000:7:4", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_error_$returns$__$", - "typeString": "function (bool,error) pure" - } - }, - "id": 1833, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "5000:65:4", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1834, - "nodeType": "ExpressionStatement", - "src": "5000:65:4" - }, - { - "expression": { - "id": 1839, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "expression": { - "id": 1835, - "name": "bond_", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1820, - "src": "5076:5:4", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Bond_$2043_storage_ptr", - "typeString": "struct IBondManager.Bond storage pointer" - } - }, - "id": 1837, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "memberLocation": "5082:21:4", - "memberName": "withdrawalRequestedAt", - "nodeType": "MemberAccess", - "referencedDeclaration": 2042, - "src": "5076:27:4", - "typeDescriptions": { - "typeIdentifier": "t_uint48", - "typeString": "uint48" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "hexValue": "30", - "id": 1838, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "5106:1:4", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "5076:31:4", - "typeDescriptions": { - "typeIdentifier": "t_uint48", - "typeString": "uint48" - } - }, - "id": 1840, - "nodeType": "ExpressionStatement", - "src": "5076:31:4" - }, - { - "eventCall": { - "arguments": [ - { - "expression": { - "id": 1842, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -15, - "src": "5142:3:4", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 1843, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "5146:6:4", - "memberName": "sender", - "nodeType": "MemberAccess", - "src": "5142:10:4", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": 1841, - "name": "WithdrawalCancelled", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "5122:19:4", - "typeDescriptions": { - "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$", - "typeString": "function (address)" - } - }, - "id": 1844, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "5122:31:4", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1845, - "nodeType": "EmitStatement", - "src": "5117:36:4" - } - ] - }, - "baseFunctions": [ - 2158 - ], - "documentation": { - "id": 1813, - "nodeType": "StructuredDocumentation", - "src": "4860:28:4", - "text": "@inheritdoc IBondManager" - }, - "functionSelector": "22611280", - "implemented": true, - "kind": "function", - "modifiers": [ - { - "id": 1816, - "kind": "modifierInvocation", - "modifierName": { - "id": 1815, - "name": "nonReentrant", - "nameLocations": [ - "4930:12:4" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 4382, - "src": "4930:12:4" - }, - "nodeType": "ModifierInvocation", - "src": "4930:12:4" - } - ], - "name": "cancelWithdrawal", - "nameLocation": "4902:16:4", - "parameters": { - "id": 1814, - "nodeType": "ParameterList", - "parameters": [], - "src": "4918:2:4" - }, - "returnParameters": { - "id": 1817, - "nodeType": "ParameterList", - "parameters": [], - "src": "4943:0:4" - }, - "scope": 2034, - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "external" - }, - { - "id": 1898, - "nodeType": "FunctionDefinition", - "src": "5199:534:4", - "nodes": [], - "body": { - "id": 1897, - "nodeType": "Block", - "src": "5269:464:4", - "nodes": [], - "statements": [ - { - "assignments": [ - 1859 - ], - "declarations": [ - { - "constant": false, - "id": 1859, - "mutability": "mutable", - "name": "bond_", - "nameLocation": "5292:5:4", - "nodeType": "VariableDeclaration", - "scope": 1897, - "src": "5279:18:4", - "stateVariable": false, - "storageLocation": "storage", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Bond_$2043_storage_ptr", - "typeString": "struct IBondManager.Bond" - }, - "typeName": { - "id": 1858, - "nodeType": "UserDefinedTypeName", - "pathNode": { - "id": 1857, - "name": "Bond", - "nameLocations": [ - "5279:4:4" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 2043, - "src": "5279:4:4" - }, - "referencedDeclaration": 2043, - "src": "5279:4:4", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Bond_$2043_storage_ptr", - "typeString": "struct IBondManager.Bond" - } - }, - "visibility": "internal" - } - ], - "id": 1864, - "initialValue": { - "baseExpression": { - "id": 1860, - "name": "bond", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1542, - "src": "5300:4:4", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Bond_$2043_storage_$", - "typeString": "mapping(address => struct IBondManager.Bond storage ref)" - } - }, - "id": 1863, - "indexExpression": { - "expression": { - "id": 1861, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -15, - "src": "5305:3:4", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 1862, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "5309:6:4", - "memberName": "sender", - "nodeType": "MemberAccess", - "src": "5305:10:4", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "5300:16:4", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Bond_$2043_storage", - "typeString": "struct IBondManager.Bond storage ref" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "5279:37:4" - }, - { - "condition": { - "commonType": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "id": 1876, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "commonType": { - "typeIdentifier": "t_uint48", - "typeString": "uint48" - }, - "id": 1868, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "expression": { - "id": 1865, - "name": "bond_", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1859, - "src": "5344:5:4", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Bond_$2043_storage_ptr", - "typeString": "struct IBondManager.Bond storage pointer" - } - }, - "id": 1866, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberLocation": "5350:21:4", - "memberName": "withdrawalRequestedAt", - "nodeType": "MemberAccess", - "referencedDeclaration": 2042, - "src": "5344:27:4", - "typeDescriptions": { - "typeIdentifier": "t_uint48", - "typeString": "uint48" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "hexValue": "30", - "id": 1867, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "5375:1:4", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "5344:32:4", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "BinaryOperation", - "operator": "||", - "rightExpression": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 1875, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "expression": { - "id": 1869, - "name": "block", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -4, - "src": "5396:5:4", - "typeDescriptions": { - "typeIdentifier": "t_magic_block", - "typeString": "block" - } - }, - "id": 1870, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "5402:9:4", - "memberName": "timestamp", - "nodeType": "MemberAccess", - "src": "5396:15:4", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "<", - "rightExpression": { - "commonType": { - "typeIdentifier": "t_uint48", - "typeString": "uint48" - }, - "id": 1874, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "expression": { - "id": 1871, - "name": "bond_", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1859, - "src": "5414:5:4", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Bond_$2043_storage_ptr", - "typeString": "struct IBondManager.Bond storage pointer" - } - }, - "id": 1872, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberLocation": "5420:21:4", - "memberName": "withdrawalRequestedAt", - "nodeType": "MemberAccess", - "referencedDeclaration": 2042, - "src": "5414:27:4", - "typeDescriptions": { - "typeIdentifier": "t_uint48", - "typeString": "uint48" - } - }, - "nodeType": "BinaryOperation", - "operator": "+", - "rightExpression": { - "id": 1873, - "name": "withdrawalDelay", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1536, - "src": "5444:15:4", - "typeDescriptions": { - "typeIdentifier": "t_uint48", - "typeString": "uint48" - } - }, - "src": "5414:45:4", - "typeDescriptions": { - "typeIdentifier": "t_uint48", - "typeString": "uint48" - } - }, - "src": "5396:63:4", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "src": "5344:115:4", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 1889, - "nodeType": "IfStatement", - "src": "5327:354:4", - "trueBody": { - "id": 1888, - "nodeType": "Block", - "src": "5470:211:4", - "statements": [ - { - "expression": { - "arguments": [ - { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 1883, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 1881, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "expression": { - "id": 1878, - "name": "bond_", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1859, - "src": "5612:5:4", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Bond_$2043_storage_ptr", - "typeString": "struct IBondManager.Bond storage pointer" - } - }, - "id": 1879, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberLocation": "5618:7:4", - "memberName": "balance", - "nodeType": "MemberAccess", - "referencedDeclaration": 2040, - "src": "5612:13:4", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "-", - "rightExpression": { - "id": 1880, - "name": "_amount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1852, - "src": "5628:7:4", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "5612:23:4", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": ">=", - "rightExpression": { - "id": 1882, - "name": "minBond", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1533, - "src": "5639:7:4", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "5612:34:4", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - { - "arguments": [], - "expression": { - "argumentTypes": [], - "id": 1884, - "name": "MustMaintainMinBond", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2027, - "src": "5648:19:4", - "typeDescriptions": { - "typeIdentifier": "t_function_error_pure$__$returns$_t_error_$", - "typeString": "function () pure returns (error)" - } - }, - "id": 1885, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "5648:21:4", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_error", - "typeString": "error" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_error", - "typeString": "error" - } - ], - "id": 1877, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - -18, - -18, - -18 - ], - "referencedDeclaration": -18, - "src": "5604:7:4", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_error_$returns$__$", - "typeString": "function (bool,error) pure" - } - }, - "id": 1886, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "5604:66:4", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1887, - "nodeType": "ExpressionStatement", - "src": "5604:66:4" - } - ] - } - }, - { - "expression": { - "arguments": [ - { - "expression": { - "id": 1891, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -15, - "src": "5701:3:4", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 1892, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "5705:6:4", - "memberName": "sender", - "nodeType": "MemberAccess", - "src": "5701:10:4", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "id": 1893, - "name": "_to", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1850, - "src": "5713:3:4", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "id": 1894, - "name": "_amount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1852, - "src": "5718:7:4", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 1890, - "name": "_withdraw", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2007, - "src": "5691:9:4", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", - "typeString": "function (address,address,uint256)" - } - }, - "id": 1895, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "5691:35:4", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1896, - "nodeType": "ExpressionStatement", - "src": "5691:35:4" - } - ] - }, - "baseFunctions": [ - 2140 - ], - "documentation": { - "id": 1848, - "nodeType": "StructuredDocumentation", - "src": "5166:28:4", - "text": "@inheritdoc IBondManager" - }, - "functionSelector": "f3fef3a3", - "implemented": true, - "kind": "function", - "modifiers": [ - { - "id": 1855, - "kind": "modifierInvocation", - "modifierName": { - "id": 1854, - "name": "nonReentrant", - "nameLocations": [ - "5256:12:4" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 4382, - "src": "5256:12:4" - }, - "nodeType": "ModifierInvocation", - "src": "5256:12:4" - } - ], - "name": "withdraw", - "nameLocation": "5208:8:4", - "parameters": { - "id": 1853, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1850, - "mutability": "mutable", - "name": "_to", - "nameLocation": "5225:3:4", - "nodeType": "VariableDeclaration", - "scope": 1898, - "src": "5217:11:4", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 1849, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "5217:7:4", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 1852, - "mutability": "mutable", - "name": "_amount", - "nameLocation": "5238:7:4", - "nodeType": "VariableDeclaration", - "scope": 1898, - "src": "5230:15:4", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1851, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "5230:7:4", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "5216:30:4" - }, - "returnParameters": { - "id": 1856, - "nodeType": "ParameterList", - "parameters": [], - "src": "5269:0:4" - }, - "scope": 2034, - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "external" - }, - { - "id": 1947, - "nodeType": "FunctionDefinition", - "src": "6144:411:4", - "nodes": [], - "body": { - "id": 1946, - "nodeType": "Block", - "src": "6279:276:4", - "nodes": [], - "statements": [ - { - "assignments": [ - 1910 - ], - "declarations": [ - { - "constant": false, - "id": 1910, - "mutability": "mutable", - "name": "bond_", - "nameLocation": "6302:5:4", - "nodeType": "VariableDeclaration", - "scope": 1946, - "src": "6289:18:4", - "stateVariable": false, - "storageLocation": "storage", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Bond_$2043_storage_ptr", - "typeString": "struct IBondManager.Bond" - }, - "typeName": { - "id": 1909, - "nodeType": "UserDefinedTypeName", - "pathNode": { - "id": 1908, - "name": "Bond", - "nameLocations": [ - "6289:4:4" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 2043, - "src": "6289:4:4" - }, - "referencedDeclaration": 2043, - "src": "6289:4:4", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Bond_$2043_storage_ptr", - "typeString": "struct IBondManager.Bond" - } - }, - "visibility": "internal" - } - ], - "id": 1914, - "initialValue": { - "baseExpression": { - "id": 1911, - "name": "bond", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1542, - "src": "6310:4:4", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Bond_$2043_storage_$", - "typeString": "mapping(address => struct IBondManager.Bond storage ref)" - } - }, - "id": 1913, - "indexExpression": { - "id": 1912, - "name": "_address", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1901, - "src": "6315:8:4", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "6310:14:4", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Bond_$2043_storage", - "typeString": "struct IBondManager.Bond storage ref" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "6289:35:4" - }, - { - "condition": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 1918, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "expression": { - "id": 1915, - "name": "bond_", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1910, - "src": "6339:5:4", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Bond_$2043_storage_ptr", - "typeString": "struct IBondManager.Bond storage pointer" - } - }, - "id": 1916, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberLocation": "6345:7:4", - "memberName": "balance", - "nodeType": "MemberAccess", - "referencedDeclaration": 2040, - "src": "6339:13:4", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "<=", - "rightExpression": { - "id": 1917, - "name": "_bond", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1903, - "src": "6356:5:4", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "6339:22:4", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": { - "id": 1944, - "nodeType": "Block", - "src": "6453:96:4", - "statements": [ - { - "expression": { - "id": 1933, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 1931, - "name": "bondDebited_", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1906, - "src": "6467:12:4", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "id": 1932, - "name": "_bond", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1903, - "src": "6482:5:4", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "6467:20:4", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 1934, - "nodeType": "ExpressionStatement", - "src": "6467:20:4" - }, - { - "expression": { - "id": 1942, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "expression": { - "id": 1935, - "name": "bond_", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1910, - "src": "6501:5:4", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Bond_$2043_storage_ptr", - "typeString": "struct IBondManager.Bond storage pointer" - } - }, - "id": 1937, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "memberLocation": "6507:7:4", - "memberName": "balance", - "nodeType": "MemberAccess", - "referencedDeclaration": 2040, - "src": "6501:13:4", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 1941, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "expression": { - "id": 1938, - "name": "bond_", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1910, - "src": "6517:5:4", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Bond_$2043_storage_ptr", - "typeString": "struct IBondManager.Bond storage pointer" - } - }, - "id": 1939, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberLocation": "6523:7:4", - "memberName": "balance", - "nodeType": "MemberAccess", - "referencedDeclaration": 2040, - "src": "6517:13:4", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "-", - "rightExpression": { - "id": 1940, - "name": "_bond", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1903, - "src": "6533:5:4", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "6517:21:4", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "6501:37:4", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 1943, - "nodeType": "ExpressionStatement", - "src": "6501:37:4" - } - ] - }, - "id": 1945, - "nodeType": "IfStatement", - "src": "6335:214:4", - "trueBody": { - "id": 1930, - "nodeType": "Block", - "src": "6363:84:4", - "statements": [ - { - "expression": { - "id": 1922, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 1919, - "name": "bondDebited_", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1906, - "src": "6377:12:4", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "expression": { - "id": 1920, - "name": "bond_", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1910, - "src": "6392:5:4", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Bond_$2043_storage_ptr", - "typeString": "struct IBondManager.Bond storage pointer" - } - }, - "id": 1921, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberLocation": "6398:7:4", - "memberName": "balance", - "nodeType": "MemberAccess", - "referencedDeclaration": 2040, - "src": "6392:13:4", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "6377:28:4", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 1923, - "nodeType": "ExpressionStatement", - "src": "6377:28:4" - }, - { - "expression": { - "id": 1928, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "expression": { - "id": 1924, - "name": "bond_", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1910, - "src": "6419:5:4", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Bond_$2043_storage_ptr", - "typeString": "struct IBondManager.Bond storage pointer" - } - }, - "id": 1926, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "memberLocation": "6425:7:4", - "memberName": "balance", - "nodeType": "MemberAccess", - "referencedDeclaration": 2040, - "src": "6419:13:4", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "hexValue": "30", - "id": 1927, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "6435:1:4", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "6419:17:4", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 1929, - "nodeType": "ExpressionStatement", - "src": "6419:17:4" - } - ] - } - } - ] - }, - "documentation": { - "id": 1899, - "nodeType": "StructuredDocumentation", - "src": "5908:231:4", - "text": "@dev Internal implementation for debiting a bond\n @param _address The address to debit the bond from\n @param _bond The amount of bond to debit in gwei\n @return bondDebited_ The actual amount debited in gwei" - }, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "_debitBond", - "nameLocation": "6153:10:4", - "parameters": { - "id": 1904, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1901, - "mutability": "mutable", - "name": "_address", - "nameLocation": "6181:8:4", - "nodeType": "VariableDeclaration", - "scope": 1947, - "src": "6173:16:4", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 1900, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "6173:7:4", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 1903, - "mutability": "mutable", - "name": "_bond", - "nameLocation": "6207:5:4", - "nodeType": "VariableDeclaration", - "scope": 1947, - "src": "6199:13:4", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1902, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "6199:7:4", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "6163:55:4" - }, - "returnParameters": { - "id": 1907, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1906, - "mutability": "mutable", - "name": "bondDebited_", - "nameLocation": "6261:12:4", - "nodeType": "VariableDeclaration", - "scope": 1947, - "src": "6253:20:4", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1905, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "6253:7:4", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "6252:22:4" - }, - "scope": 2034, - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "internal" - }, - { - "id": 1977, - "nodeType": "FunctionDefinition", - "src": "6735:206:4", - "nodes": [], - "body": { - "id": 1976, - "nodeType": "Block", - "src": "6798:143:4", - "nodes": [], - "statements": [ - { - "assignments": [ - 1957 - ], - "declarations": [ - { - "constant": false, - "id": 1957, - "mutability": "mutable", - "name": "bond_", - "nameLocation": "6821:5:4", - "nodeType": "VariableDeclaration", - "scope": 1976, - "src": "6808:18:4", - "stateVariable": false, - "storageLocation": "storage", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Bond_$2043_storage_ptr", - "typeString": "struct IBondManager.Bond" - }, - "typeName": { - "id": 1956, - "nodeType": "UserDefinedTypeName", - "pathNode": { - "id": 1955, - "name": "Bond", - "nameLocations": [ - "6808:4:4" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 2043, - "src": "6808:4:4" - }, - "referencedDeclaration": 2043, - "src": "6808:4:4", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Bond_$2043_storage_ptr", - "typeString": "struct IBondManager.Bond" - } - }, - "visibility": "internal" - } - ], - "id": 1961, - "initialValue": { - "baseExpression": { - "id": 1958, - "name": "bond", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1542, - "src": "6829:4:4", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Bond_$2043_storage_$", - "typeString": "mapping(address => struct IBondManager.Bond storage ref)" - } - }, - "id": 1960, - "indexExpression": { - "id": 1959, - "name": "_address", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1950, - "src": "6834:8:4", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "6829:14:4", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Bond_$2043_storage", - "typeString": "struct IBondManager.Bond storage ref" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "6808:35:4" - }, - { - "expression": { - "id": 1969, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "expression": { - "id": 1962, - "name": "bond_", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1957, - "src": "6853:5:4", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Bond_$2043_storage_ptr", - "typeString": "struct IBondManager.Bond storage pointer" - } - }, - "id": 1964, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "memberLocation": "6859:7:4", - "memberName": "balance", - "nodeType": "MemberAccess", - "referencedDeclaration": 2040, - "src": "6853:13:4", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 1968, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "expression": { - "id": 1965, - "name": "bond_", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1957, - "src": "6869:5:4", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Bond_$2043_storage_ptr", - "typeString": "struct IBondManager.Bond storage pointer" - } - }, - "id": 1966, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberLocation": "6875:7:4", - "memberName": "balance", - "nodeType": "MemberAccess", - "referencedDeclaration": 2040, - "src": "6869:13:4", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "+", - "rightExpression": { - "id": 1967, - "name": "_bond", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1952, - "src": "6885:5:4", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "6869:21:4", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "6853:37:4", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 1970, - "nodeType": "ExpressionStatement", - "src": "6853:37:4" - }, - { - "eventCall": { - "arguments": [ - { - "id": 1972, - "name": "_address", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1950, - "src": "6918:8:4", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "id": 1973, - "name": "_bond", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1952, - "src": "6928:5:4", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 1971, - "name": "BondCredited", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2057, - "src": "6905:12:4", - "typeDescriptions": { - "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$returns$__$", - "typeString": "function (address,uint256)" - } - }, - "id": 1974, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "6905:29:4", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1975, - "nodeType": "EmitStatement", - "src": "6900:34:4" - } - ] - }, - "documentation": { - "id": 1948, - "nodeType": "StructuredDocumentation", - "src": "6561:169:4", - "text": "@dev Internal implementation for crediting a bond\n @param _address The address to credit the bond to\n @param _bond The amount of bond to credit in gwei" - }, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "_creditBond", - "nameLocation": "6744:11:4", - "parameters": { - "id": 1953, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1950, - "mutability": "mutable", - "name": "_address", - "nameLocation": "6764:8:4", - "nodeType": "VariableDeclaration", - "scope": 1977, - "src": "6756:16:4", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 1949, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "6756:7:4", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 1952, - "mutability": "mutable", - "name": "_bond", - "nameLocation": "6782:5:4", - "nodeType": "VariableDeclaration", - "scope": 1977, - "src": "6774:13:4", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1951, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "6774:7:4", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "6755:33:4" - }, - "returnParameters": { - "id": 1954, - "nodeType": "ParameterList", - "parameters": [], - "src": "6798:0:4" - }, - "scope": 2034, - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "internal" - }, - { - "id": 2007, - "nodeType": "FunctionDefinition", - "src": "7183:224:4", - "nodes": [], - "body": { - "id": 2006, - "nodeType": "Block", - "src": "7256:151:4", - "nodes": [], - "statements": [ - { - "assignments": [ - 1988 - ], - "declarations": [ - { - "constant": false, - "id": 1988, - "mutability": "mutable", - "name": "debited", - "nameLocation": "7274:7:4", - "nodeType": "VariableDeclaration", - "scope": 2006, - "src": "7266:15:4", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1987, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "7266:7:4", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "id": 1993, - "initialValue": { - "arguments": [ - { - "id": 1990, - "name": "_from", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1980, - "src": "7295:5:4", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "id": 1991, - "name": "_amount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1984, - "src": "7302:7:4", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 1989, - "name": "_debitBond", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1947, - "src": "7284:10:4", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (address,uint256) returns (uint256)" - } - }, - "id": 1992, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "7284:26:4", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "7266:44:4" - }, - { - "expression": { - "arguments": [ - { - "id": 1997, - "name": "_to", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1982, - "src": "7343:3:4", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "id": 1998, - "name": "debited", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1988, - "src": "7348:7:4", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "expression": { - "id": 1994, - "name": "bondToken", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1530, - "src": "7320:9:4", - "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$21865", - "typeString": "contract IERC20" - } - }, - "id": 1996, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "7330:12:4", - "memberName": "safeTransfer", - "nodeType": "MemberAccess", - "referencedDeclaration": 21959, - "src": "7320:22:4", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$21865_$_t_address_$_t_uint256_$returns$__$attached_to$_t_contract$_IERC20_$21865_$", - "typeString": "function (contract IERC20,address,uint256)" - } - }, - "id": 1999, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "7320:36:4", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 2000, - "nodeType": "ExpressionStatement", - "src": "7320:36:4" - }, - { - "eventCall": { - "arguments": [ - { - "id": 2002, - "name": "_from", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1980, - "src": "7385:5:4", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "id": 2003, - "name": "debited", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1988, - "src": "7392:7:4", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 2001, - "name": "BondWithdrawn", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2080, - "src": "7371:13:4", - "typeDescriptions": { - "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$returns$__$", - "typeString": "function (address,uint256)" - } - }, - "id": 2004, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "7371:29:4", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 2005, - "nodeType": "EmitStatement", - "src": "7366:34:4" - } - ] - }, - "documentation": { - "id": 1978, - "nodeType": "StructuredDocumentation", - "src": "6947:231:4", - "text": "@dev Internal implementation for withdrawing funds from a user's bond balance\n @param _from The address whose balance will be reduced\n @param _to The recipient address\n @param _amount The amount to withdraw" - }, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "_withdraw", - "nameLocation": "7192:9:4", - "parameters": { - "id": 1985, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1980, - "mutability": "mutable", - "name": "_from", - "nameLocation": "7210:5:4", - "nodeType": "VariableDeclaration", - "scope": 2007, - "src": "7202:13:4", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 1979, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "7202:7:4", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 1982, - "mutability": "mutable", - "name": "_to", - "nameLocation": "7225:3:4", - "nodeType": "VariableDeclaration", - "scope": 2007, - "src": "7217:11:4", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 1981, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "7217:7:4", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 1984, - "mutability": "mutable", - "name": "_amount", - "nameLocation": "7238:7:4", - "nodeType": "VariableDeclaration", - "scope": 2007, - "src": "7230:15:4", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1983, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "7230:7:4", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "7201:45:4" - }, - "returnParameters": { - "id": 1986, - "nodeType": "ParameterList", - "parameters": [], - "src": "7256:0:4" - }, - "scope": 2034, - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "internal" - }, - { - "id": 2021, - "nodeType": "FunctionDefinition", - "src": "7591:121:4", - "nodes": [], - "body": { - "id": 2020, - "nodeType": "Block", - "src": "7666:46:4", - "nodes": [], - "statements": [ - { - "expression": { - "expression": { - "baseExpression": { - "id": 2015, - "name": "bond", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1542, - "src": "7683:4:4", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Bond_$2043_storage_$", - "typeString": "mapping(address => struct IBondManager.Bond storage ref)" - } - }, - "id": 2017, - "indexExpression": { - "id": 2016, - "name": "_address", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2010, - "src": "7688:8:4", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "7683:14:4", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Bond_$2043_storage", - "typeString": "struct IBondManager.Bond storage ref" - } - }, - "id": 2018, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberLocation": "7698:7:4", - "memberName": "balance", - "nodeType": "MemberAccess", - "referencedDeclaration": 2040, - "src": "7683:22:4", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "functionReturnParameters": 2014, - "id": 2019, - "nodeType": "Return", - "src": "7676:29:4" - } - ] - }, - "documentation": { - "id": 2008, - "nodeType": "StructuredDocumentation", - "src": "7413:173:4", - "text": "@dev Internal implementation for getting the bond balance\n @param _address The address to get the bond balance for\n @return The bond balance of the address" - }, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "_getBondBalance", - "nameLocation": "7600:15:4", - "parameters": { - "id": 2011, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 2010, - "mutability": "mutable", - "name": "_address", - "nameLocation": "7624:8:4", - "nodeType": "VariableDeclaration", - "scope": 2021, - "src": "7616:16:4", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 2009, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "7616:7:4", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - } - ], - "src": "7615:18:4" - }, - "returnParameters": { - "id": 2014, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 2013, - "mutability": "mutable", - "name": "", - "nameLocation": "-1:-1:-1", - "nodeType": "VariableDeclaration", - "scope": 2021, - "src": "7657:7:4", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 2012, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "7657:7:4", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "7656:9:4" - }, - "scope": 2034, - "stateMutability": "view", - "virtual": false, - "visibility": "internal" - }, - { - "id": 2023, - "nodeType": "ErrorDefinition", - "src": "7875:25:4", - "nodes": [], - "errorSelector": "e92c469f", - "name": "InsufficientBond", - "nameLocation": "7881:16:4", - "parameters": { - "id": 2022, - "nodeType": "ParameterList", - "parameters": [], - "src": "7897:2:4" - } - }, - { - "id": 2025, - "nodeType": "ErrorDefinition", - "src": "7905:25:4", - "nodes": [], - "errorSelector": "9c8d2cd2", - "name": "InvalidRecipient", - "nameLocation": "7911:16:4", - "parameters": { - "id": 2024, - "nodeType": "ParameterList", - "parameters": [], - "src": "7927:2:4" - } - }, - { - "id": 2027, - "nodeType": "ErrorDefinition", - "src": "7935:28:4", - "nodes": [], - "errorSelector": "87da3304", - "name": "MustMaintainMinBond", - "nameLocation": "7941:19:4", - "parameters": { - "id": 2026, - "nodeType": "ParameterList", - "parameters": [], - "src": "7960:2:4" - } - }, - { - "id": 2029, - "nodeType": "ErrorDefinition", - "src": "7968:25:4", - "nodes": [], - "errorSelector": "4555262b", - "name": "NoBondToWithdraw", - "nameLocation": "7974:16:4", - "parameters": { - "id": 2028, - "nodeType": "ParameterList", - "parameters": [], - "src": "7990:2:4" - } - }, - { - "id": 2031, - "nodeType": "ErrorDefinition", - "src": "7998:30:4", - "nodes": [], - "errorSelector": "87bdc6a9", - "name": "NoWithdrawalRequested", - "nameLocation": "8004:21:4", - "parameters": { - "id": 2030, - "nodeType": "ParameterList", - "parameters": [], - "src": "8025:2:4" - } - }, - { - "id": 2033, - "nodeType": "ErrorDefinition", - "src": "8033:35:4", - "nodes": [], - "errorSelector": "fb52063b", - "name": "WithdrawalAlreadyRequested", - "nameLocation": "8039:26:4", - "parameters": { - "id": 2032, - "nodeType": "ParameterList", - "parameters": [], - "src": "8065:2:4" - } - } - ], - "abstract": false, - "baseContracts": [ - { - "baseName": { - "id": 1516, - "name": "EssentialContract", - "nameLocations": [ - "522:17:4" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 4802, - "src": "522:17:4" - }, - "id": 1517, - "nodeType": "InheritanceSpecifier", - "src": "522:17:4" - }, - { - "baseName": { - "id": 1518, - "name": "IBondManager", - "nameLocations": [ - "541:12:4" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 2159, - "src": "541:12:4" - }, - "id": 1519, - "nodeType": "InheritanceSpecifier", - "src": "541:12:4" - } - ], - "canonicalName": "BondManager", - "contractDependencies": [], - "contractKind": "contract", - "documentation": { - "id": 1515, - "nodeType": "StructuredDocumentation", - "src": "345:153:4", - "text": "@title BondManager\n @notice L1 implementation of BondManager with time-based withdrawal mechanism\n @custom:security-contact security@taiko.xyz" - }, - "fullyImplemented": true, - "linearizedBaseContracts": [ - 2034, - 2159, - 4802, - 11319, - 11452, - 16421, - 11748, - 21013, - 20512, - 20161, - 20171 - ], - "name": "BondManager", - "nameLocation": "507:11:4", - "scope": 2035, - "usedErrors": [ - 2023, - 2025, - 2027, - 2029, - 2031, - 2033, - 4337, - 4339, - 4341, - 4343, - 4345, - 4347 - ], - "usedEvents": [ - 2050, - 2057, - 2064, - 2073, - 2080, - 2087, - 2092, - 4330, - 4335, - 11230, - 11337, - 11594, - 20148, - 20155, - 20160 - ] - } - ], - "license": "MIT" - }, - "id": 4 -} \ No newline at end of file diff --git a/shasta/src/l2/bindings.rs b/shasta/src/l2/bindings.rs index 88de71de..06a78909 100644 --- a/shasta/src/l2/bindings.rs +++ b/shasta/src/l2/bindings.rs @@ -11,14 +11,7 @@ sol!( sol!( #[allow(missing_docs)] - #[sol(rpc)] - Bridge, - "src/l2/abi/Bridge.json" -); - -sol!( - #[allow(missing_docs)] - #[sol(rpc)] - SurgeInbox, - "src/l2/abi/SurgeInbox.json" + #[sol(rpc, all_derives)] + Anchor, + "src/l2/abi/Anchor.json" ); diff --git a/shasta/src/l2/execution_layer.rs b/shasta/src/l2/execution_layer.rs index dc731d09..597ca44f 100644 --- a/shasta/src/l2/execution_layer.rs +++ b/shasta/src/l2/execution_layer.rs @@ -1,30 +1,43 @@ +use crate::l2::bindings::{Anchor, ICheckpointStore::Checkpoint}; +use crate::shared_abi::bindings::{ + Bridge::{self, MessageSent}, + IBridge::Message, + SignalSent, +}; use alloy::{ consensus::{ BlockHeader, SignableTransaction, Transaction as AnchorTransaction, TxEnvelope, transaction::Recovered, }, - primitives::{Address, B256}, + primitives::{Address, B256, Bytes, FixedBytes}, providers::{DynProvider, Provider}, rpc::types::Transaction, - signers::Signature, + signers::{Signature, Signer as AlloySigner}, + sol_types::SolEvent, }; use anyhow::Error; -use common::crypto::{GOLDEN_TOUCH_ADDRESS, GOLDEN_TOUCH_PRIVATE_KEY}; use common::shared::{ alloy_tools, execution_layer::ExecutionLayer as ExecutionLayerCommon, l2_slot_info_v2::L2SlotInfoV2, }; +use common::{ + crypto::{GOLDEN_TOUCH_ADDRESS, GOLDEN_TOUCH_PRIVATE_KEY}, + signer::Signer, +}; use pacaya::l2::config::TaikoConfig; -use taiko_bindings::anchor::{Anchor, ICheckpointStore::Checkpoint}; +use serde_json::Value; +use std::sync::Arc; use tracing::{debug, info, warn}; -use serde_json::Value; pub struct L2ExecutionLayer { common: ExecutionLayerCommon, - provider: DynProvider, + pub provider: DynProvider, shasta_anchor: Anchor::AnchorInstance, - chain_id: u64, + pub bridge: Bridge::BridgeInstance, + pub signal_service: Address, + pub chain_id: u64, pub config: TaikoConfig, + l2_call_signer: Arc, } impl L2ExecutionLayer { @@ -40,13 +53,28 @@ impl L2ExecutionLayer { let shasta_anchor = Anchor::new(taiko_config.taiko_anchor_address, provider.clone()); + // Surge: Store the bridge for processing L2 calls + let chain_id_hex = format!("{:x}", chain_id); + let zeros_needed = 38usize.saturating_sub(chain_id_hex.len()); + let bridge_address: Address = + format!("0x{}{}01", chain_id_hex, "0".repeat(zeros_needed)).parse()?; + let bridge = Bridge::new(bridge_address, provider.clone()); + + // Signal service address (same format as bridge, but ending in 05) + let signal_service: Address = + format!("0x{}{}05", chain_id_hex, "0".repeat(zeros_needed)).parse()?; + let common = ExecutionLayerCommon::new(provider.clone()).await?; + let l2_call_signer = taiko_config.signer.clone(); Ok(Self { common, provider, shasta_anchor, + bridge, + signal_service, chain_id, + l2_call_signer, config: taiko_config, }) } @@ -58,7 +86,7 @@ impl L2ExecutionLayer { pub async fn construct_anchor_tx( &self, l2_slot_info: &L2SlotInfoV2, - anchor_block_params: Checkpoint, + anchor_block_params: (Checkpoint, Vec>), ) -> Result { debug!( "Constructing anchor transaction for block number: {}", @@ -76,7 +104,7 @@ impl L2ExecutionLayer { let call_builder = self .shasta_anchor - .anchorV4(anchor_block_params) + .anchorV4WithSignalSlots(anchor_block_params.0, anchor_block_params.1) .gas(1_000_000) // value expected by Taiko .max_fee_per_gas(u128::from(l2_slot_info.base_fee())) // value expected by Taiko .max_priority_fee_per_gas(0) // value expected by Taiko @@ -248,3 +276,145 @@ impl L2ExecutionLayer { Ok(tx_data._checkpoint) } } + +// Surge: L2 EL ops for Bridge Handler + +pub trait L2BridgeHandlerOps { + // Surge: Builds the L2 call expected to be initiated an L1 contract via the Bridge + // This is initially sent as a user op to the bridge handler RPC + async fn construct_l2_call_tx(&self, message: Message) -> Result; + + // Surge: This can be made to retrieve multiple signal slots + async fn find_message_and_signal_slot( + &self, + block_id: u64, + ) -> Result)>, anyhow::Error>; +} + +impl L2BridgeHandlerOps for L2ExecutionLayer { + async fn construct_l2_call_tx(&self, message: Message) -> Result { + use alloy::signers::local::PrivateKeySigner; + use std::str::FromStr; + + debug!("Constructing bridge call transaction for L2 call"); + + let signer_address = self.l2_call_signer.get_address(); + + let nonce = self + .provider + .get_transaction_count(signer_address) + .await + .map_err(|e| anyhow::anyhow!("Failed to get nonce for bridge call: {}", e))?; + + let call_builder = self + .bridge + .processMessage(message, Bytes::new()) + .gas(1_000_000) + .max_fee_per_gas(1_000_000_000) // 1 gwei + .max_priority_fee_per_gas(0) + .nonce(nonce) + .chain_id(self.chain_id); + + let typed_tx = call_builder + .into_transaction_request() + .build_typed_tx() + .map_err(|_| anyhow::anyhow!("L2 Call Tx: Failed to build typed transaction"))?; + + let tx_eip1559 = typed_tx + .eip1559() + .ok_or_else(|| anyhow::anyhow!("L2 Call Tx: Failed to extract EIP-1559 transaction"))? + .clone(); + + // Sign the transaction using the L2 call signer + let signature = match self.l2_call_signer.as_ref() { + Signer::Web3signer(web3signer, address) => { + let signature_bytes = web3signer.sign_transaction(&tx_eip1559, *address).await?; + Signature::try_from(signature_bytes.as_slice()) + .map_err(|e| anyhow::anyhow!("Failed to parse signature: {}", e))? + } + Signer::PrivateKey(private_key, _) => { + let signer = PrivateKeySigner::from_str(private_key.as_str())?; + AlloySigner::sign_hash(&signer, &tx_eip1559.signature_hash()).await? + } + }; + + let sig_tx = tx_eip1559.into_signed(signature); + + let tx_envelope = TxEnvelope::from(sig_tx); + + debug!("L2 Call transaction hash: {}", tx_envelope.tx_hash()); + + let tx = Transaction { + inner: Recovered::new_unchecked(tx_envelope, signer_address), + block_hash: None, + block_number: None, + transaction_index: None, + effective_gas_price: None, + }; + Ok(tx) + } + + async fn find_message_and_signal_slot( + &self, + block_id: u64, + ) -> Result)>, anyhow::Error> { + use alloy::rpc::types::Filter; + + let bridge_address = *self.bridge.address(); + let signal_service_address = self.signal_service; + + let filter = Filter::new().from_block(block_id).to_block(block_id); + + // Get logs from the bridge contract (MessageSent event) + let bridge_filter = filter + .clone() + .address(bridge_address) + .event_signature(MessageSent::SIGNATURE_HASH); + + let bridge_logs = self + .provider + .get_logs(&bridge_filter) + .await + .map_err(|e| anyhow::anyhow!("Failed to get MessageSent logs from bridge: {e}"))?; + + // Get logs from the signal service contract (SignalSent event) + let signal_filter = filter + .address(signal_service_address) + .event_signature(SignalSent::SIGNATURE_HASH); + + let signal_logs = self.provider.get_logs(&signal_filter).await.map_err(|e| { + anyhow::anyhow!("Failed to get SignalSent logs from signal service: {e}") + })?; + + // Check if both events are present + if bridge_logs.is_empty() || signal_logs.is_empty() { + return Ok(None); + } + + // Decode MessageSent event + let message = { + let log = bridge_logs.first().unwrap(); + let log_data = alloy::primitives::LogData::new_unchecked( + log.topics().to_vec(), + log.data().data.clone(), + ); + MessageSent::decode_log_data(&log_data) + .map_err(|e| anyhow::anyhow!("Failed to decode MessageSent event: {e}"))? + .message + }; + + // Decode SignalSent event + let slot = { + let log = signal_logs.first().unwrap(); + let log_data = alloy::primitives::LogData::new_unchecked( + log.topics().to_vec(), + log.data().data.clone(), + ); + SignalSent::decode_log_data(&log_data) + .map_err(|e| anyhow::anyhow!("Failed to decode SignalSent event: {e}"))? + .slot + }; + + Ok(Some((message, slot))) + } +} diff --git a/shasta/src/l2/taiko.rs b/shasta/src/l2/taiko.rs index a67cadb5..4d049788 100644 --- a/shasta/src/l2/taiko.rs +++ b/shasta/src/l2/taiko.rs @@ -3,7 +3,9 @@ use super::execution_layer::L2ExecutionLayer; use crate::l1::protocol_config::ProtocolConfig; +use crate::l2::bindings::{Anchor, ICheckpointStore::Checkpoint}; use crate::node::proposal_manager::l2_block_payload::L2BlockV2Payload; +use alloy::primitives::FixedBytes; use alloy::{ consensus::BlockHeader, eips::BlockNumberOrTag, @@ -31,7 +33,6 @@ use common::{ use pacaya::l2::config::TaikoConfig; use std::{sync::Arc, time::Duration}; use taiko_alethia_reth::validation::ANCHOR_V3_V4_GAS_LIMIT; -use taiko_bindings::anchor::{Anchor, ICheckpointStore::Checkpoint}; use tracing::{debug, trace}; pub struct Taiko { @@ -237,6 +238,7 @@ impl Taiko { &self, l2_block_payload: L2BlockV2Payload, l2_slot_context: &L2SlotContext, + anchor_signal_slots: Vec>, operation_type: OperationType, ) -> Result { tracing::debug!( @@ -244,11 +246,14 @@ impl Taiko { l2_block_payload.tx_list.len() ); - let anchor_block_params = Checkpoint { - blockNumber: l2_block_payload.anchor_block_id.try_into()?, - blockHash: l2_block_payload.anchor_block_hash, - stateRoot: l2_block_payload.anchor_state_root, - }; + let anchor_block_params = ( + Checkpoint { + blockNumber: l2_block_payload.anchor_block_id.try_into()?, + blockHash: l2_block_payload.anchor_block_hash, + stateRoot: l2_block_payload.anchor_state_root, + }, + anchor_signal_slots, + ); let anchor_tx = self .l2_execution_layer diff --git a/shasta/src/lib.rs b/shasta/src/lib.rs index 92f570e5..019b469f 100644 --- a/shasta/src/lib.rs +++ b/shasta/src/lib.rs @@ -3,6 +3,7 @@ mod forced_inclusion; mod l1; mod l2; mod node; +mod shared_abi; mod utils; use crate::utils::config::ShastaConfig; diff --git a/shasta/src/node/proposal_manager/batch_builder.rs b/shasta/src/node/proposal_manager/batch_builder.rs index 9960118c..4b1105f5 100644 --- a/shasta/src/node/proposal_manager/batch_builder.rs +++ b/shasta/src/node/proposal_manager/batch_builder.rs @@ -1,12 +1,14 @@ -use std::{collections::VecDeque, sync::Arc}; - use super::proposal::Proposals; -use crate::node::proposal_manager::l2_block_payload::L2BlockV2Payload; -use crate::{ - l1::execution_layer::ExecutionLayer, metrics::Metrics, - node::proposal_manager::proposal::Proposal, shared::l2_tx_lists::PreBuiltTxList, +use crate::l1::execution_layer::ExecutionLayer; +use crate::l2::bindings::ICheckpointStore::Checkpoint; +use crate::metrics::Metrics; +use crate::node::proposal_manager::{ + bridge_handler::{L1Call, UserOpData}, + l2_block_payload::L2BlockV2Payload, + proposal::Proposal, }; -use alloy::primitives::Address; +use crate::shared::l2_tx_lists::PreBuiltTxList; +use alloy::primitives::{Address, FixedBytes}; use anyhow::Error; use common::{ batch_builder::BatchBuilderConfig, @@ -16,7 +18,7 @@ use common::{ l1::{ethereum_l1::EthereumL1, slot_clock::SlotClock, transaction_error::TransactionError}, shared::anchor_block_info::AnchorBlockInfo, }; -use taiko_bindings::anchor::ICheckpointStore::Checkpoint; +use std::{collections::VecDeque, sync::Arc}; use tracing::{debug, trace, warn}; pub struct BatchBuilder { @@ -104,6 +106,9 @@ impl BatchBuilder { anchor_state_root: anchor_block.state_root(), num_forced_inclusion: 0, checkpoint: Checkpoint::default(), + user_ops: vec![], + signal_slots: vec![], + l1_calls: vec![], }); } @@ -162,6 +167,42 @@ impl BatchBuilder { } } + // Surge: adds user ops that initiate L2 calls + pub fn add_user_op(&mut self, user_op_data: UserOpData) -> Result<&Proposal, Error> { + if let Some(current_proposal) = self.current_proposal.as_mut() { + current_proposal.user_ops.push(user_op_data.clone()); + + debug!("Added user op: {:?}", user_op_data); + Ok(current_proposal) + } else { + Err(anyhow::anyhow!("No current batch")) + } + } + + // Surge: adds signal slots to make same slot L2 call valid + pub fn add_signal_slot(&mut self, signal_slot: FixedBytes<32>) -> Result<&Proposal, Error> { + if let Some(current_proposal) = self.current_proposal.as_mut() { + current_proposal.signal_slots.push(signal_slot); + + debug!("Added signal slot: {:?}", signal_slot); + Ok(current_proposal) + } else { + Err(anyhow::anyhow!("No current batch")) + } + } + + // Surge: adds L1 calls initiated by L2 contracts + pub fn add_l1_call(&mut self, l1_call: L1Call) -> Result<&Proposal, Error> { + if let Some(current_proposal) = self.current_proposal.as_mut() { + current_proposal.l1_calls.push(l1_call.clone()); + + debug!("Added L1 call: {:?}", l1_call); + Ok(current_proposal) + } else { + Err(anyhow::anyhow!("No current batch")) + } + } + // Surge: Sets the proposal checkpoint // This is called at the end of sequencing pub fn set_proposal_checkpoint(&mut self, checkpoint: Checkpoint) -> Result<&Proposal, Error> { @@ -230,6 +271,12 @@ impl BatchBuilder { anchor_state_root: anchor_info.state_root(), num_forced_inclusion: 0, checkpoint: Checkpoint::default(), + // Surge: This is NOT OK for recovery, but fine for the POC. + // Any previously inititated user ops will not be valid during recovery + // leading to proposal failure + user_ops: vec![], + signal_slots: vec![], + l1_calls: vec![], }); } @@ -347,11 +394,7 @@ impl BatchBuilder { if let Err(err) = ethereum_l1 .execution_layer // TODO send a Proosal to function - .send_batch_to_l1( - batch.l2_blocks.clone(), - batch.num_forced_inclusion, - batch.checkpoint.clone(), - ) + .send_batch_to_l1(batch.clone()) .await { if let Some(transaction_error) = err.downcast_ref::() diff --git a/shasta/src/node/proposal_manager/bridge_handler.rs b/shasta/src/node/proposal_manager/bridge_handler.rs new file mode 100644 index 00000000..bcef61ad --- /dev/null +++ b/shasta/src/node/proposal_manager/bridge_handler.rs @@ -0,0 +1,194 @@ +use crate::l2::taiko::Taiko; +use crate::shared_abi::bindings::IBridge::Message; +use crate::{ + l1::{ + bindings::UserOpsSubmitter::UserOp, + execution_layer::{ExecutionLayer, L1BridgeHandlerOps}, + }, + l2::execution_layer::L2BridgeHandlerOps, +}; +use alloy::primitives::{Address, Bytes, FixedBytes, U256}; +use alloy::signers::Signer; +use anyhow::Result; +use common::{l1::ethereum_l1::EthereumL1, utils::cancellation_token::CancellationToken}; +use jsonrpsee::server::{RpcModule, ServerBuilder}; +use serde::Deserialize; +use std::{net::SocketAddr, sync::Arc}; +use tokio::sync::mpsc::{self, Receiver}; +use tracing::{error, info}; + +#[derive(Deserialize)] +pub struct SignedUserOp { + // `UserOpsSubmitter` contract for the user. + // Can be replaced with a Safe multisig or equivalent user ops based service contract + submitter: String, + target: String, + value: u64, + data: Vec, + // Signature on the hashed UserOp { target, value, data } + signature: Vec, +} + +// Sequence of calls on L1: +// 1. User op submission via `UserOpSubmitter` +// 2. Proposal with signal slot +// 3. L1Call initiated by an L2 contract + +// Sequence of calls on l2: +// 1. L2Call initiated by an L1 contract + +// Data to allow construction of the user op transaction +#[derive(Clone, Debug)] +pub struct UserOpData { + pub user_op: UserOp, + pub user_op_signature: Bytes, + pub user_op_submitter: Address, +} + +// Data required to build the L1 call transaction initiated by an L2 contract via the bridge +#[derive(Clone, Debug)] +pub struct L1Call { + pub message_from_l2: Message, + // For this POC, this is a signature based proof, but must be a merkle proof in production + pub signal_slot_proof: Bytes, +} + +// Data required to build the L2 call transaction initiated by an L1 contract via the bridge +#[derive(Clone, Debug)] +pub struct L2Call { + pub message_from_l1: Message, + pub signal_slot_on_l2: FixedBytes<32>, +} + +pub struct BridgeHandler { + ethereum_l1: Arc>, + taiko: Arc, + rx: Receiver, + // Surge: For signing the L1 call signal slot proofs + l1_call_proof_signer: alloy::signers::local::PrivateKeySigner, +} + +impl BridgeHandler { + pub async fn new( + addr: SocketAddr, + ethereum_l1: Arc>, + taiko: Arc, + cancellation_token: CancellationToken, + ) -> Result { + let (tx, rx) = mpsc::channel::(1024); + + let server = ServerBuilder::default() + .build(addr) + .await + .map_err(|e| anyhow::anyhow!("Failed to build RPC server: {}", e))?; + + let mut module = RpcModule::new(tx); + + module.register_async_method("surge_sendUserOp", |params, tx_context, _| async move { + let signed_user_op: SignedUserOp = params.parse()?; + + info!( + "Received UserOp: target={:?}, value={:?}", + signed_user_op.target, signed_user_op.value + ); + + tx_context.send(signed_user_op).await.map_err(|e| { + error!("Failed to send UserOp to queue: {}", e); + jsonrpsee::types::ErrorObjectOwned::owned( + -32000, + "Failed to queue user operation", + Some(format!("{}", e)), + ) + })?; + + Ok::( + "UserOp queued successfully".to_string(), + ) + })?; + + info!("Bridge handler RPC server starting on {}", addr); + let handle = server.start(module); + + tokio::spawn(async move { + cancellation_token.cancelled().await; + info!("Cancellation token triggered, stopping bridge handler RPC server"); + handle.stop().ok(); + }); + + Ok(Self { + ethereum_l1, + taiko, + rx, + // Surge: Hard coding the private key for the POC + // (This is the first private key from foundry anvil) + l1_call_proof_signer: alloy::signers::local::PrivateKeySigner::from_bytes( + &"0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80" + .parse::>()?, + )?, + }) + } + + // Returns any L2 calls initiated by an L1 contract via the Bridge. + // For seamless composability, the users will be submitting a `UserOp` on L1 to interact with + // the Bridge and any other intermediate contract. + pub async fn next_user_op_and_l2_call( + &mut self, + ) -> Result, anyhow::Error> { + if let Some(signed_user_op) = self.rx.recv().await { + let user_op = UserOp { + target: signed_user_op.target.parse()?, + value: U256::from(signed_user_op.value), + data: Bytes::from(signed_user_op.data), + }; + + let user_op_data = UserOpData { + user_op, + user_op_submitter: signed_user_op.submitter.parse()?, + user_op_signature: Bytes::from(signed_user_op.signature), + }; + + // This is the message sent from the L1 contract to the L2, and the + // associated signal that is set when the user op is executed + if let Some((message_from_l1, signal_slot_on_l2)) = self + .ethereum_l1 + .execution_layer + .find_message_and_signal_slot(user_op_data.clone()) + .await? + { + return Ok(Some(( + user_op_data, + L2Call { + message_from_l1, + signal_slot_on_l2, + }, + ))); + } + } + + Ok(None) + } + + // Surge: Finds L1 calls initiated in a specific L2 block + pub async fn find_l1_call(&mut self, block_id: u64) -> Result, anyhow::Error> { + if let Some((message_from_l2, signal_slot)) = self + .taiko + .l2_execution_layer() + .find_message_and_signal_slot(block_id) + .await? + { + let signature = self.l1_call_proof_signer.sign_hash(&signal_slot).await?; + + let mut signal_slot_proof = [0_u8; 65]; + signal_slot_proof[..32].copy_from_slice(signature.r().to_be_bytes::<32>().as_slice()); + signal_slot_proof[32..64].copy_from_slice(signature.s().to_be_bytes::<32>().as_slice()); + signal_slot_proof[64] = (signature.v() as u8) + 27; + + return Ok(Some(L1Call { + message_from_l2, + signal_slot_proof: Bytes::from(signal_slot_proof), + })); + } + + Ok(None) + } +} diff --git a/shasta/src/node/proposal_manager/mod.rs b/shasta/src/node/proposal_manager/mod.rs index 32bc756a..de5266ae 100644 --- a/shasta/src/node/proposal_manager/mod.rs +++ b/shasta/src/node/proposal_manager/mod.rs @@ -1,19 +1,25 @@ mod batch_builder; +pub mod bridge_handler; pub mod l2_block_payload; pub mod proposal; +use crate::l2::bindings::ICheckpointStore::Checkpoint; +use crate::l2::execution_layer::L2BridgeHandlerOps; +use crate::node::proposal_manager::bridge_handler::UserOpData; use crate::{ l1::execution_layer::ExecutionLayer, l2::taiko::Taiko, metrics::Metrics, shared::{l2_block_v2::L2BlockV2Draft, l2_tx_lists::PreBuiltTxList}, }; +use alloy::primitives::FixedBytes; use alloy::{ - consensus::{BlockHeader, Transaction}, + consensus::{BlockHeader, Transaction as TransactionTrait}, primitives::aliases::U48, }; use anyhow::Error; use batch_builder::BatchBuilder; +use bridge_handler::BridgeHandler; use common::{batch_builder::BatchBuilderConfig, shared::l2_slot_info_v2::L2SlotContext}; use common::{ l1::{ethereum_l1::EthereumL1, traits::ELTrait}, @@ -21,8 +27,8 @@ use common::{ shared::anchor_block_info::AnchorBlockInfo, utils::cancellation_token::CancellationToken, }; -use std::sync::Arc; -use taiko_bindings::anchor::ICheckpointStore::Checkpoint; +use std::{net::SocketAddr, sync::Arc}; +use tokio::sync::Mutex; use tracing::{debug, error, info, warn}; use crate::forced_inclusion::ForcedInclusion; @@ -33,6 +39,7 @@ const MIN_ANCHOR_OFFSET: u64 = 2; pub struct BatchManager { batch_builder: BatchBuilder, + bridge_handler: Arc>, ethereum_l1: Arc>, pub taiko: Arc, l1_height_lag: u64, @@ -66,12 +73,25 @@ impl BatchManager { let forced_inclusion = Arc::new(ForcedInclusion::new(ethereum_l1.clone()).await?); + // Initialize bridge handler listening on port 4545 + let bridge_addr: SocketAddr = "127.0.0.1:4545".parse()?; + let bridge_handler = Arc::new(Mutex::new( + BridgeHandler::new( + bridge_addr, + ethereum_l1.clone(), + taiko.clone(), + cancel_token.clone(), + ) + .await?, + )); + Ok(Self { batch_builder: BatchBuilder::new( config, ethereum_l1.slot_clock.clone(), metrics.clone(), ), + bridge_handler, ethereum_l1, taiko, l1_height_lag, @@ -166,10 +186,11 @@ impl BatchManager { .get_last_synced_block_params_from_geth() .await?; - let pyaload = self.batch_builder.add_fi_block(fi_block, anchor_params)?; + let payload = self.batch_builder.add_fi_block(fi_block, anchor_params)?; + // Surge: Signal slots are not expected in forced inclusions match self .taiko - .advance_head_to_new_l2_block(pyaload, l2_slot_context, operation_type) + .advance_head_to_new_l2_block(payload, l2_slot_context, vec![], operation_type) .await { Ok(fi_preconfed_block) => { @@ -253,17 +274,75 @@ impl BatchManager { Ok(preconfed_block) } + // Surge: Adds any pending L2 calls initiated via User Ops on the bridge handler + // to the transaction list in the draft block. + // + // For the POC, only a single L2 call is added per block + // + // Returns the signal slot to be set on L2 + async fn add_pending_l2_call_to_draft_block( + &mut self, + l2_draft_block: &mut L2BlockV2Draft, + ) -> Result)>, anyhow::Error> { + // Check for pending L2 calls from the bridge handler + if let Ok(Some((user_op_data, l2_call))) = self + .bridge_handler + .lock() + .await + .next_user_op_and_l2_call() + .await + { + info!("Processing pending L2 call: {:?}", l2_call); + + // Construct the bridge call transaction via the L2 execution layer + let l2_call_bridge_tx = self + .taiko + .l2_execution_layer() + .construct_l2_call_tx(l2_call.message_from_l1) + .await?; + + // Insert the bridge transaction into the list + l2_draft_block + .prebuilt_tx_list + .tx_list + .push(l2_call_bridge_tx); + + debug!("Inserted bridge call transaction into tx list"); + + return Ok(Some((user_op_data, l2_call.signal_slot_on_l2))); + } + + Ok(None) + } + async fn add_draft_block_to_proposal( &mut self, - l2_draft_block: L2BlockV2Draft, + mut l2_draft_block: L2BlockV2Draft, l2_slot_context: &L2SlotContext, operation_type: OperationType, ) -> Result { + let mut anchor_signal_slots: Vec> = vec![]; + + // Surge: Add any pending L2 call from the bridge handler RPC and + // record associated signal slot for the proposal + if let Some((user_op_data, signal_slot)) = self + .add_pending_l2_call_to_draft_block(&mut l2_draft_block) + .await? + { + self.batch_builder.add_user_op(user_op_data)?; + self.batch_builder.add_signal_slot(signal_slot)?; + anchor_signal_slots.push(signal_slot); + } let payload = self.batch_builder.add_l2_draft_block(l2_draft_block)?; match self .taiko - .advance_head_to_new_l2_block(payload, l2_slot_context, operation_type) + .advance_head_to_new_l2_block( + payload, + l2_slot_context, + anchor_signal_slots, + operation_type, + ) .await { Ok(preconfed_block) => { @@ -274,6 +353,17 @@ impl BatchManager { blockHash: preconfed_block.hash, })?; + // Surge: Record any L1 call initiated in the L2 block + if let Some(l1_call) = self + .bridge_handler + .lock() + .await + .find_l1_call(preconfed_block.number) + .await? + { + self.batch_builder.add_l1_call(l1_call)?; + } + Ok(preconfed_block) } Err(err) => { @@ -519,6 +609,7 @@ impl BatchManager { pub fn clone_without_batches(&self) -> Self { Self { batch_builder: self.batch_builder.clone_without_batches(), + bridge_handler: self.bridge_handler.clone(), ethereum_l1: self.ethereum_l1.clone(), taiko: self.taiko.clone(), l1_height_lag: self.l1_height_lag, diff --git a/shasta/src/node/proposal_manager/proposal.rs b/shasta/src/node/proposal_manager/proposal.rs index 2f96a827..de36163f 100644 --- a/shasta/src/node/proposal_manager/proposal.rs +++ b/shasta/src/node/proposal_manager/proposal.rs @@ -1,9 +1,12 @@ -use crate::node::proposal_manager::l2_block_payload::L2BlockV2Payload; -use alloy::primitives::{Address, B256}; +use crate::l2::bindings::ICheckpointStore::Checkpoint; +use crate::node::proposal_manager::{ + bridge_handler::{L1Call, UserOpData}, + l2_block_payload::L2BlockV2Payload, +}; +use alloy::primitives::{Address, B256, FixedBytes}; use common::shared::l2_block_v2::{L2BlockV2, L2BlockV2Draft}; use std::collections::VecDeque; use std::time::Instant; -use taiko_bindings::anchor::ICheckpointStore::Checkpoint; use taiko_protocol::shasta::manifest::{BlockManifest, DerivationSourceManifest}; use tracing::{debug, warn}; @@ -23,6 +26,12 @@ pub struct Proposal { // Surge: the state sync checkpoint that is signed and sent as a proof // along with the proposal to Surge inbox pub checkpoint: Checkpoint, + // Surge: User ops that initiate L2 calls + pub user_ops: Vec, + // Surge: Signal slots to set via anchor with the proposal + pub signal_slots: Vec>, + // Surge: L1 calls intitiated by any L2 contracts + pub l1_calls: Vec, } impl Proposal { @@ -181,6 +190,9 @@ mod test { anchor_state_root: B256::ZERO, num_forced_inclusion: 0, checkpoint: Checkpoint::default(), + user_ops: vec![], + signal_slots: vec![], + l1_calls: vec![], }; proposal.compress(); diff --git a/shasta/src/shared_abi/Bridge.json b/shasta/src/shared_abi/Bridge.json new file mode 100644 index 00000000..8f768573 --- /dev/null +++ b/shasta/src/shared_abi/Bridge.json @@ -0,0 +1,738 @@ +{ + "abi": [ + { + "type": "function", + "name": "context", + "inputs": [], + "outputs": [ + { + "name": "ctx_", + "type": "tuple", + "internalType": "struct IBridge.Context", + "components": [ + { + "name": "msgHash", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "from", + "type": "address", + "internalType": "address" + }, + { + "name": "srcChainId", + "type": "uint64", + "internalType": "uint64" + } + ] + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "failMessage", + "inputs": [ + { + "name": "_message", + "type": "tuple", + "internalType": "struct IBridge.Message", + "components": [ + { + "name": "id", + "type": "uint64", + "internalType": "uint64" + }, + { + "name": "fee", + "type": "uint64", + "internalType": "uint64" + }, + { + "name": "gasLimit", + "type": "uint32", + "internalType": "uint32" + }, + { + "name": "from", + "type": "address", + "internalType": "address" + }, + { + "name": "srcChainId", + "type": "uint64", + "internalType": "uint64" + }, + { + "name": "srcOwner", + "type": "address", + "internalType": "address" + }, + { + "name": "destChainId", + "type": "uint64", + "internalType": "uint64" + }, + { + "name": "destOwner", + "type": "address", + "internalType": "address" + }, + { + "name": "to", + "type": "address", + "internalType": "address" + }, + { + "name": "value", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "data", + "type": "bytes", + "internalType": "bytes" + } + ] + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "hashMessage", + "inputs": [ + { + "name": "_message", + "type": "tuple", + "internalType": "struct IBridge.Message", + "components": [ + { + "name": "id", + "type": "uint64", + "internalType": "uint64" + }, + { + "name": "fee", + "type": "uint64", + "internalType": "uint64" + }, + { + "name": "gasLimit", + "type": "uint32", + "internalType": "uint32" + }, + { + "name": "from", + "type": "address", + "internalType": "address" + }, + { + "name": "srcChainId", + "type": "uint64", + "internalType": "uint64" + }, + { + "name": "srcOwner", + "type": "address", + "internalType": "address" + }, + { + "name": "destChainId", + "type": "uint64", + "internalType": "uint64" + }, + { + "name": "destOwner", + "type": "address", + "internalType": "address" + }, + { + "name": "to", + "type": "address", + "internalType": "address" + }, + { + "name": "value", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "data", + "type": "bytes", + "internalType": "bytes" + } + ] + } + ], + "outputs": [ + { + "name": "", + "type": "bytes32", + "internalType": "bytes32" + } + ], + "stateMutability": "pure" + }, + { + "type": "function", + "name": "isMessageSent", + "inputs": [ + { + "name": "_message", + "type": "tuple", + "internalType": "struct IBridge.Message", + "components": [ + { + "name": "id", + "type": "uint64", + "internalType": "uint64" + }, + { + "name": "fee", + "type": "uint64", + "internalType": "uint64" + }, + { + "name": "gasLimit", + "type": "uint32", + "internalType": "uint32" + }, + { + "name": "from", + "type": "address", + "internalType": "address" + }, + { + "name": "srcChainId", + "type": "uint64", + "internalType": "uint64" + }, + { + "name": "srcOwner", + "type": "address", + "internalType": "address" + }, + { + "name": "destChainId", + "type": "uint64", + "internalType": "uint64" + }, + { + "name": "destOwner", + "type": "address", + "internalType": "address" + }, + { + "name": "to", + "type": "address", + "internalType": "address" + }, + { + "name": "value", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "data", + "type": "bytes", + "internalType": "bytes" + } + ] + } + ], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "nextMessageId", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint64", + "internalType": "uint64" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "processMessage", + "inputs": [ + { + "name": "_message", + "type": "tuple", + "internalType": "struct IBridge.Message", + "components": [ + { + "name": "id", + "type": "uint64", + "internalType": "uint64" + }, + { + "name": "fee", + "type": "uint64", + "internalType": "uint64" + }, + { + "name": "gasLimit", + "type": "uint32", + "internalType": "uint32" + }, + { + "name": "from", + "type": "address", + "internalType": "address" + }, + { + "name": "srcChainId", + "type": "uint64", + "internalType": "uint64" + }, + { + "name": "srcOwner", + "type": "address", + "internalType": "address" + }, + { + "name": "destChainId", + "type": "uint64", + "internalType": "uint64" + }, + { + "name": "destOwner", + "type": "address", + "internalType": "address" + }, + { + "name": "to", + "type": "address", + "internalType": "address" + }, + { + "name": "value", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "data", + "type": "bytes", + "internalType": "bytes" + } + ] + }, + { + "name": "_proof", + "type": "bytes", + "internalType": "bytes" + } + ], + "outputs": [ + { + "name": "", + "type": "uint8", + "internalType": "enum IBridge.Status" + }, + { + "name": "", + "type": "uint8", + "internalType": "enum IBridge.StatusReason" + } + ], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "recallMessage", + "inputs": [ + { + "name": "_message", + "type": "tuple", + "internalType": "struct IBridge.Message", + "components": [ + { + "name": "id", + "type": "uint64", + "internalType": "uint64" + }, + { + "name": "fee", + "type": "uint64", + "internalType": "uint64" + }, + { + "name": "gasLimit", + "type": "uint32", + "internalType": "uint32" + }, + { + "name": "from", + "type": "address", + "internalType": "address" + }, + { + "name": "srcChainId", + "type": "uint64", + "internalType": "uint64" + }, + { + "name": "srcOwner", + "type": "address", + "internalType": "address" + }, + { + "name": "destChainId", + "type": "uint64", + "internalType": "uint64" + }, + { + "name": "destOwner", + "type": "address", + "internalType": "address" + }, + { + "name": "to", + "type": "address", + "internalType": "address" + }, + { + "name": "value", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "data", + "type": "bytes", + "internalType": "bytes" + } + ] + }, + { + "name": "_proof", + "type": "bytes", + "internalType": "bytes" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "retryMessage", + "inputs": [ + { + "name": "_message", + "type": "tuple", + "internalType": "struct IBridge.Message", + "components": [ + { + "name": "id", + "type": "uint64", + "internalType": "uint64" + }, + { + "name": "fee", + "type": "uint64", + "internalType": "uint64" + }, + { + "name": "gasLimit", + "type": "uint32", + "internalType": "uint32" + }, + { + "name": "from", + "type": "address", + "internalType": "address" + }, + { + "name": "srcChainId", + "type": "uint64", + "internalType": "uint64" + }, + { + "name": "srcOwner", + "type": "address", + "internalType": "address" + }, + { + "name": "destChainId", + "type": "uint64", + "internalType": "uint64" + }, + { + "name": "destOwner", + "type": "address", + "internalType": "address" + }, + { + "name": "to", + "type": "address", + "internalType": "address" + }, + { + "name": "value", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "data", + "type": "bytes", + "internalType": "bytes" + } + ] + }, + { + "name": "_isLastAttempt", + "type": "bool", + "internalType": "bool" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "sendMessage", + "inputs": [ + { + "name": "_message", + "type": "tuple", + "internalType": "struct IBridge.Message", + "components": [ + { + "name": "id", + "type": "uint64", + "internalType": "uint64" + }, + { + "name": "fee", + "type": "uint64", + "internalType": "uint64" + }, + { + "name": "gasLimit", + "type": "uint32", + "internalType": "uint32" + }, + { + "name": "from", + "type": "address", + "internalType": "address" + }, + { + "name": "srcChainId", + "type": "uint64", + "internalType": "uint64" + }, + { + "name": "srcOwner", + "type": "address", + "internalType": "address" + }, + { + "name": "destChainId", + "type": "uint64", + "internalType": "uint64" + }, + { + "name": "destOwner", + "type": "address", + "internalType": "address" + }, + { + "name": "to", + "type": "address", + "internalType": "address" + }, + { + "name": "value", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "data", + "type": "bytes", + "internalType": "bytes" + } + ] + } + ], + "outputs": [ + { + "name": "msgHash_", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "message_", + "type": "tuple", + "internalType": "struct IBridge.Message", + "components": [ + { + "name": "id", + "type": "uint64", + "internalType": "uint64" + }, + { + "name": "fee", + "type": "uint64", + "internalType": "uint64" + }, + { + "name": "gasLimit", + "type": "uint32", + "internalType": "uint32" + }, + { + "name": "from", + "type": "address", + "internalType": "address" + }, + { + "name": "srcChainId", + "type": "uint64", + "internalType": "uint64" + }, + { + "name": "srcOwner", + "type": "address", + "internalType": "address" + }, + { + "name": "destChainId", + "type": "uint64", + "internalType": "uint64" + }, + { + "name": "destOwner", + "type": "address", + "internalType": "address" + }, + { + "name": "to", + "type": "address", + "internalType": "address" + }, + { + "name": "value", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "data", + "type": "bytes", + "internalType": "bytes" + } + ] + } + ], + "stateMutability": "payable" + }, + { + "type": "event", + "name": "MessageSent", + "inputs": [ + { + "name": "msgHash", + "type": "bytes32", + "indexed": true, + "internalType": "bytes32" + }, + { + "name": "message", + "type": "tuple", + "indexed": false, + "internalType": "struct IBridge.Message", + "components": [ + { + "name": "id", + "type": "uint64", + "internalType": "uint64" + }, + { + "name": "fee", + "type": "uint64", + "internalType": "uint64" + }, + { + "name": "gasLimit", + "type": "uint32", + "internalType": "uint32" + }, + { + "name": "from", + "type": "address", + "internalType": "address" + }, + { + "name": "srcChainId", + "type": "uint64", + "internalType": "uint64" + }, + { + "name": "srcOwner", + "type": "address", + "internalType": "address" + }, + { + "name": "destChainId", + "type": "uint64", + "internalType": "uint64" + }, + { + "name": "destOwner", + "type": "address", + "internalType": "address" + }, + { + "name": "to", + "type": "address", + "internalType": "address" + }, + { + "name": "value", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "data", + "type": "bytes", + "internalType": "bytes" + } + ] + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "MessageStatusChanged", + "inputs": [ + { + "name": "msgHash", + "type": "bytes32", + "indexed": true, + "internalType": "bytes32" + }, + { + "name": "status", + "type": "uint8", + "indexed": false, + "internalType": "enum IBridge.Status" + } + ], + "anonymous": false + } + ] +} \ No newline at end of file diff --git a/shasta/src/shared_abi/bindings.rs b/shasta/src/shared_abi/bindings.rs new file mode 100644 index 00000000..1abe936d --- /dev/null +++ b/shasta/src/shared_abi/bindings.rs @@ -0,0 +1,17 @@ +#![allow(clippy::too_many_arguments)] + +use alloy::sol; + +sol!( + #[allow(missing_docs)] + #[sol(rpc)] + #[derive(Debug)] + Bridge, + "src/shared_abi/Bridge.json" +); + +// SignalSent event emitted by the SignalService contract +sol! { + #[allow(missing_docs)] + event SignalSent(address indexed app, bytes32 signal, bytes32 slot, bytes32 value); +} diff --git a/shasta/src/shared_abi/mod.rs b/shasta/src/shared_abi/mod.rs new file mode 100644 index 00000000..90c70dcc --- /dev/null +++ b/shasta/src/shared_abi/mod.rs @@ -0,0 +1 @@ +pub mod bindings; diff --git a/shasta/src/utils/config.rs b/shasta/src/utils/config.rs index da138a5a..c27a8b1d 100644 --- a/shasta/src/utils/config.rs +++ b/shasta/src/utils/config.rs @@ -6,6 +6,8 @@ use std::str::FromStr; #[derive(Debug, Clone)] pub struct ShastaConfig { pub shasta_inbox: Address, + pub proposer_multicall: Address, + pub bridge: Address, } impl ConfigTrait for ShastaConfig { @@ -18,8 +20,14 @@ impl ConfigTrait for ShastaConfig { }; let shasta_inbox = read_contract_address("SHASTA_INBOX_ADDRESS")?; + let proposer_multicall = read_contract_address("PROPOSER_MULTICALL_ADDRESS")?; + let bridge = read_contract_address("L1_BRIDGE_ADDRESS")?; - Ok(ShastaConfig { shasta_inbox }) + Ok(ShastaConfig { + shasta_inbox, + proposer_multicall, + bridge, + }) } } @@ -27,6 +35,7 @@ use std::fmt; impl fmt::Display for ShastaConfig { fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { writeln!(f, "Shasta inbox: {:#?}", self.shasta_inbox)?; + writeln!(f, "Proposer multicall: {:#?}", self.proposer_multicall)?; Ok(()) } }