From 83a28807ca41bc1141afb85d2b107f0ef6162b39 Mon Sep 17 00:00:00 2001 From: Dmitrii Novikov Date: Tue, 22 Oct 2024 16:15:44 +0400 Subject: [PATCH 1/4] feat(ethexe): support programs exiting (#4292) --- ethexe/common/src/router.rs | 1 + ethexe/contracts/src/IMirror.sol | 9 ++- ethexe/contracts/src/IRouter.sol | 1 + ethexe/contracts/src/Mirror.sol | 30 +++++++-- ethexe/contracts/src/Router.sol | 10 ++- ethexe/contracts/test/Router.t.sol | 5 +- ethexe/ethereum/Mirror.json | 2 +- ethexe/ethereum/MirrorProxy.json | 2 +- ethexe/ethereum/Router.json | 2 +- ethexe/ethereum/WrappedVara.json | 2 +- ethexe/ethereum/src/abi.rs | 2 + ethexe/processor/src/handling/events.rs | 10 ++- ethexe/runtime/common/src/journal.rs | 47 ++++++++++----- ethexe/runtime/common/src/lib.rs | 3 - ethexe/runtime/common/src/schedule.rs | 12 ++-- ethexe/runtime/common/src/transitions.rs | 37 +++++------- ethexe/signer/src/digest.rs | 77 ++++++++++++++++++------ ethexe/validator/src/lib.rs | 1 + 18 files changed, 171 insertions(+), 82 deletions(-) diff --git a/ethexe/common/src/router.rs b/ethexe/common/src/router.rs index 2074484976f..93d6de6c5c0 100644 --- a/ethexe/common/src/router.rs +++ b/ethexe/common/src/router.rs @@ -51,6 +51,7 @@ pub struct BlockCommitment { pub struct StateTransition { pub actor_id: ActorId, pub new_state_hash: H256, + pub inheritor: ActorId, pub value_to_receive: u128, pub value_claims: Vec, pub messages: Vec, diff --git a/ethexe/contracts/src/IMirror.sol b/ethexe/contracts/src/IMirror.sol index 835be2b5e0e..4f1895dfcaa 100644 --- a/ethexe/contracts/src/IMirror.sol +++ b/ethexe/contracts/src/IMirror.sol @@ -75,6 +75,8 @@ interface IMirror { function stateHash() external view returns (bytes32); + function inheritor() external view returns (address); + function nonce() external view returns (uint256); function router() external view returns (address); @@ -87,15 +89,20 @@ interface IMirror { function sendReply(bytes32 repliedTo, bytes calldata payload, uint128 value) external payable; + // payable? function claimValue(bytes32 claimedId) external; function executableBalanceTopUp(uint128 value) external payable; + function sendValueToInheritor() external; + /* Router-driven state and funds management */ // NOTE: all of these methods will have additional handler (with hooks) for decoder. function updateState(bytes32 newStateHash) external; + function setInheritor(address inheritor) external; + function messageSent(bytes32 id, address destination, bytes calldata payload, uint128 value) external; function replySent(address destination, bytes calldata payload, uint128 value, bytes32 replyTo, bytes4 replyCode) @@ -103,8 +110,6 @@ interface IMirror { function valueClaimed(bytes32 claimedId, address destination, uint128 value) external; - function executableBalanceBurned(uint128 value) external; - function createDecoder(address implementation, bytes32 salt) external; // TODO (breathx): consider removal of this in favor of separated creation and init. diff --git a/ethexe/contracts/src/IRouter.sol b/ethexe/contracts/src/IRouter.sol index 639cbb2a38d..cbb2e81f8b8 100644 --- a/ethexe/contracts/src/IRouter.sol +++ b/ethexe/contracts/src/IRouter.sol @@ -46,6 +46,7 @@ interface IRouter { struct StateTransition { address actorId; bytes32 newStateHash; + address inheritor; uint128 valueToReceive; ValueClaim[] valueClaims; OutgoingMessage[] messages; diff --git a/ethexe/contracts/src/Mirror.sol b/ethexe/contracts/src/Mirror.sol index 578cce3ad0f..c211d5b2f7d 100644 --- a/ethexe/contracts/src/Mirror.sol +++ b/ethexe/contracts/src/Mirror.sol @@ -11,6 +11,7 @@ import {Clones} from "@openzeppelin/contracts/proxy/Clones.sol"; // TODO: handle ETH sent in each contract. contract Mirror is IMirror { bytes32 public stateHash; + address public inheritor; // NOTE: Nonce 0 is used for init message in current implementation uint256 public nonce; /* = 1 */ address public decoder; @@ -25,6 +26,8 @@ contract Mirror is IMirror { // TODO (breathx): sendMessage with msg.sender, but with tx.origin if decoder. function sendMessage(bytes calldata _payload, uint128 _value) external payable returns (bytes32) { + require(inheritor == address(0), "program is terminated"); + uint128 baseFee = IRouter(router()).baseFee(); _retrieveValueToRouter(baseFee + _value); @@ -36,6 +39,8 @@ contract Mirror is IMirror { } function sendReply(bytes32 _repliedTo, bytes calldata _payload, uint128 _value) external payable { + require(inheritor == address(0), "program is terminated"); + uint128 baseFee = IRouter(router()).baseFee(); _retrieveValueToRouter(baseFee + _value); @@ -43,16 +48,26 @@ contract Mirror is IMirror { } function claimValue(bytes32 _claimedId) external { - // TODO (breathx): should we charge here something for try? + require(inheritor == address(0), "program is terminated"); + emit ValueClaimingRequested(_claimedId, _source()); } function executableBalanceTopUp(uint128 _value) external payable { + require(inheritor == address(0), "program is terminated"); + _retrieveValueToRouter(_value); emit ExecutableBalanceTopUpRequested(_value); } + function sendValueToInheritor() public { + require(inheritor != address(0), "program is not terminated"); + + uint256 balance = IWrappedVara(IRouter(router()).wrappedVara()).balanceOf(address(this)); + _sendValueTo(inheritor, uint128(balance)); + } + /* Router-driven state and funds management */ function updateState(bytes32 newStateHash) external onlyRouter { @@ -63,6 +78,13 @@ contract Mirror is IMirror { } } + // TODO (breathx): handle after-all transfers to program on wvara event properly. + function setInheritor(address _inheritor) external onlyRouter { + inheritor = _inheritor; + + sendValueToInheritor(); + } + function messageSent(bytes32 id, address destination, bytes calldata payload, uint128 value) external onlyRouter { // TODO (breathx): handle if goes to mailbox or not. Send value in place or not. @@ -113,10 +135,6 @@ contract Mirror is IMirror { emit ValueClaimed(claimedId, value); } - function executableBalanceBurned(uint128 value) external onlyRouter { - _sendValueTo(router(), value); - } - function createDecoder(address implementation, bytes32 salt) external onlyRouter { require(nonce == 0, "decoder could only be created before init message"); require(decoder == address(0), "decoder could only be created once"); @@ -150,7 +168,7 @@ contract Mirror is IMirror { /* Local helper functions */ function _source() private view returns (address) { - if (decoder != address(0) && msg.sender == decoder) { + if (msg.sender == decoder) { return tx.origin; } else { return msg.sender; diff --git a/ethexe/contracts/src/Router.sol b/ethexe/contracts/src/Router.sol index 9dddcef1598..8f6e10d8867 100644 --- a/ethexe/contracts/src/Router.sol +++ b/ethexe/contracts/src/Router.sol @@ -429,11 +429,16 @@ contract Router is IRouter, OwnableUpgradeable, ReentrancyGuardTransient { } } + if (stateTransition.inheritor != address(0)) { + mirrorActor.setInheritor(stateTransition.inheritor); + } + mirrorActor.updateState(stateTransition.newStateHash); return _stateTransitionHash( stateTransition.actorId, stateTransition.newStateHash, + stateTransition.inheritor, stateTransition.valueToReceive, keccak256(valueClaimsBytes), keccak256(messagesHashes) @@ -452,11 +457,14 @@ contract Router is IRouter, OwnableUpgradeable, ReentrancyGuardTransient { function _stateTransitionHash( address actorId, bytes32 newStateHash, + address inheritor, uint128 valueToReceive, bytes32 valueClaimsHash, bytes32 messagesHashesHash ) private pure returns (bytes32) { - return keccak256(abi.encodePacked(actorId, newStateHash, valueToReceive, valueClaimsHash, messagesHashesHash)); + return keccak256( + abi.encodePacked(actorId, newStateHash, inheritor, valueToReceive, valueClaimsHash, messagesHashesHash) + ); } function _outgoingMessageHash(OutgoingMessage calldata outgoingMessage) private pure returns (bytes32) { diff --git a/ethexe/contracts/test/Router.t.sol b/ethexe/contracts/test/Router.t.sol index 6450908a515..ca0d8bc0534 100644 --- a/ethexe/contracts/test/Router.t.sol +++ b/ethexe/contracts/test/Router.t.sol @@ -82,6 +82,7 @@ contract RouterTest is Test { assertEq(deployedProgram.router(), address(router)); assertEq(deployedProgram.stateHash(), 0); + assertEq(deployedProgram.inheritor(), address(0)); vm.roll(100); @@ -93,7 +94,8 @@ contract RouterTest is Test { IRouter.StateTransition[] memory transitionsArray = new IRouter.StateTransition[](1); IRouter.BlockCommitment[] memory blockCommitmentsArray = new IRouter.BlockCommitment[](1); - transitionsArray[0] = IRouter.StateTransition(actorId, bytes32(uint256(1)), 0, valueClaims, outgoingMessages); + transitionsArray[0] = + IRouter.StateTransition(actorId, bytes32(uint256(1)), address(0), 0, valueClaims, outgoingMessages); blockCommitmentsArray[0] = IRouter.BlockCommitment( bytes32(uint256(1)), bytes32(uint256(0)), blockhash(block.number - 1), transitionsArray ); @@ -174,6 +176,7 @@ contract RouterTest is Test { abi.encodePacked( transition.actorId, transition.newStateHash, + transition.inheritor, transition.valueToReceive, keccak256(valueClaimsBytes), keccak256(messagesHashesBytes) diff --git a/ethexe/ethereum/Mirror.json b/ethexe/ethereum/Mirror.json index 1851ad53db5..c35f1972934 100644 --- a/ethexe/ethereum/Mirror.json +++ b/ethexe/ethereum/Mirror.json @@ -1 +1 @@ -{"abi":[{"type":"function","name":"claimValue","inputs":[{"name":"_claimedId","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"createDecoder","inputs":[{"name":"implementation","type":"address","internalType":"address"},{"name":"salt","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"decoder","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"executableBalanceBurned","inputs":[{"name":"value","type":"uint128","internalType":"uint128"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"executableBalanceTopUp","inputs":[{"name":"_value","type":"uint128","internalType":"uint128"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"initMessage","inputs":[{"name":"source","type":"address","internalType":"address"},{"name":"payload","type":"bytes","internalType":"bytes"},{"name":"value","type":"uint128","internalType":"uint128"},{"name":"executableBalance","type":"uint128","internalType":"uint128"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"messageSent","inputs":[{"name":"id","type":"bytes32","internalType":"bytes32"},{"name":"destination","type":"address","internalType":"address"},{"name":"payload","type":"bytes","internalType":"bytes"},{"name":"value","type":"uint128","internalType":"uint128"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"nonce","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"replySent","inputs":[{"name":"destination","type":"address","internalType":"address"},{"name":"payload","type":"bytes","internalType":"bytes"},{"name":"value","type":"uint128","internalType":"uint128"},{"name":"replyTo","type":"bytes32","internalType":"bytes32"},{"name":"replyCode","type":"bytes4","internalType":"bytes4"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"router","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"sendMessage","inputs":[{"name":"_payload","type":"bytes","internalType":"bytes"},{"name":"_value","type":"uint128","internalType":"uint128"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"payable"},{"type":"function","name":"sendReply","inputs":[{"name":"_repliedTo","type":"bytes32","internalType":"bytes32"},{"name":"_payload","type":"bytes","internalType":"bytes"},{"name":"_value","type":"uint128","internalType":"uint128"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"stateHash","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"updateState","inputs":[{"name":"newStateHash","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"valueClaimed","inputs":[{"name":"claimedId","type":"bytes32","internalType":"bytes32"},{"name":"destination","type":"address","internalType":"address"},{"name":"value","type":"uint128","internalType":"uint128"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"ExecutableBalanceTopUpRequested","inputs":[{"name":"value","type":"uint128","indexed":false,"internalType":"uint128"}],"anonymous":false},{"type":"event","name":"Message","inputs":[{"name":"id","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"destination","type":"address","indexed":true,"internalType":"address"},{"name":"payload","type":"bytes","indexed":false,"internalType":"bytes"},{"name":"value","type":"uint128","indexed":false,"internalType":"uint128"}],"anonymous":false},{"type":"event","name":"MessageQueueingRequested","inputs":[{"name":"id","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"source","type":"address","indexed":true,"internalType":"address"},{"name":"payload","type":"bytes","indexed":false,"internalType":"bytes"},{"name":"value","type":"uint128","indexed":false,"internalType":"uint128"}],"anonymous":false},{"type":"event","name":"Reply","inputs":[{"name":"payload","type":"bytes","indexed":false,"internalType":"bytes"},{"name":"value","type":"uint128","indexed":false,"internalType":"uint128"},{"name":"replyTo","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"replyCode","type":"bytes4","indexed":true,"internalType":"bytes4"}],"anonymous":false},{"type":"event","name":"ReplyQueueingRequested","inputs":[{"name":"repliedTo","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"source","type":"address","indexed":true,"internalType":"address"},{"name":"payload","type":"bytes","indexed":false,"internalType":"bytes"},{"name":"value","type":"uint128","indexed":false,"internalType":"uint128"}],"anonymous":false},{"type":"event","name":"StateChanged","inputs":[{"name":"stateHash","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"ValueClaimed","inputs":[{"name":"claimedId","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"value","type":"uint128","indexed":false,"internalType":"uint128"}],"anonymous":false},{"type":"event","name":"ValueClaimingRequested","inputs":[{"name":"claimedId","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"source","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"error","name":"FailedDeployment","inputs":[]},{"type":"error","name":"InsufficientBalance","inputs":[{"name":"balance","type":"uint256","internalType":"uint256"},{"name":"needed","type":"uint256","internalType":"uint256"}]}],"bytecode":{"object":"0x608080604052346015576110c1908161001a8239f35b5f80fdfe60806040526004361015610011575f80fd5b5f803560e01c806314503e511461090657806329336f39146108225780635b1b84f714610671578063701da98e14610654578063704ed542146106005780638ea59e1d1461059b57806391d5a64c146105495780639cb3300514610520578063affed0e014610502578063c2df60091461049f578063c78bde7714610422578063d5624222146102c2578063dca4a37314610282578063de1dd2e0146100ee5763f887ea40146100bf575f80fd5b346100eb57806003193601126100eb5760206100d9610da9565b6040516001600160a01b039091168152f35b80fd5b50346100eb5760803660031901126100eb57610108610992565b60243567ffffffffffffffff811161027e576101289036906004016109ea565b906101316109a8565b9261013a6109d4565b936101566001600160a01b0361014e610da9565b163314610a18565b6001549081610222577f3527a119fe7f25d965cb7abc58139f031e8909b8592488c7926862d569e435c6947f85ba4ebb0990fc588bfbb287e2e810a77c858e0a69485d6a938c52c0542366676020846101b161021c96610d7c565b6001556040513060601b6bffffffffffffffffffffffff191683820190815260148101929092526101ef81603484015b03601f198101835282610a7b565b519020986001600160801b0360405191168152a16040516001600160a01b03909416969394859485610b24565b0390a280f35b60405162461bcd60e51b815260206004820152602e60248201527f696e6974206d657373616765206d75737420626520637265617465642062656660448201526d6f726520616e79206f746865727360901b6064820152608490fd5b8280fd5b50346100eb5760203660031901126100eb576102bf61029f6109be565b6102b26001600160a01b0361014e610da9565b6102ba610da9565b610e14565b80f35b5060403660031901126100eb5760043567ffffffffffffffff811161041e576102ef9036906004016109ea565b602435906001600160801b038216820361041a57600460206001600160a01b03610317610da9565b16604051928380926337792e1d60e11b82525afa90811561040f5761036c847f3527a119fe7f25d965cb7abc58139f031e8909b8592488c7926862d569e435c6949361037193602099916103e2575b50610ad0565b610f3f565b60015461037d81610d7c565b6001556040513060601b6bffffffffffffffffffffffff191687820190815260148101929092526103b181603484016101e1565b519020936103d76001600160a01b036103c861105d565b16946040519384938885610b24565b0390a2604051908152f35b6104029150893d8b11610408575b6103fa8183610a7b565b810190610ab1565b5f610366565b503d6103f0565b6040513d87823e3d90fd5b8380fd5b5080fd5b50346100eb5760a03660031901126100eb5761043c610992565b60243567ffffffffffffffff811161027e5761045c9036906004016109ea565b90916104666109a8565b608435926001600160e01b03198416840361049b576102bf946104926001600160a01b0361014e610da9565b60643593610c69565b8580fd5b50346100eb5760803660031901126100eb576104b961097c565b6044359067ffffffffffffffff821161027e576104dd6102bf9236906004016109ea565b906104e66109d4565b926104fa6001600160a01b0361014e610da9565b600435610b91565b50346100eb57806003193601126100eb576020600154604051908152f35b50346100eb57806003193601126100eb576002546040516001600160a01b039091168152602090f35b50346100eb5760203660031901126100eb576001600160a01b0361056b61105d565b167f0354817698da67944179457b89e15c1c57ca7b8cfd9d80eab1d09c258f6c497860206040516004358152a280f35b50346100eb5760203660031901126100eb576004356105c36001600160a01b0361014e610da9565b808254036105cf575080f35b6020817f5c601f20d27885120b6fed87a4c313849b86eaddc9d28e7685e2e66a9c080930928455604051908152a180f35b5060203660031901126100eb577f85ba4ebb0990fc588bfbb287e2e810a77c858e0a69485d6a938c52c05423666760206106386109be565b61064181610f3f565b6001600160801b0360405191168152a180f35b50346100eb57806003193601126100eb5760209054604051908152f35b50346107605760403660031901126107605761068b610992565b61069e6001600160a01b0361014e610da9565b6001546107c3576002546001600160a01b03166107735780763d602d80600a3d3981f3363d3d373d3d3d363d7300000062ffffff6e5af43d82803e903d91602b57fd5bf39360881c16175f5260781b1760205260018060a01b03602435603760095ff516801561076457600280546001600160a01b03191682179055803b15610760575f809160046040518094819363204a7f0760e21b83525af1801561075557610747575080f35b61075391505f90610a7b565b005b6040513d5f823e3d90fd5b5f80fd5b63b06ebf3d60e01b5f5260045ffd5b60405162461bcd60e51b815260206004820152602260248201527f6465636f64657220636f756c64206f6e6c792062652063726561746564206f6e604482015261636560f01b6064820152608490fd5b60405162461bcd60e51b815260206004820152603160248201527f6465636f64657220636f756c64206f6e6c792062652063726561746564206265604482015270666f726520696e6974206d65737361676560781b6064820152608490fd5b60603660031901126107605760243567ffffffffffffffff81116107605761084f600491369083016109ea565b61085a9291926109a8565b9260206001600160a01b0361086d610da9565b16604051948580926337792e1d60e11b82525afa9283156107555761036c857fb64dad8a89028819d048f9c75ec4c516341da68972bb68a8e1262b5443c61e7f956108be935f916108e75750610ad0565b6108e26001600160a01b036108d161105d565b169460405193849360043585610b24565b0390a2005b610900915060203d602011610408576103fa8183610a7b565b88610366565b34610760576060366003190112610760577fa217f2987a7942c2966f1fd16d39097862308325249e8b9fb4c00a430fd65783604061094261097c565b61096361094d6109a8565b9182906102ba6001600160a01b0361014e610da9565b6001600160801b038251916004358352166020820152a1005b602435906001600160a01b038216820361076057565b600435906001600160a01b038216820361076057565b604435906001600160801b038216820361076057565b600435906001600160801b038216820361076057565b606435906001600160801b038216820361076057565b9181601f840112156107605782359167ffffffffffffffff8311610760576020838186019501011161076057565b15610a1f57565b60405162461bcd60e51b815260206004820152602e60248201527f6f6e6c7920726f7574657220636f6e747261637420697320656c696769626c6560448201526d103337b91037b832b930ba34b7b760911b6064820152608490fd5b90601f8019910116810190811067ffffffffffffffff821117610a9d57604052565b634e487b7160e01b5f52604160045260245ffd5b9081602091031261076057516001600160801b03811681036107605790565b906001600160801b03809116911601906001600160801b038211610af057565b634e487b7160e01b5f52601160045260245ffd5b908060209392818452848401375f828201840152601f01601f1916010190565b92604092610b4b916001600160801b03939796978652606060208701526060860191610b04565b9416910152565b3d15610b8c573d9067ffffffffffffffff8211610a9d5760405191610b81601f8201601f191660200184610a7b565b82523d5f602084013e565b606090565b600254909493906001600160a01b031680610be8575b507f9c4ffe7286aed9eb205c8adb12b51219122c7e56c67017f312af0e15f801177393610be39160405194859460018060a01b03169785610b24565b0390a2565b5f80916040518260208201916374fad4ef60e01b83528a602482015260018060a01b038816604482015260806064820152610c4881610c2b60a482018a8d610b04565b6001600160801b038d16608483015203601f198101835282610a7b565b51926207a120f1610c57610b52565b50610c62575f610ba7565b5050505050565b94909294610c778682610e14565b6002546001600160a01b03169081610ce9575b50507fe240a19e4a4ef8e5861c0eea48f9ab2cdb47bfe98347c94ccabb9c45f7d8d1c6936001600160801b03610ccd604051958695606087526060870191610b04565b9616602084015260408301526001600160e01b031916930390a2565b604051639649744960e01b602082019081526001600160a01b03909216602482015260a060448201525f92839290918390610d61818c6001600160801b03610d3560c484018d8f610b04565b91166064830152608482018d90526001600160e01b03198a1660a483015203601f198101835282610a7b565b51926207a120f1610d70610b52565b50610c62575f80610c8a565b5f198114610af05760010190565b9081602091031261076057516001600160a01b03811681036107605790565b6040516303e21fa960e61b8152602081600481305afa908115610755575f91610dd0575090565b610df2915060203d602011610df5575b610dea8183610a7b565b810190610d8a565b90565b503d610de0565b90816020910312610760575180151581036107605790565b60049160206001600160a01b03610e29610da9565b166040519485809263088f50cf60e41b82525afa928315610755575f93610f15575b506001600160801b031680610e5f57505050565b60405163a9059cbb60e01b81526001600160a01b039283166004820152602481019190915291602091839160449183915f91165af1908115610755575f91610ee6575b5015610eaa57565b60405162461bcd60e51b81526020600482015260146024820152736661696c656420746f2073656e6420575661726160601b6044820152606490fd5b610f08915060203d602011610f0e575b610f008183610a7b565b810190610dfc565b5f610ea2565b503d610ef6565b6001600160801b03919350610f389060203d602011610df557610dea8183610a7b565b9290610e4b565b6001600160a01b03610f4f610da9565b60405163088f50cf60e41b81529116602082600481845afa918215610755576020926064915f91611040575b505f610f8561105d565b6040516323b872dd60e01b81526001600160a01b03918216600482015260248101959095526001600160801b039690961660448501529294859384929091165af1908115610755575f91611021575b5015610fdc57565b60405162461bcd60e51b815260206004820152601860248201527f6661696c656420746f20726574726965766520575661726100000000000000006044820152606490fd5b61103a915060203d602011610f0e57610f008183610a7b565b5f610fd4565b6110579150843d8611610df557610dea8183610a7b565b5f610f7b565b6002546001600160a01b03168015159081611081575b501561107d573290565b3390565b905033145f61107356fea26469706673582212209dca30c0fdebf549f81fadafbb5be9c8f652c9b50c8942508ed1283252d04a7664736f6c634300081a0033","sourceMap":"403:5600:80:-:0;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x60806040526004361015610011575f80fd5b5f803560e01c806314503e511461090657806329336f39146108225780635b1b84f714610671578063701da98e14610654578063704ed542146106005780638ea59e1d1461059b57806391d5a64c146105495780639cb3300514610520578063affed0e014610502578063c2df60091461049f578063c78bde7714610422578063d5624222146102c2578063dca4a37314610282578063de1dd2e0146100ee5763f887ea40146100bf575f80fd5b346100eb57806003193601126100eb5760206100d9610da9565b6040516001600160a01b039091168152f35b80fd5b50346100eb5760803660031901126100eb57610108610992565b60243567ffffffffffffffff811161027e576101289036906004016109ea565b906101316109a8565b9261013a6109d4565b936101566001600160a01b0361014e610da9565b163314610a18565b6001549081610222577f3527a119fe7f25d965cb7abc58139f031e8909b8592488c7926862d569e435c6947f85ba4ebb0990fc588bfbb287e2e810a77c858e0a69485d6a938c52c0542366676020846101b161021c96610d7c565b6001556040513060601b6bffffffffffffffffffffffff191683820190815260148101929092526101ef81603484015b03601f198101835282610a7b565b519020986001600160801b0360405191168152a16040516001600160a01b03909416969394859485610b24565b0390a280f35b60405162461bcd60e51b815260206004820152602e60248201527f696e6974206d657373616765206d75737420626520637265617465642062656660448201526d6f726520616e79206f746865727360901b6064820152608490fd5b8280fd5b50346100eb5760203660031901126100eb576102bf61029f6109be565b6102b26001600160a01b0361014e610da9565b6102ba610da9565b610e14565b80f35b5060403660031901126100eb5760043567ffffffffffffffff811161041e576102ef9036906004016109ea565b602435906001600160801b038216820361041a57600460206001600160a01b03610317610da9565b16604051928380926337792e1d60e11b82525afa90811561040f5761036c847f3527a119fe7f25d965cb7abc58139f031e8909b8592488c7926862d569e435c6949361037193602099916103e2575b50610ad0565b610f3f565b60015461037d81610d7c565b6001556040513060601b6bffffffffffffffffffffffff191687820190815260148101929092526103b181603484016101e1565b519020936103d76001600160a01b036103c861105d565b16946040519384938885610b24565b0390a2604051908152f35b6104029150893d8b11610408575b6103fa8183610a7b565b810190610ab1565b5f610366565b503d6103f0565b6040513d87823e3d90fd5b8380fd5b5080fd5b50346100eb5760a03660031901126100eb5761043c610992565b60243567ffffffffffffffff811161027e5761045c9036906004016109ea565b90916104666109a8565b608435926001600160e01b03198416840361049b576102bf946104926001600160a01b0361014e610da9565b60643593610c69565b8580fd5b50346100eb5760803660031901126100eb576104b961097c565b6044359067ffffffffffffffff821161027e576104dd6102bf9236906004016109ea565b906104e66109d4565b926104fa6001600160a01b0361014e610da9565b600435610b91565b50346100eb57806003193601126100eb576020600154604051908152f35b50346100eb57806003193601126100eb576002546040516001600160a01b039091168152602090f35b50346100eb5760203660031901126100eb576001600160a01b0361056b61105d565b167f0354817698da67944179457b89e15c1c57ca7b8cfd9d80eab1d09c258f6c497860206040516004358152a280f35b50346100eb5760203660031901126100eb576004356105c36001600160a01b0361014e610da9565b808254036105cf575080f35b6020817f5c601f20d27885120b6fed87a4c313849b86eaddc9d28e7685e2e66a9c080930928455604051908152a180f35b5060203660031901126100eb577f85ba4ebb0990fc588bfbb287e2e810a77c858e0a69485d6a938c52c05423666760206106386109be565b61064181610f3f565b6001600160801b0360405191168152a180f35b50346100eb57806003193601126100eb5760209054604051908152f35b50346107605760403660031901126107605761068b610992565b61069e6001600160a01b0361014e610da9565b6001546107c3576002546001600160a01b03166107735780763d602d80600a3d3981f3363d3d373d3d3d363d7300000062ffffff6e5af43d82803e903d91602b57fd5bf39360881c16175f5260781b1760205260018060a01b03602435603760095ff516801561076457600280546001600160a01b03191682179055803b15610760575f809160046040518094819363204a7f0760e21b83525af1801561075557610747575080f35b61075391505f90610a7b565b005b6040513d5f823e3d90fd5b5f80fd5b63b06ebf3d60e01b5f5260045ffd5b60405162461bcd60e51b815260206004820152602260248201527f6465636f64657220636f756c64206f6e6c792062652063726561746564206f6e604482015261636560f01b6064820152608490fd5b60405162461bcd60e51b815260206004820152603160248201527f6465636f64657220636f756c64206f6e6c792062652063726561746564206265604482015270666f726520696e6974206d65737361676560781b6064820152608490fd5b60603660031901126107605760243567ffffffffffffffff81116107605761084f600491369083016109ea565b61085a9291926109a8565b9260206001600160a01b0361086d610da9565b16604051948580926337792e1d60e11b82525afa9283156107555761036c857fb64dad8a89028819d048f9c75ec4c516341da68972bb68a8e1262b5443c61e7f956108be935f916108e75750610ad0565b6108e26001600160a01b036108d161105d565b169460405193849360043585610b24565b0390a2005b610900915060203d602011610408576103fa8183610a7b565b88610366565b34610760576060366003190112610760577fa217f2987a7942c2966f1fd16d39097862308325249e8b9fb4c00a430fd65783604061094261097c565b61096361094d6109a8565b9182906102ba6001600160a01b0361014e610da9565b6001600160801b038251916004358352166020820152a1005b602435906001600160a01b038216820361076057565b600435906001600160a01b038216820361076057565b604435906001600160801b038216820361076057565b600435906001600160801b038216820361076057565b606435906001600160801b038216820361076057565b9181601f840112156107605782359167ffffffffffffffff8311610760576020838186019501011161076057565b15610a1f57565b60405162461bcd60e51b815260206004820152602e60248201527f6f6e6c7920726f7574657220636f6e747261637420697320656c696769626c6560448201526d103337b91037b832b930ba34b7b760911b6064820152608490fd5b90601f8019910116810190811067ffffffffffffffff821117610a9d57604052565b634e487b7160e01b5f52604160045260245ffd5b9081602091031261076057516001600160801b03811681036107605790565b906001600160801b03809116911601906001600160801b038211610af057565b634e487b7160e01b5f52601160045260245ffd5b908060209392818452848401375f828201840152601f01601f1916010190565b92604092610b4b916001600160801b03939796978652606060208701526060860191610b04565b9416910152565b3d15610b8c573d9067ffffffffffffffff8211610a9d5760405191610b81601f8201601f191660200184610a7b565b82523d5f602084013e565b606090565b600254909493906001600160a01b031680610be8575b507f9c4ffe7286aed9eb205c8adb12b51219122c7e56c67017f312af0e15f801177393610be39160405194859460018060a01b03169785610b24565b0390a2565b5f80916040518260208201916374fad4ef60e01b83528a602482015260018060a01b038816604482015260806064820152610c4881610c2b60a482018a8d610b04565b6001600160801b038d16608483015203601f198101835282610a7b565b51926207a120f1610c57610b52565b50610c62575f610ba7565b5050505050565b94909294610c778682610e14565b6002546001600160a01b03169081610ce9575b50507fe240a19e4a4ef8e5861c0eea48f9ab2cdb47bfe98347c94ccabb9c45f7d8d1c6936001600160801b03610ccd604051958695606087526060870191610b04565b9616602084015260408301526001600160e01b031916930390a2565b604051639649744960e01b602082019081526001600160a01b03909216602482015260a060448201525f92839290918390610d61818c6001600160801b03610d3560c484018d8f610b04565b91166064830152608482018d90526001600160e01b03198a1660a483015203601f198101835282610a7b565b51926207a120f1610d70610b52565b50610c62575f80610c8a565b5f198114610af05760010190565b9081602091031261076057516001600160a01b03811681036107605790565b6040516303e21fa960e61b8152602081600481305afa908115610755575f91610dd0575090565b610df2915060203d602011610df5575b610dea8183610a7b565b810190610d8a565b90565b503d610de0565b90816020910312610760575180151581036107605790565b60049160206001600160a01b03610e29610da9565b166040519485809263088f50cf60e41b82525afa928315610755575f93610f15575b506001600160801b031680610e5f57505050565b60405163a9059cbb60e01b81526001600160a01b039283166004820152602481019190915291602091839160449183915f91165af1908115610755575f91610ee6575b5015610eaa57565b60405162461bcd60e51b81526020600482015260146024820152736661696c656420746f2073656e6420575661726160601b6044820152606490fd5b610f08915060203d602011610f0e575b610f008183610a7b565b810190610dfc565b5f610ea2565b503d610ef6565b6001600160801b03919350610f389060203d602011610df557610dea8183610a7b565b9290610e4b565b6001600160a01b03610f4f610da9565b60405163088f50cf60e41b81529116602082600481845afa918215610755576020926064915f91611040575b505f610f8561105d565b6040516323b872dd60e01b81526001600160a01b03918216600482015260248101959095526001600160801b039690961660448501529294859384929091165af1908115610755575f91611021575b5015610fdc57565b60405162461bcd60e51b815260206004820152601860248201527f6661696c656420746f20726574726965766520575661726100000000000000006044820152606490fd5b61103a915060203d602011610f0e57610f008183610a7b565b5f610fd4565b6110579150843d8611610df557610dea8183610a7b565b5f610f7b565b6002546001600160a01b03168015159081611081575b501561107d573290565b3390565b905033145f61107356fea26469706673582212209dca30c0fdebf549f81fadafbb5be9c8f652c9b50c8942508ed1283252d04a7664736f6c634300081a0033","sourceMap":"403:5600:80:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;403:5600:80;;;;;;;;;;;;;;;;-1:-1:-1;;403:5600:80;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;;;;:::i;:::-;;4995:81;-1:-1:-1;;;;;5017:8:80;;:::i;:::-;403:5600;5003:10;:22;4995:81;:::i;:::-;4552:5;403:5600;4552:10;;403:5600;;4898:52;4734:7;4833:50;403:5600;4734:7;;4898:52;4734:7;;:::i;:::-;4552:5;403:5600;;;4799:4;403:5600;;-1:-1:-1;;403:5600:80;4774:42;;;403:5600;;;;;;;;;;4774:42;403:5600;;;;4774:42;;1099:40;;4774:42;;;;;;:::i;:::-;403:5600;4764:53;;403:5600;-1:-1:-1;;;;;403:5600:80;;;;;;4833:50;403:5600;;-1:-1:-1;;;;;403:5600:80;;;;;;;;;4898:52;:::i;:::-;;;;403:5600;;;;;-1:-1:-1;;;403:5600:80;;;;;;;;;;;;;;;;;-1:-1:-1;;;403:5600:80;;;;;;;;;;;;;;;;;;-1:-1:-1;;403:5600:80;;;;4003:5;403:5600;;:::i;:::-;4995:81;-1:-1:-1;;;;;5017:8:80;;:::i;4995:81::-;3993:8;;:::i;:::-;4003:5;:::i;:::-;403:5600;;;-1:-1:-1;403:5600:80;;-1:-1:-1;;403:5600:80;;;;;;;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;403:5600:80;;;;;;;;-1:-1:-1;;;;;996:8:80;;:::i;:::-;403:5600;;;;;;;;;;988:27;;;;;;;;;1048:16;988:27;1156:57;988:27;;1048:16;988:27;403:5600;988:27;;;;403:5600;1048:16;;:::i;:::-;;:::i;:::-;1131:7;403:5600;1131:7;;;:::i;:::-;;403:5600;;;1124:4;403:5600;;-1:-1:-1;;403:5600:80;1099:40;;;403:5600;;;;;;;;;;1099:40;403:5600;;;;1099:40;403:5600;1099:40;403:5600;1089:51;;;1156:57;-1:-1:-1;;;;;1185:9:80;;:::i;:::-;403:5600;;;;1156:57;;;;;;:::i;:::-;;;;403:5600;;;;;;988:27;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;403:5600;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;403:5600:80;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;-1:-1:-1;;;;;;403:5600:80;;;;;;5086:1;;4995:81;-1:-1:-1;;;;;5017:8:80;;:::i;4995:81::-;403:5600;;5086:1;;:::i;403:5600::-;;;;;;;;;;;-1:-1:-1;;403:5600:80;;;;;;:::i;:::-;;;;;;;;;;5086:1;403:5600;;;;;;:::i;:::-;;;;:::i;:::-;;4995:81;-1:-1:-1;;;;;5017:8:80;;:::i;4995:81::-;403:5600;;5086:1;:::i;403:5600::-;;;;;;;;;;;;;;538:20;403:5600;;;;;;;;;;;;;;;;;;;;574:22;403:5600;;;-1:-1:-1;;;;;403:5600:80;;;;;;;;;;;;;;;-1:-1:-1;;403:5600:80;;;;-1:-1:-1;;;;;1707:9:80;;:::i;:::-;403:5600;1672:45;403:5600;;;;;;;1672:45;403:5600;;;;;;;;;-1:-1:-1;;403:5600:80;;;;;;4995:81;-1:-1:-1;;;;;5017:8:80;;:::i;4995:81::-;403:5600;;;2032:25;2028:123;;403:5600;;;2028:123;403:5600;;2117:23;403:5600;;;;;;;;2117:23;403:5600;;;-1:-1:-1;403:5600:80;;-1:-1:-1;;403:5600:80;;;;1851:39;403:5600;;;:::i;:::-;1828:6;;;:::i;:::-;-1:-1:-1;;;;;403:5600:80;;;;;;1851:39;403:5600;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;403:5600:80;;;;;;:::i;:::-;4995:81;-1:-1:-1;;;;;5017:8:80;;:::i;4995:81::-;403:5600;;;;4203:7;403:5600;-1:-1:-1;;;;;403:5600:80;;;3743:569:36;;;;;;;;;403:5600:80;3743:569:36;;;;403:5600:80;3743:569:36;403:5600:80;;;;;;;3743:569:36;;403:5600:80;3743:569:36;403:5600:80;4325:22:36;;4321:85;;4203:7:80;403:5600;;-1:-1:-1;;;;;;403:5600:80;;;;;4342:36;;;;;403:5600;;;;;;;;;;;;;4342:36;;;;;;;;;;403:5600;;;4342:36;;;;403:5600;4342:36;;:::i;:::-;403:5600;4342:36;403:5600;;;;;;;;;4342:36;403:5600;;;4321:85:36;4370:25;;;403:5600:80;4370:25:36;403:5600:80;;4370:25:36;403:5600:80;;;-1:-1:-1;;;403:5600:80;;;;;;;;;;;;;;;;;-1:-1:-1;;;403:5600:80;;;;;;;;;;-1:-1:-1;;;403:5600:80;;;;;;;;;;;;;;;;;-1:-1:-1;;;403:5600:80;;;;;;;;;;-1:-1:-1;;403:5600:80;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;-1:-1:-1;;;;;1379:8:80;;:::i;:::-;403:5600;;;;;;;;;;1371:27;;;;;;;;;1431:16;1371:27;1464:63;1371:27;1431:16;1371:27;403:5600;1371:27;;;1431:16;;:::i;:::-;1464:63;-1:-1:-1;;;;;1499:9:80;;:::i;:::-;403:5600;;;;;;;;;1464:63;;:::i;:::-;;;;403:5600;1371:27;;;;403:5600;1371:27;403:5600;1371:27;;;;;;;:::i;:::-;;;;403:5600;;;;;;-1:-1:-1;;403:5600:80;;;;3859:30;403:5600;;;:::i;:::-;3837:5;403:5600;;:::i;:::-;;;;4995:81;-1:-1:-1;;;;;5017:8:80;;:::i;3837:5::-;-1:-1:-1;;;;;403:5600:80;;;;;;;;;;;;3859:30;403:5600;;;;;-1:-1:-1;;;;;403:5600:80;;;;;;:::o;:::-;;;;-1:-1:-1;;;;;403:5600:80;;;;;;:::o;:::-;;;;-1:-1:-1;;;;;403:5600:80;;;;;;:::o;:::-;;;;-1:-1:-1;;;;;403:5600:80;;;;;;:::o;:::-;;;;-1:-1:-1;;;;;403:5600:80;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;:::o;:::-;;;-1:-1:-1;;;403:5600:80;;;;;;;;;;;;;;;;;-1:-1:-1;;;403:5600:80;;;;;;;;;;1099:40;;403:5600;;;;;;;;;;;;;;;;:::o;:::-;;;;-1:-1:-1;403:5600:80;;;;;-1:-1:-1;403:5600:80;;;;;;;;;;;-1:-1:-1;;;;;403:5600:80;;;;;;;:::o;:::-;;-1:-1:-1;;;;;403:5600:80;;;;;;;-1:-1:-1;;;;;403:5600:80;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;403:5600:80;;;;;;;;-1:-1:-1;;403:5600:80;;;;:::o;:::-;;;;;;-1:-1:-1;;;;;403:5600:80;;;;;;;;;;;;;;;;:::i;:::-;;;;;;:::o;:::-;;;;;;;;;;;;;;;;1099:40;403:5600;;-1:-1:-1;;403:5600:80;;;;;:::i;:::-;;;;-1:-1:-1;403:5600:80;;;;:::o;:::-;;;:::o;2163:754::-;2380:7;403:5600;2163:754;;;;-1:-1:-1;;;;;403:5600:80;;2376:479;;2163:754;403:5600;2870:40;403:5600;2870:40;403:5600;;;;;;;;;;;;2870:40;;;:::i;:::-;;;;2163:754::o;2376:479::-;-1:-1:-1;403:5600:80;;;;2457:94;;;;2480:37;;;;2457:94;;;;;;403:5600;;;;;;;;;;;;;;;;;2457:94;403:5600;;;;;;;;:::i;:::-;-1:-1:-1;;;;;403:5600:80;;;;;;2457:94;1099:40;;2457:94;;;;;;:::i;:::-;2677:36;;2695:7;2677:36;;;:::i;:::-;;2728:117;;2376:479;;;2728:117;2824:7;;;;;:::o;2923:775::-;;;;;3113:5;;;;:::i;:::-;3134:7;403:5600;-1:-1:-1;;;;;403:5600:80;;;3130:505;;2923:775;403:5600;;3650:41;403:5600;-1:-1:-1;;;;;403:5600:80;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;-1:-1:-1;;;;;;403:5600:80;;3650:41;;;2923:775::o;3130:505::-;403:5600;;-1:-1:-1;;;3195:138:80;;;;;;-1:-1:-1;;;;;403:5600:80;;;3195:138;;;403:5600;;;;;;-1:-1:-1;;;;403:5600:80;;-1:-1:-1;;3195:138:80;403:5600;;-1:-1:-1;;;;;403:5600:80;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;;403:5600:80;;;;;;3195:138;-1:-1:-1;;3195:138:80;;;;;;:::i;:::-;3459:36;;3477:7;3459:36;;;:::i;:::-;;3510:115;;3130:505;;;;403:5600;-1:-1:-1;;403:5600:80;;;;;;;:::o;:::-;;;;;;;;;;-1:-1:-1;;;;;403:5600:80;;;;;;;:::o;636:108::-;403:5600;;-1:-1:-1;;;701:36:80;;;403:5600;701:36;403:5600;722:4;701:36;;;;;;;-1:-1:-1;701:36:80;;;694:43;636:108;:::o;701:36::-;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;636:108;:::o;701:36::-;;;;;403:5600;;;;;;;;;;;;;;;;;;:::o;5685:316::-;5801:31;;;-1:-1:-1;;;;;5809:8:80;;:::i;:::-;403:5600;;;;;;;;;;5801:31;;;;;;;;;-1:-1:-1;5801:31:80;;;5685:316;403:5600;-1:-1:-1;;;;;403:5600:80;5848:10;5844:151;;5685:316;;;:::o;5844:151::-;403:5600;;-1:-1:-1;;;5889:40:80;;-1:-1:-1;;;;;403:5600:80;;;5801:31;5889:40;;403:5600;;;;;;;;;5801:31;;403:5600;;5889:40;;403:5600;;-1:-1:-1;;403:5600:80;5889:40;;;;;;;-1:-1:-1;5889:40:80;;;5844:151;403:5600;;;;5685:316::o;403:5600::-;;;-1:-1:-1;;;403:5600:80;;5801:31;;403:5600;;;;;;;;-1:-1:-1;;;5889:40:80;403:5600;;;;;;5889:40;;;;5801:31;5889:40;5801:31;5889:40;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;5801:31;-1:-1:-1;;;;;5801:31:80;;;;;;;;;;;;;;;:::i;:::-;;;;;5347:332;-1:-1:-1;;;;;5437:8:80;;:::i;:::-;403:5600;;-1:-1:-1;;;5496:36:80;;403:5600;;5496:36;403:5600;5496:36;403:5600;;5496:36;;;;;;;;;5559:58;5496:36;-1:-1:-1;5496:36:80;;;5347:332;5584:9;-1:-1:-1;5584:9:80;;:::i;:::-;403:5600;;-1:-1:-1;;;5559:58:80;;-1:-1:-1;;;;;403:5600:80;;;5496:36;5559:58;;403:5600;;;;;;;;-1:-1:-1;;;;;403:5600:80;;;;;;;;;;;;;;-1:-1:-1;;403:5600:80;5559:58;;;;;;;-1:-1:-1;5559:58:80;;;5347:332;403:5600;;;;5347:332::o;403:5600::-;;;-1:-1:-1;;;403:5600:80;;5496:36;;403:5600;;;;;;;;;;;;;5559:58;;403:5600;5559:58;;;;5496:36;5559:58;5496:36;5559:58;;;;;;;:::i;:::-;;;;5496:36;;;;;;;;;;;;;;:::i;:::-;;;;5134:207;5198:7;403:5600;-1:-1:-1;;;;;403:5600:80;5198:21;;;;;:46;;5134:207;-1:-1:-1;5194:141:80;;;5267:9;5260:16;:::o;5194:141::-;5314:10;5307:17;:::o;5198:46::-;5223:10;;;:21;5198:46;;","linkReferences":{}},"methodIdentifiers":{"claimValue(bytes32)":"91d5a64c","createDecoder(address,bytes32)":"5b1b84f7","decoder()":"9cb33005","executableBalanceBurned(uint128)":"dca4a373","executableBalanceTopUp(uint128)":"704ed542","initMessage(address,bytes,uint128,uint128)":"de1dd2e0","messageSent(bytes32,address,bytes,uint128)":"c2df6009","nonce()":"affed0e0","replySent(address,bytes,uint128,bytes32,bytes4)":"c78bde77","router()":"f887ea40","sendMessage(bytes,uint128)":"d5624222","sendReply(bytes32,bytes,uint128)":"29336f39","stateHash()":"701da98e","updateState(bytes32)":"8ea59e1d","valueClaimed(bytes32,address,uint128)":"14503e51"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"FailedDeployment\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"InsufficientBalance\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"value\",\"type\":\"uint128\"}],\"name\":\"ExecutableBalanceTopUpRequested\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"id\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"destination\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"payload\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"value\",\"type\":\"uint128\"}],\"name\":\"Message\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"id\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"source\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"payload\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"value\",\"type\":\"uint128\"}],\"name\":\"MessageQueueingRequested\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"payload\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"value\",\"type\":\"uint128\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"replyTo\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes4\",\"name\":\"replyCode\",\"type\":\"bytes4\"}],\"name\":\"Reply\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"repliedTo\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"source\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"payload\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"value\",\"type\":\"uint128\"}],\"name\":\"ReplyQueueingRequested\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"stateHash\",\"type\":\"bytes32\"}],\"name\":\"StateChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"claimedId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"value\",\"type\":\"uint128\"}],\"name\":\"ValueClaimed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"claimedId\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"source\",\"type\":\"address\"}],\"name\":\"ValueClaimingRequested\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_claimedId\",\"type\":\"bytes32\"}],\"name\":\"claimValue\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"}],\"name\":\"createDecoder\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decoder\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint128\",\"name\":\"value\",\"type\":\"uint128\"}],\"name\":\"executableBalanceBurned\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint128\",\"name\":\"_value\",\"type\":\"uint128\"}],\"name\":\"executableBalanceTopUp\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"source\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"payload\",\"type\":\"bytes\"},{\"internalType\":\"uint128\",\"name\":\"value\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"executableBalance\",\"type\":\"uint128\"}],\"name\":\"initMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"id\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"destination\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"payload\",\"type\":\"bytes\"},{\"internalType\":\"uint128\",\"name\":\"value\",\"type\":\"uint128\"}],\"name\":\"messageSent\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"nonce\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"destination\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"payload\",\"type\":\"bytes\"},{\"internalType\":\"uint128\",\"name\":\"value\",\"type\":\"uint128\"},{\"internalType\":\"bytes32\",\"name\":\"replyTo\",\"type\":\"bytes32\"},{\"internalType\":\"bytes4\",\"name\":\"replyCode\",\"type\":\"bytes4\"}],\"name\":\"replySent\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"router\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_payload\",\"type\":\"bytes\"},{\"internalType\":\"uint128\",\"name\":\"_value\",\"type\":\"uint128\"}],\"name\":\"sendMessage\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_repliedTo\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"_payload\",\"type\":\"bytes\"},{\"internalType\":\"uint128\",\"name\":\"_value\",\"type\":\"uint128\"}],\"name\":\"sendReply\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"stateHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"newStateHash\",\"type\":\"bytes32\"}],\"name\":\"updateState\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"claimedId\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"destination\",\"type\":\"address\"},{\"internalType\":\"uint128\",\"name\":\"value\",\"type\":\"uint128\"}],\"name\":\"valueClaimed\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"errors\":{\"FailedDeployment()\":[{\"details\":\"The deployment failed.\"}],\"InsufficientBalance(uint256,uint256)\":[{\"details\":\"The ETH balance of the account is not enough to perform the operation.\"}]},\"events\":{\"ExecutableBalanceTopUpRequested(uint128)\":{\"details\":\"Emitted when a user requests program's executable balance top up with his tokens. NOTE: It's event for NODES: it requires to top up balance of the program.\"},\"Message(bytes32,address,bytes,uint128)\":{\"details\":\"Emitted when the program sends outgoing message. NOTE: It's event for USERS: it informs about new message sent from program.\"},\"MessageQueueingRequested(bytes32,address,bytes,uint128)\":{\"details\":\"Emitted when a new message is sent to be queued. NOTE: It's event for NODES: it requires to insert message in the program's queue.\"},\"Reply(bytes,uint128,bytes32,bytes4)\":{\"details\":\"Emitted when the program sends reply message. NOTE: It's event for USERS: it informs about new reply sent from program.\"},\"ReplyQueueingRequested(bytes32,address,bytes,uint128)\":{\"details\":\"Emitted when a new reply is sent and requested to be verified and queued. NOTE: It's event for NODES: it requires to insert message in the program's queue, if message, exists.\"},\"StateChanged(bytes32)\":{\"details\":\"Emitted when the state hash of program is changed. NOTE: It's event for USERS: it informs about state changes.\"},\"ValueClaimed(bytes32,uint128)\":{\"details\":\"Emitted when a user succeed in claiming value request and receives balance. NOTE: It's event for USERS: it informs about value claimed.\"},\"ValueClaimingRequested(bytes32,address)\":{\"details\":\"Emitted when a reply's value is requested to be verified and claimed. NOTE: It's event for NODES: it requires to claim value from message, if exists.\"}},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/Mirror.sol\":\"Mirror\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/openzeppelin-contracts-upgradeable/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts-upgradeable/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin-foundry-upgrades/=lib/openzeppelin-foundry-upgrades/src/\",\":solidity-stringutils/=lib/openzeppelin-foundry-upgrades/lib/solidity-stringutils/\"],\"viaIR\":true},\"sources\":{\"lib/openzeppelin-contracts/contracts/proxy/Clones.sol\":{\"keccak256\":\"0x4cc853b89072428e406c60c6e8d5280b31f9d99d6caf7b041650e649746513a6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://38a1bbdb89a8f5d1820a2dcc34b5086a6e199c7a8965007345975b5db8997a64\",\"dweb:/ipfs/QmcN6yJBkoserTqAMpue55HmMCMf7dGJYUbGi8p366HqZq\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009\",\"dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x88f7b6f070ad1de2bf899da6978ed74b5038eac78c01b7359b92b60c3d965c28\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c436edb6733a036607c6f17cc590e8ee351363a8cb4c564a98d9a66392c89323\",\"dweb:/ipfs/QmcJvJR2K3EtYcKEXVpQ1WqT6TvAbVem5HR1FirAsqEXFR\"]},\"lib/openzeppelin-contracts/contracts/utils/Errors.sol\":{\"keccak256\":\"0xc452b8c0ab5a57e6ca49c4fbe6aead2460c2f8d60d58bc60af68e559b7ca1179\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0980b3b9e8cd9d9a0f2ae848f0f36a85158887e6fd961142a13b11299ae7f30a\",\"dweb:/ipfs/QmUrmDji3NR2V3YezV8xHSS3wjeBKq16FL7cHdBCnwLjKd\"]},\"src/IMirror.sol\":{\"keccak256\":\"0x82d8c114d8e994851d5fb8b21ce02fb48907eec690df5f3af4111451a3390f89\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://3c08f1764a6263ea9bc4a8c4afe14cdc2f9486157ceafc9fa6f0a5ca6c58ba37\",\"dweb:/ipfs/QmWNZJmyp6M7JrdLE1cNKC8sGdZ3YdeHvujgyVqnQp7ubC\"]},\"src/IMirrorDecoder.sol\":{\"keccak256\":\"0x95bfe42461bd03e726f894679f4b4133034a405672fe8343c3343d0964cf9072\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://a0907d84596ed62b9ea222fd841fc0259e87b17dd0b5af3f6d0d8a8f4726994d\",\"dweb:/ipfs/QmTkumKh7DBJNXrark6NBqBxCtnYmbRMGYkRyxxzpW9wKr\"]},\"src/IMirrorProxy.sol\":{\"keccak256\":\"0x56448b8905cc408f5656d47c893f3cda6623992ef1ba6a2e0a1be06b04c0b570\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://7d148123c4f51abce8b8e92c45830dd7de3829e228f37fd2e9093616dd7b2469\",\"dweb:/ipfs/QmTkohe2uFVsJiCKdu7QBFYff6L3tzvE7rTjnRhnjdgEmG\"]},\"src/IRouter.sol\":{\"keccak256\":\"0x4eea409058588f3e4d88b1687bfe367c6a6407b905e5af2df693327ab443fa7a\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://fc93c4fdb632d11e8cbfea97f2bf10d9e40fedd38649fdc020d65fd52d122421\",\"dweb:/ipfs/QmVsGD6aQ8oZqTAZJNrdQotWynFLGpfWD7zrfDSNumx87s\"]},\"src/IWrappedVara.sol\":{\"keccak256\":\"0xfc2f9955b1d8f74a98a087b490a03b86933c423eb58b840f1e3eb4cd58eac175\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://5942f66657786636ddb832587404810bf65fc757e12ddaa07393a0b3f885840f\",\"dweb:/ipfs/QmTEP15EF9zrA7bCj8cesNd8QyUPHM3XgtKJecCUjsA5Jf\"]},\"src/Mirror.sol\":{\"keccak256\":\"0xa452324ca68da3f811f891536b713a70f505719443713f4cf4d8744afe33ae63\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://d5c74fd118e791c97e8855bb269cfb2f3e4adfaae34b4a7f035e6bd6de12f730\",\"dweb:/ipfs/QmczLNS7cMEEcV2T5iKQn8UPvK9xTbQKqasGkBDzbpGw2D\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.26+commit.8a97fa7a"},"language":"Solidity","output":{"abi":[{"inputs":[],"type":"error","name":"FailedDeployment"},{"inputs":[{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"type":"error","name":"InsufficientBalance"},{"inputs":[{"internalType":"uint128","name":"value","type":"uint128","indexed":false}],"type":"event","name":"ExecutableBalanceTopUpRequested","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"id","type":"bytes32","indexed":false},{"internalType":"address","name":"destination","type":"address","indexed":true},{"internalType":"bytes","name":"payload","type":"bytes","indexed":false},{"internalType":"uint128","name":"value","type":"uint128","indexed":false}],"type":"event","name":"Message","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"id","type":"bytes32","indexed":false},{"internalType":"address","name":"source","type":"address","indexed":true},{"internalType":"bytes","name":"payload","type":"bytes","indexed":false},{"internalType":"uint128","name":"value","type":"uint128","indexed":false}],"type":"event","name":"MessageQueueingRequested","anonymous":false},{"inputs":[{"internalType":"bytes","name":"payload","type":"bytes","indexed":false},{"internalType":"uint128","name":"value","type":"uint128","indexed":false},{"internalType":"bytes32","name":"replyTo","type":"bytes32","indexed":false},{"internalType":"bytes4","name":"replyCode","type":"bytes4","indexed":true}],"type":"event","name":"Reply","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"repliedTo","type":"bytes32","indexed":false},{"internalType":"address","name":"source","type":"address","indexed":true},{"internalType":"bytes","name":"payload","type":"bytes","indexed":false},{"internalType":"uint128","name":"value","type":"uint128","indexed":false}],"type":"event","name":"ReplyQueueingRequested","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"stateHash","type":"bytes32","indexed":false}],"type":"event","name":"StateChanged","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"claimedId","type":"bytes32","indexed":false},{"internalType":"uint128","name":"value","type":"uint128","indexed":false}],"type":"event","name":"ValueClaimed","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"claimedId","type":"bytes32","indexed":false},{"internalType":"address","name":"source","type":"address","indexed":true}],"type":"event","name":"ValueClaimingRequested","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"_claimedId","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"claimValue"},{"inputs":[{"internalType":"address","name":"implementation","type":"address"},{"internalType":"bytes32","name":"salt","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"createDecoder"},{"inputs":[],"stateMutability":"view","type":"function","name":"decoder","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"uint128","name":"value","type":"uint128"}],"stateMutability":"nonpayable","type":"function","name":"executableBalanceBurned"},{"inputs":[{"internalType":"uint128","name":"_value","type":"uint128"}],"stateMutability":"payable","type":"function","name":"executableBalanceTopUp"},{"inputs":[{"internalType":"address","name":"source","type":"address"},{"internalType":"bytes","name":"payload","type":"bytes"},{"internalType":"uint128","name":"value","type":"uint128"},{"internalType":"uint128","name":"executableBalance","type":"uint128"}],"stateMutability":"nonpayable","type":"function","name":"initMessage"},{"inputs":[{"internalType":"bytes32","name":"id","type":"bytes32"},{"internalType":"address","name":"destination","type":"address"},{"internalType":"bytes","name":"payload","type":"bytes"},{"internalType":"uint128","name":"value","type":"uint128"}],"stateMutability":"nonpayable","type":"function","name":"messageSent"},{"inputs":[],"stateMutability":"view","type":"function","name":"nonce","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"destination","type":"address"},{"internalType":"bytes","name":"payload","type":"bytes"},{"internalType":"uint128","name":"value","type":"uint128"},{"internalType":"bytes32","name":"replyTo","type":"bytes32"},{"internalType":"bytes4","name":"replyCode","type":"bytes4"}],"stateMutability":"nonpayable","type":"function","name":"replySent"},{"inputs":[],"stateMutability":"view","type":"function","name":"router","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"bytes","name":"_payload","type":"bytes"},{"internalType":"uint128","name":"_value","type":"uint128"}],"stateMutability":"payable","type":"function","name":"sendMessage","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"bytes32","name":"_repliedTo","type":"bytes32"},{"internalType":"bytes","name":"_payload","type":"bytes"},{"internalType":"uint128","name":"_value","type":"uint128"}],"stateMutability":"payable","type":"function","name":"sendReply"},{"inputs":[],"stateMutability":"view","type":"function","name":"stateHash","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"bytes32","name":"newStateHash","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"updateState"},{"inputs":[{"internalType":"bytes32","name":"claimedId","type":"bytes32"},{"internalType":"address","name":"destination","type":"address"},{"internalType":"uint128","name":"value","type":"uint128"}],"stateMutability":"nonpayable","type":"function","name":"valueClaimed"}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/openzeppelin-contracts-upgradeable/lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","halmos-cheatcodes/=lib/openzeppelin-contracts-upgradeable/lib/halmos-cheatcodes/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/","openzeppelin-foundry-upgrades/=lib/openzeppelin-foundry-upgrades/src/","solidity-stringutils/=lib/openzeppelin-foundry-upgrades/lib/solidity-stringutils/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/Mirror.sol":"Mirror"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/openzeppelin-contracts/contracts/proxy/Clones.sol":{"keccak256":"0x4cc853b89072428e406c60c6e8d5280b31f9d99d6caf7b041650e649746513a6","urls":["bzz-raw://38a1bbdb89a8f5d1820a2dcc34b5086a6e199c7a8965007345975b5db8997a64","dweb:/ipfs/QmcN6yJBkoserTqAMpue55HmMCMf7dGJYUbGi8p366HqZq"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4","urls":["bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009","dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"keccak256":"0x88f7b6f070ad1de2bf899da6978ed74b5038eac78c01b7359b92b60c3d965c28","urls":["bzz-raw://c436edb6733a036607c6f17cc590e8ee351363a8cb4c564a98d9a66392c89323","dweb:/ipfs/QmcJvJR2K3EtYcKEXVpQ1WqT6TvAbVem5HR1FirAsqEXFR"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Errors.sol":{"keccak256":"0xc452b8c0ab5a57e6ca49c4fbe6aead2460c2f8d60d58bc60af68e559b7ca1179","urls":["bzz-raw://0980b3b9e8cd9d9a0f2ae848f0f36a85158887e6fd961142a13b11299ae7f30a","dweb:/ipfs/QmUrmDji3NR2V3YezV8xHSS3wjeBKq16FL7cHdBCnwLjKd"],"license":"MIT"},"src/IMirror.sol":{"keccak256":"0x82d8c114d8e994851d5fb8b21ce02fb48907eec690df5f3af4111451a3390f89","urls":["bzz-raw://3c08f1764a6263ea9bc4a8c4afe14cdc2f9486157ceafc9fa6f0a5ca6c58ba37","dweb:/ipfs/QmWNZJmyp6M7JrdLE1cNKC8sGdZ3YdeHvujgyVqnQp7ubC"],"license":"UNLICENSED"},"src/IMirrorDecoder.sol":{"keccak256":"0x95bfe42461bd03e726f894679f4b4133034a405672fe8343c3343d0964cf9072","urls":["bzz-raw://a0907d84596ed62b9ea222fd841fc0259e87b17dd0b5af3f6d0d8a8f4726994d","dweb:/ipfs/QmTkumKh7DBJNXrark6NBqBxCtnYmbRMGYkRyxxzpW9wKr"],"license":"UNLICENSED"},"src/IMirrorProxy.sol":{"keccak256":"0x56448b8905cc408f5656d47c893f3cda6623992ef1ba6a2e0a1be06b04c0b570","urls":["bzz-raw://7d148123c4f51abce8b8e92c45830dd7de3829e228f37fd2e9093616dd7b2469","dweb:/ipfs/QmTkohe2uFVsJiCKdu7QBFYff6L3tzvE7rTjnRhnjdgEmG"],"license":"UNLICENSED"},"src/IRouter.sol":{"keccak256":"0x4eea409058588f3e4d88b1687bfe367c6a6407b905e5af2df693327ab443fa7a","urls":["bzz-raw://fc93c4fdb632d11e8cbfea97f2bf10d9e40fedd38649fdc020d65fd52d122421","dweb:/ipfs/QmVsGD6aQ8oZqTAZJNrdQotWynFLGpfWD7zrfDSNumx87s"],"license":"UNLICENSED"},"src/IWrappedVara.sol":{"keccak256":"0xfc2f9955b1d8f74a98a087b490a03b86933c423eb58b840f1e3eb4cd58eac175","urls":["bzz-raw://5942f66657786636ddb832587404810bf65fc757e12ddaa07393a0b3f885840f","dweb:/ipfs/QmTEP15EF9zrA7bCj8cesNd8QyUPHM3XgtKJecCUjsA5Jf"],"license":"UNLICENSED"},"src/Mirror.sol":{"keccak256":"0xa452324ca68da3f811f891536b713a70f505719443713f4cf4d8744afe33ae63","urls":["bzz-raw://d5c74fd118e791c97e8855bb269cfb2f3e4adfaae34b4a7f035e6bd6de12f730","dweb:/ipfs/QmczLNS7cMEEcV2T5iKQn8UPvK9xTbQKqasGkBDzbpGw2D"],"license":"UNLICENSED"}},"version":1},"storageLayout":{"storage":[{"astId":54042,"contract":"src/Mirror.sol:Mirror","label":"stateHash","offset":0,"slot":"0","type":"t_bytes32"},{"astId":54044,"contract":"src/Mirror.sol:Mirror","label":"nonce","offset":0,"slot":"1","type":"t_uint256"},{"astId":54046,"contract":"src/Mirror.sol:Mirror","label":"decoder","offset":0,"slot":"2","type":"t_address"}],"types":{"t_address":{"encoding":"inplace","label":"address","numberOfBytes":"20"},"t_bytes32":{"encoding":"inplace","label":"bytes32","numberOfBytes":"32"},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"}}},"ast":{"absolutePath":"src/Mirror.sol","id":54551,"exportedSymbols":{"Clones":[41121],"IMirror":[53648],"IMirrorDecoder":[53683],"IMirrorProxy":[53691],"IRouter":[54013],"IWrappedVara":[54024],"Mirror":[54550]},"nodeType":"SourceUnit","src":"39:5965:80","nodes":[{"id":54026,"nodeType":"PragmaDirective","src":"39:24:80","nodes":[],"literals":["solidity","^","0.8",".26"]},{"id":54028,"nodeType":"ImportDirective","src":"65:48:80","nodes":[],"absolutePath":"src/IMirrorProxy.sol","file":"./IMirrorProxy.sol","nameLocation":"-1:-1:-1","scope":54551,"sourceUnit":53692,"symbolAliases":[{"foreign":{"id":54027,"name":"IMirrorProxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53691,"src":"73:12:80","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":54030,"nodeType":"ImportDirective","src":"114:38:80","nodes":[],"absolutePath":"src/IMirror.sol","file":"./IMirror.sol","nameLocation":"-1:-1:-1","scope":54551,"sourceUnit":53649,"symbolAliases":[{"foreign":{"id":54029,"name":"IMirror","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53648,"src":"122:7:80","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":54032,"nodeType":"ImportDirective","src":"153:38:80","nodes":[],"absolutePath":"src/IRouter.sol","file":"./IRouter.sol","nameLocation":"-1:-1:-1","scope":54551,"sourceUnit":54014,"symbolAliases":[{"foreign":{"id":54031,"name":"IRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54013,"src":"161:7:80","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":54034,"nodeType":"ImportDirective","src":"192:48:80","nodes":[],"absolutePath":"src/IWrappedVara.sol","file":"./IWrappedVara.sol","nameLocation":"-1:-1:-1","scope":54551,"sourceUnit":54025,"symbolAliases":[{"foreign":{"id":54033,"name":"IWrappedVara","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54024,"src":"200:12:80","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":54036,"nodeType":"ImportDirective","src":"241:52:80","nodes":[],"absolutePath":"src/IMirrorDecoder.sol","file":"./IMirrorDecoder.sol","nameLocation":"-1:-1:-1","scope":54551,"sourceUnit":53684,"symbolAliases":[{"foreign":{"id":54035,"name":"IMirrorDecoder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53683,"src":"249:14:80","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":54038,"nodeType":"ImportDirective","src":"294:64:80","nodes":[],"absolutePath":"lib/openzeppelin-contracts/contracts/proxy/Clones.sol","file":"@openzeppelin/contracts/proxy/Clones.sol","nameLocation":"-1:-1:-1","scope":54551,"sourceUnit":41122,"symbolAliases":[{"foreign":{"id":54037,"name":"Clones","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41121,"src":"302:6:80","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":54550,"nodeType":"ContractDefinition","src":"403:5600:80","nodes":[{"id":54042,"nodeType":"VariableDeclaration","src":"436:24:80","nodes":[],"baseFunctions":[53543],"constant":false,"functionSelector":"701da98e","mutability":"mutable","name":"stateHash","nameLocation":"451:9:80","scope":54550,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":54041,"name":"bytes32","nodeType":"ElementaryTypeName","src":"436:7:80","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"public"},{"id":54044,"nodeType":"VariableDeclaration","src":"538:20:80","nodes":[],"baseFunctions":[53548],"constant":false,"functionSelector":"affed0e0","mutability":"mutable","name":"nonce","nameLocation":"553:5:80","scope":54550,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":54043,"name":"uint256","nodeType":"ElementaryTypeName","src":"538:7:80","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"public"},{"id":54046,"nodeType":"VariableDeclaration","src":"574:22:80","nodes":[],"baseFunctions":[53558],"constant":false,"functionSelector":"9cb33005","mutability":"mutable","name":"decoder","nameLocation":"589:7:80","scope":54550,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":54045,"name":"address","nodeType":"ElementaryTypeName","src":"574:7:80","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"public"},{"id":54061,"nodeType":"FunctionDefinition","src":"636:108:80","nodes":[],"body":{"id":54060,"nodeType":"Block","src":"684:60:80","nodes":[],"statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"arguments":[{"id":54054,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"722:4:80","typeDescriptions":{"typeIdentifier":"t_contract$_Mirror_$54550","typeString":"contract Mirror"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Mirror_$54550","typeString":"contract Mirror"}],"id":54053,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"714:7:80","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":54052,"name":"address","nodeType":"ElementaryTypeName","src":"714:7:80","typeDescriptions":{}}},"id":54055,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"714:13:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":54051,"name":"IMirrorProxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53691,"src":"701:12:80","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IMirrorProxy_$53691_$","typeString":"type(contract IMirrorProxy)"}},"id":54056,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"701:27:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IMirrorProxy_$53691","typeString":"contract IMirrorProxy"}},"id":54057,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"729:6:80","memberName":"router","nodeType":"MemberAccess","referencedDeclaration":53690,"src":"701:34:80","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":54058,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"701:36:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":54050,"id":54059,"nodeType":"Return","src":"694:43:80"}]},"baseFunctions":[53553],"functionSelector":"f887ea40","implemented":true,"kind":"function","modifiers":[],"name":"router","nameLocation":"645:6:80","parameters":{"id":54047,"nodeType":"ParameterList","parameters":[],"src":"651:2:80"},"returnParameters":{"id":54050,"nodeType":"ParameterList","parameters":[{"constant":false,"id":54049,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":54061,"src":"675:7:80","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":54048,"name":"address","nodeType":"ElementaryTypeName","src":"675:7:80","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"674:9:80"},"scope":54550,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":54110,"nodeType":"FunctionDefinition","src":"863:377:80","nodes":[],"body":{"id":54109,"nodeType":"Block","src":"960:280:80","nodes":[],"statements":[{"assignments":[54071],"declarations":[{"constant":false,"id":54071,"mutability":"mutable","name":"baseFee","nameLocation":"978:7:80","nodeType":"VariableDeclaration","scope":54109,"src":"970:15:80","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":54070,"name":"uint128","nodeType":"ElementaryTypeName","src":"970:7:80","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"id":54078,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":54073,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54061,"src":"996:6:80","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":54074,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"996:8:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":54072,"name":"IRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54013,"src":"988:7:80","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IRouter_$54013_$","typeString":"type(contract IRouter)"}},"id":54075,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"988:17:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IRouter_$54013","typeString":"contract IRouter"}},"id":54076,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1006:7:80","memberName":"baseFee","nodeType":"MemberAccess","referencedDeclaration":53957,"src":"988:25:80","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint128_$","typeString":"function () view external returns (uint128)"}},"id":54077,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"988:27:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"VariableDeclarationStatement","src":"970:45:80"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint128","typeString":"uint128"},"id":54082,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":54080,"name":"baseFee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54071,"src":"1048:7:80","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":54081,"name":"_value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54065,"src":"1058:6:80","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"src":"1048:16:80","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint128","typeString":"uint128"}],"id":54079,"name":"_retrieveValueToRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54511,"src":"1025:22:80","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint128_$returns$__$","typeString":"function (uint128)"}},"id":54083,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1025:40:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":54084,"nodeType":"ExpressionStatement","src":"1025:40:80"},{"assignments":[54086],"declarations":[{"constant":false,"id":54086,"mutability":"mutable","name":"id","nameLocation":"1084:2:80","nodeType":"VariableDeclaration","scope":54109,"src":"1076:10:80","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":54085,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1076:7:80","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":54098,"initialValue":{"arguments":[{"arguments":[{"arguments":[{"id":54092,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"1124:4:80","typeDescriptions":{"typeIdentifier":"t_contract$_Mirror_$54550","typeString":"contract Mirror"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Mirror_$54550","typeString":"contract Mirror"}],"id":54091,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1116:7:80","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":54090,"name":"address","nodeType":"ElementaryTypeName","src":"1116:7:80","typeDescriptions":{}}},"id":54093,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1116:13:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":54095,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"1131:7:80","subExpression":{"id":54094,"name":"nonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54044,"src":"1131:5:80","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":54088,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"1099:3:80","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":54089,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1103:12:80","memberName":"encodePacked","nodeType":"MemberAccess","src":"1099:16:80","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":54096,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1099:40:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":54087,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"1089:9:80","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":54097,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1089:51:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"1076:64:80"},{"eventCall":{"arguments":[{"id":54100,"name":"id","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54086,"src":"1181:2:80","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"arguments":[],"expression":{"argumentTypes":[],"id":54101,"name":"_source","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54474,"src":"1185:7:80","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":54102,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1185:9:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":54103,"name":"_payload","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54063,"src":"1196:8:80","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},{"id":54104,"name":"_value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54065,"src":"1206:6:80","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"},{"typeIdentifier":"t_uint128","typeString":"uint128"}],"id":54099,"name":"MessageQueueingRequested","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53486,"src":"1156:24:80","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$_t_address_$_t_bytes_memory_ptr_$_t_uint128_$returns$__$","typeString":"function (bytes32,address,bytes memory,uint128)"}},"id":54105,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1156:57:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":54106,"nodeType":"EmitStatement","src":"1151:62:80"},{"expression":{"id":54107,"name":"id","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54086,"src":"1231:2:80","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":54069,"id":54108,"nodeType":"Return","src":"1224:9:80"}]},"baseFunctions":[53567],"functionSelector":"d5624222","implemented":true,"kind":"function","modifiers":[],"name":"sendMessage","nameLocation":"872:11:80","parameters":{"id":54066,"nodeType":"ParameterList","parameters":[{"constant":false,"id":54063,"mutability":"mutable","name":"_payload","nameLocation":"899:8:80","nodeType":"VariableDeclaration","scope":54110,"src":"884:23:80","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":54062,"name":"bytes","nodeType":"ElementaryTypeName","src":"884:5:80","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":54065,"mutability":"mutable","name":"_value","nameLocation":"917:6:80","nodeType":"VariableDeclaration","scope":54110,"src":"909:14:80","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":54064,"name":"uint128","nodeType":"ElementaryTypeName","src":"909:7:80","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"883:41:80"},"returnParameters":{"id":54069,"nodeType":"ParameterList","parameters":[{"constant":false,"id":54068,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":54110,"src":"951:7:80","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":54067,"name":"bytes32","nodeType":"ElementaryTypeName","src":"951:7:80","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"950:9:80"},"scope":54550,"stateMutability":"payable","virtual":false,"visibility":"external"},{"id":54143,"nodeType":"FunctionDefinition","src":"1246:288:80","nodes":[],"body":{"id":54142,"nodeType":"Block","src":"1343:191:80","nodes":[],"statements":[{"assignments":[54120],"declarations":[{"constant":false,"id":54120,"mutability":"mutable","name":"baseFee","nameLocation":"1361:7:80","nodeType":"VariableDeclaration","scope":54142,"src":"1353:15:80","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":54119,"name":"uint128","nodeType":"ElementaryTypeName","src":"1353:7:80","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"id":54127,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":54122,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54061,"src":"1379:6:80","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":54123,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1379:8:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":54121,"name":"IRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54013,"src":"1371:7:80","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IRouter_$54013_$","typeString":"type(contract IRouter)"}},"id":54124,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1371:17:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IRouter_$54013","typeString":"contract IRouter"}},"id":54125,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1389:7:80","memberName":"baseFee","nodeType":"MemberAccess","referencedDeclaration":53957,"src":"1371:25:80","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint128_$","typeString":"function () view external returns (uint128)"}},"id":54126,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1371:27:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"VariableDeclarationStatement","src":"1353:45:80"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint128","typeString":"uint128"},"id":54131,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":54129,"name":"baseFee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54120,"src":"1431:7:80","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":54130,"name":"_value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54116,"src":"1441:6:80","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"src":"1431:16:80","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint128","typeString":"uint128"}],"id":54128,"name":"_retrieveValueToRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54511,"src":"1408:22:80","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint128_$returns$__$","typeString":"function (uint128)"}},"id":54132,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1408:40:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":54133,"nodeType":"ExpressionStatement","src":"1408:40:80"},{"eventCall":{"arguments":[{"id":54135,"name":"_repliedTo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54112,"src":"1487:10:80","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"arguments":[],"expression":{"argumentTypes":[],"id":54136,"name":"_source","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54474,"src":"1499:7:80","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":54137,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1499:9:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":54138,"name":"_payload","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54114,"src":"1510:8:80","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},{"id":54139,"name":"_value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54116,"src":"1520:6:80","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"},{"typeIdentifier":"t_uint128","typeString":"uint128"}],"id":54134,"name":"ReplyQueueingRequested","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53497,"src":"1464:22:80","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$_t_address_$_t_bytes_memory_ptr_$_t_uint128_$returns$__$","typeString":"function (bytes32,address,bytes memory,uint128)"}},"id":54140,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1464:63:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":54141,"nodeType":"EmitStatement","src":"1459:68:80"}]},"baseFunctions":[53576],"functionSelector":"29336f39","implemented":true,"kind":"function","modifiers":[],"name":"sendReply","nameLocation":"1255:9:80","parameters":{"id":54117,"nodeType":"ParameterList","parameters":[{"constant":false,"id":54112,"mutability":"mutable","name":"_repliedTo","nameLocation":"1273:10:80","nodeType":"VariableDeclaration","scope":54143,"src":"1265:18:80","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":54111,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1265:7:80","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":54114,"mutability":"mutable","name":"_payload","nameLocation":"1300:8:80","nodeType":"VariableDeclaration","scope":54143,"src":"1285:23:80","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":54113,"name":"bytes","nodeType":"ElementaryTypeName","src":"1285:5:80","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":54116,"mutability":"mutable","name":"_value","nameLocation":"1318:6:80","nodeType":"VariableDeclaration","scope":54143,"src":"1310:14:80","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":54115,"name":"uint128","nodeType":"ElementaryTypeName","src":"1310:7:80","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"1264:61:80"},"returnParameters":{"id":54118,"nodeType":"ParameterList","parameters":[],"src":"1343:0:80"},"scope":54550,"stateMutability":"payable","virtual":false,"visibility":"external"},{"id":54155,"nodeType":"FunctionDefinition","src":"1540:184:80","nodes":[],"body":{"id":54154,"nodeType":"Block","src":"1589:135:80","nodes":[],"statements":[{"eventCall":{"arguments":[{"id":54149,"name":"_claimedId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54145,"src":"1695:10:80","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"arguments":[],"expression":{"argumentTypes":[],"id":54150,"name":"_source","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54474,"src":"1707:7:80","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":54151,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1707:9:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"id":54148,"name":"ValueClaimingRequested","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53504,"src":"1672:22:80","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$_t_address_$returns$__$","typeString":"function (bytes32,address)"}},"id":54152,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1672:45:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":54153,"nodeType":"EmitStatement","src":"1667:50:80"}]},"baseFunctions":[53581],"functionSelector":"91d5a64c","implemented":true,"kind":"function","modifiers":[],"name":"claimValue","nameLocation":"1549:10:80","parameters":{"id":54146,"nodeType":"ParameterList","parameters":[{"constant":false,"id":54145,"mutability":"mutable","name":"_claimedId","nameLocation":"1568:10:80","nodeType":"VariableDeclaration","scope":54155,"src":"1560:18:80","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":54144,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1560:7:80","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1559:20:80"},"returnParameters":{"id":54147,"nodeType":"ParameterList","parameters":[],"src":"1589:0:80"},"scope":54550,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":54169,"nodeType":"FunctionDefinition","src":"1730:167:80","nodes":[],"body":{"id":54168,"nodeType":"Block","src":"1795:102:80","nodes":[],"statements":[{"expression":{"arguments":[{"id":54161,"name":"_value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54157,"src":"1828:6:80","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint128","typeString":"uint128"}],"id":54160,"name":"_retrieveValueToRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54511,"src":"1805:22:80","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint128_$returns$__$","typeString":"function (uint128)"}},"id":54162,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1805:30:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":54163,"nodeType":"ExpressionStatement","src":"1805:30:80"},{"eventCall":{"arguments":[{"id":54165,"name":"_value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54157,"src":"1883:6:80","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint128","typeString":"uint128"}],"id":54164,"name":"ExecutableBalanceTopUpRequested","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53509,"src":"1851:31:80","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint128_$returns$__$","typeString":"function (uint128)"}},"id":54166,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1851:39:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":54167,"nodeType":"EmitStatement","src":"1846:44:80"}]},"baseFunctions":[53586],"functionSelector":"704ed542","implemented":true,"kind":"function","modifiers":[],"name":"executableBalanceTopUp","nameLocation":"1739:22:80","parameters":{"id":54158,"nodeType":"ParameterList","parameters":[{"constant":false,"id":54157,"mutability":"mutable","name":"_value","nameLocation":"1770:6:80","nodeType":"VariableDeclaration","scope":54169,"src":"1762:14:80","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":54156,"name":"uint128","nodeType":"ElementaryTypeName","src":"1762:7:80","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"1761:16:80"},"returnParameters":{"id":54159,"nodeType":"ParameterList","parameters":[],"src":"1795:0:80"},"scope":54550,"stateMutability":"payable","virtual":false,"visibility":"external"},{"id":54190,"nodeType":"FunctionDefinition","src":"1955:202:80","nodes":[],"body":{"id":54189,"nodeType":"Block","src":"2018:139:80","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":54178,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":54176,"name":"stateHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54042,"src":"2032:9:80","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":54177,"name":"newStateHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54171,"src":"2045:12:80","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"2032:25:80","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":54188,"nodeType":"IfStatement","src":"2028:123:80","trueBody":{"id":54187,"nodeType":"Block","src":"2059:92:80","statements":[{"expression":{"id":54181,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":54179,"name":"stateHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54042,"src":"2073:9:80","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":54180,"name":"newStateHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54171,"src":"2085:12:80","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"2073:24:80","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":54182,"nodeType":"ExpressionStatement","src":"2073:24:80"},{"eventCall":{"arguments":[{"id":54184,"name":"stateHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54042,"src":"2130:9:80","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":54183,"name":"StateChanged","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53475,"src":"2117:12:80","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$returns$__$","typeString":"function (bytes32)"}},"id":54185,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2117:23:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":54186,"nodeType":"EmitStatement","src":"2112:28:80"}]}}]},"baseFunctions":[53591],"functionSelector":"8ea59e1d","implemented":true,"kind":"function","modifiers":[{"id":54174,"kind":"modifierInvocation","modifierName":{"id":54173,"name":"onlyRouter","nameLocations":["2007:10:80"],"nodeType":"IdentifierPath","referencedDeclaration":54448,"src":"2007:10:80"},"nodeType":"ModifierInvocation","src":"2007:10:80"}],"name":"updateState","nameLocation":"1964:11:80","parameters":{"id":54172,"nodeType":"ParameterList","parameters":[{"constant":false,"id":54171,"mutability":"mutable","name":"newStateHash","nameLocation":"1984:12:80","nodeType":"VariableDeclaration","scope":54190,"src":"1976:20:80","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":54170,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1976:7:80","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1975:22:80"},"returnParameters":{"id":54175,"nodeType":"ParameterList","parameters":[],"src":"2018:0:80"},"scope":54550,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":54245,"nodeType":"FunctionDefinition","src":"2163:754:80","nodes":[],"body":{"id":54244,"nodeType":"Block","src":"2276:641:80","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":54208,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":54203,"name":"decoder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54046,"src":"2380:7:80","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":54206,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2399:1:80","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":54205,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2391:7:80","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":54204,"name":"address","nodeType":"ElementaryTypeName","src":"2391:7:80","typeDescriptions":{}}},"id":54207,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2391:10:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2380:21:80","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":54236,"nodeType":"IfStatement","src":"2376:479:80","trueBody":{"id":54235,"nodeType":"Block","src":"2403:452:80","statements":[{"assignments":[54210],"declarations":[{"constant":false,"id":54210,"mutability":"mutable","name":"callData","nameLocation":"2430:8:80","nodeType":"VariableDeclaration","scope":54235,"src":"2417:21:80","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":54209,"name":"bytes","nodeType":"ElementaryTypeName","src":"2417:5:80","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":54221,"initialValue":{"arguments":[{"expression":{"expression":{"id":54213,"name":"IMirrorDecoder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53683,"src":"2480:14:80","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IMirrorDecoder_$53683_$","typeString":"type(contract IMirrorDecoder)"}},"id":54214,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2495:13:80","memberName":"onMessageSent","nodeType":"MemberAccess","referencedDeclaration":53669,"src":"2480:28:80","typeDescriptions":{"typeIdentifier":"t_function_declaration_nonpayable$_t_bytes32_$_t_address_$_t_bytes_calldata_ptr_$_t_uint128_$returns$__$","typeString":"function IMirrorDecoder.onMessageSent(bytes32,address,bytes calldata,uint128)"}},"id":54215,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2509:8:80","memberName":"selector","nodeType":"MemberAccess","src":"2480:37:80","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},{"id":54216,"name":"id","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54192,"src":"2519:2:80","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":54217,"name":"destination","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54194,"src":"2523:11:80","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":54218,"name":"payload","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54196,"src":"2536:7:80","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},{"id":54219,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54198,"src":"2545:5:80","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"},{"typeIdentifier":"t_uint128","typeString":"uint128"}],"expression":{"id":54211,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"2457:3:80","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":54212,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2461:18:80","memberName":"encodeWithSelector","nodeType":"MemberAccess","src":"2457:22:80","typeDescriptions":{"typeIdentifier":"t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes4) pure returns (bytes memory)"}},"id":54220,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2457:94:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"2417:134:80"},{"assignments":[54223,null],"declarations":[{"constant":false,"id":54223,"mutability":"mutable","name":"success","nameLocation":"2665:7:80","nodeType":"VariableDeclaration","scope":54235,"src":"2660:12:80","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":54222,"name":"bool","nodeType":"ElementaryTypeName","src":"2660:4:80","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},null],"id":54230,"initialValue":{"arguments":[{"id":54228,"name":"callData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54210,"src":"2704:8:80","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":54224,"name":"decoder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54046,"src":"2677:7:80","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":54225,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2685:4:80","memberName":"call","nodeType":"MemberAccess","src":"2677:12:80","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":54227,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["gas"],"nodeType":"FunctionCallOptions","options":[{"hexValue":"3530305f303030","id":54226,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2695:7:80","typeDescriptions":{"typeIdentifier":"t_rational_500000_by_1","typeString":"int_const 500000"},"value":"500_000"}],"src":"2677:26:80","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$gas","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":54229,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2677:36:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"2659:54:80"},{"condition":{"id":54231,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54223,"src":"2732:7:80","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":54234,"nodeType":"IfStatement","src":"2728:117:80","trueBody":{"id":54233,"nodeType":"Block","src":"2741:104:80","statements":[{"functionReturnParameters":54202,"id":54232,"nodeType":"Return","src":"2824:7:80"}]}}]}},{"eventCall":{"arguments":[{"id":54238,"name":"id","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54192,"src":"2878:2:80","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":54239,"name":"destination","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54194,"src":"2882:11:80","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":54240,"name":"payload","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54196,"src":"2895:7:80","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},{"id":54241,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54198,"src":"2904:5:80","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"},{"typeIdentifier":"t_uint128","typeString":"uint128"}],"id":54237,"name":"Message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53520,"src":"2870:7:80","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$_t_address_$_t_bytes_memory_ptr_$_t_uint128_$returns$__$","typeString":"function (bytes32,address,bytes memory,uint128)"}},"id":54242,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2870:40:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":54243,"nodeType":"EmitStatement","src":"2865:45:80"}]},"baseFunctions":[53602],"functionSelector":"c2df6009","implemented":true,"kind":"function","modifiers":[{"id":54201,"kind":"modifierInvocation","modifierName":{"id":54200,"name":"onlyRouter","nameLocations":["2265:10:80"],"nodeType":"IdentifierPath","referencedDeclaration":54448,"src":"2265:10:80"},"nodeType":"ModifierInvocation","src":"2265:10:80"}],"name":"messageSent","nameLocation":"2172:11:80","parameters":{"id":54199,"nodeType":"ParameterList","parameters":[{"constant":false,"id":54192,"mutability":"mutable","name":"id","nameLocation":"2192:2:80","nodeType":"VariableDeclaration","scope":54245,"src":"2184:10:80","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":54191,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2184:7:80","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":54194,"mutability":"mutable","name":"destination","nameLocation":"2204:11:80","nodeType":"VariableDeclaration","scope":54245,"src":"2196:19:80","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":54193,"name":"address","nodeType":"ElementaryTypeName","src":"2196:7:80","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":54196,"mutability":"mutable","name":"payload","nameLocation":"2232:7:80","nodeType":"VariableDeclaration","scope":54245,"src":"2217:22:80","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":54195,"name":"bytes","nodeType":"ElementaryTypeName","src":"2217:5:80","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":54198,"mutability":"mutable","name":"value","nameLocation":"2249:5:80","nodeType":"VariableDeclaration","scope":54245,"src":"2241:13:80","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":54197,"name":"uint128","nodeType":"ElementaryTypeName","src":"2241:7:80","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"2183:72:80"},"returnParameters":{"id":54202,"nodeType":"ParameterList","parameters":[],"src":"2276:0:80"},"scope":54550,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":54308,"nodeType":"FunctionDefinition","src":"2923:775:80","nodes":[],"body":{"id":54307,"nodeType":"Block","src":"3077:621:80","nodes":[],"statements":[{"expression":{"arguments":[{"id":54261,"name":"destination","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54247,"src":"3100:11:80","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":54262,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54251,"src":"3113:5:80","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint128","typeString":"uint128"}],"id":54260,"name":"_sendValueTo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54549,"src":"3087:12:80","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint128_$returns$__$","typeString":"function (address,uint128)"}},"id":54263,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3087:32:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":54264,"nodeType":"ExpressionStatement","src":"3087:32:80"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":54270,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":54265,"name":"decoder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54046,"src":"3134:7:80","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":54268,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3153:1:80","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":54267,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3145:7:80","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":54266,"name":"address","nodeType":"ElementaryTypeName","src":"3145:7:80","typeDescriptions":{}}},"id":54269,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3145:10:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3134:21:80","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":54299,"nodeType":"IfStatement","src":"3130:505:80","trueBody":{"id":54298,"nodeType":"Block","src":"3157:478:80","statements":[{"assignments":[54272],"declarations":[{"constant":false,"id":54272,"mutability":"mutable","name":"callData","nameLocation":"3184:8:80","nodeType":"VariableDeclaration","scope":54298,"src":"3171:21:80","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":54271,"name":"bytes","nodeType":"ElementaryTypeName","src":"3171:5:80","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":54284,"initialValue":{"arguments":[{"expression":{"expression":{"id":54275,"name":"IMirrorDecoder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53683,"src":"3235:14:80","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IMirrorDecoder_$53683_$","typeString":"type(contract IMirrorDecoder)"}},"id":54276,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3250:11:80","memberName":"onReplySent","nodeType":"MemberAccess","referencedDeclaration":53682,"src":"3235:26:80","typeDescriptions":{"typeIdentifier":"t_function_declaration_nonpayable$_t_address_$_t_bytes_calldata_ptr_$_t_uint128_$_t_bytes32_$_t_bytes4_$returns$__$","typeString":"function IMirrorDecoder.onReplySent(address,bytes calldata,uint128,bytes32,bytes4)"}},"id":54277,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3262:8:80","memberName":"selector","nodeType":"MemberAccess","src":"3235:35:80","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},{"id":54278,"name":"destination","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54247,"src":"3272:11:80","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":54279,"name":"payload","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54249,"src":"3285:7:80","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},{"id":54280,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54251,"src":"3294:5:80","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"id":54281,"name":"replyTo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54253,"src":"3301:7:80","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":54282,"name":"replyCode","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54255,"src":"3310:9:80","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"},{"typeIdentifier":"t_uint128","typeString":"uint128"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"expression":{"id":54273,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"3195:3:80","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":54274,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3199:18:80","memberName":"encodeWithSelector","nodeType":"MemberAccess","src":"3195:22:80","typeDescriptions":{"typeIdentifier":"t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes4) pure returns (bytes memory)"}},"id":54283,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3195:138:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"3171:162:80"},{"assignments":[54286,null],"declarations":[{"constant":false,"id":54286,"mutability":"mutable","name":"success","nameLocation":"3447:7:80","nodeType":"VariableDeclaration","scope":54298,"src":"3442:12:80","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":54285,"name":"bool","nodeType":"ElementaryTypeName","src":"3442:4:80","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},null],"id":54293,"initialValue":{"arguments":[{"id":54291,"name":"callData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54272,"src":"3486:8:80","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":54287,"name":"decoder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54046,"src":"3459:7:80","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":54288,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3467:4:80","memberName":"call","nodeType":"MemberAccess","src":"3459:12:80","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":54290,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["gas"],"nodeType":"FunctionCallOptions","options":[{"hexValue":"3530305f303030","id":54289,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3477:7:80","typeDescriptions":{"typeIdentifier":"t_rational_500000_by_1","typeString":"int_const 500000"},"value":"500_000"}],"src":"3459:26:80","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$gas","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":54292,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3459:36:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"3441:54:80"},{"condition":{"id":54294,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54286,"src":"3514:7:80","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":54297,"nodeType":"IfStatement","src":"3510:115:80","trueBody":{"id":54296,"nodeType":"Block","src":"3523:102:80","statements":[{"functionReturnParameters":54259,"id":54295,"nodeType":"Return","src":"3604:7:80"}]}}]}},{"eventCall":{"arguments":[{"id":54301,"name":"payload","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54249,"src":"3656:7:80","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},{"id":54302,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54251,"src":"3665:5:80","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"id":54303,"name":"replyTo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54253,"src":"3672:7:80","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":54304,"name":"replyCode","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54255,"src":"3681:9:80","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"},{"typeIdentifier":"t_uint128","typeString":"uint128"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"id":54300,"name":"Reply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53531,"src":"3650:5:80","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes_memory_ptr_$_t_uint128_$_t_bytes32_$_t_bytes4_$returns$__$","typeString":"function (bytes memory,uint128,bytes32,bytes4)"}},"id":54305,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3650:41:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":54306,"nodeType":"EmitStatement","src":"3645:46:80"}]},"baseFunctions":[53615],"functionSelector":"c78bde77","implemented":true,"kind":"function","modifiers":[{"id":54258,"kind":"modifierInvocation","modifierName":{"id":54257,"name":"onlyRouter","nameLocations":["3062:10:80"],"nodeType":"IdentifierPath","referencedDeclaration":54448,"src":"3062:10:80"},"nodeType":"ModifierInvocation","src":"3062:10:80"}],"name":"replySent","nameLocation":"2932:9:80","parameters":{"id":54256,"nodeType":"ParameterList","parameters":[{"constant":false,"id":54247,"mutability":"mutable","name":"destination","nameLocation":"2950:11:80","nodeType":"VariableDeclaration","scope":54308,"src":"2942:19:80","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":54246,"name":"address","nodeType":"ElementaryTypeName","src":"2942:7:80","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":54249,"mutability":"mutable","name":"payload","nameLocation":"2978:7:80","nodeType":"VariableDeclaration","scope":54308,"src":"2963:22:80","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":54248,"name":"bytes","nodeType":"ElementaryTypeName","src":"2963:5:80","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":54251,"mutability":"mutable","name":"value","nameLocation":"2995:5:80","nodeType":"VariableDeclaration","scope":54308,"src":"2987:13:80","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":54250,"name":"uint128","nodeType":"ElementaryTypeName","src":"2987:7:80","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":54253,"mutability":"mutable","name":"replyTo","nameLocation":"3010:7:80","nodeType":"VariableDeclaration","scope":54308,"src":"3002:15:80","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":54252,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3002:7:80","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":54255,"mutability":"mutable","name":"replyCode","nameLocation":"3026:9:80","nodeType":"VariableDeclaration","scope":54308,"src":"3019:16:80","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":54254,"name":"bytes4","nodeType":"ElementaryTypeName","src":"3019:6:80","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"2941:95:80"},"returnParameters":{"id":54259,"nodeType":"ParameterList","parameters":[],"src":"3077:0:80"},"scope":54550,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":54330,"nodeType":"FunctionDefinition","src":"3704:192:80","nodes":[],"body":{"id":54329,"nodeType":"Block","src":"3801:95:80","nodes":[],"statements":[{"expression":{"arguments":[{"id":54320,"name":"destination","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54312,"src":"3824:11:80","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":54321,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54314,"src":"3837:5:80","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint128","typeString":"uint128"}],"id":54319,"name":"_sendValueTo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54549,"src":"3811:12:80","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint128_$returns$__$","typeString":"function (address,uint128)"}},"id":54322,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3811:32:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":54323,"nodeType":"ExpressionStatement","src":"3811:32:80"},{"eventCall":{"arguments":[{"id":54325,"name":"claimedId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54310,"src":"3872:9:80","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":54326,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54314,"src":"3883:5:80","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint128","typeString":"uint128"}],"id":54324,"name":"ValueClaimed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53538,"src":"3859:12:80","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$_t_uint128_$returns$__$","typeString":"function (bytes32,uint128)"}},"id":54327,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3859:30:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":54328,"nodeType":"EmitStatement","src":"3854:35:80"}]},"baseFunctions":[53624],"functionSelector":"14503e51","implemented":true,"kind":"function","modifiers":[{"id":54317,"kind":"modifierInvocation","modifierName":{"id":54316,"name":"onlyRouter","nameLocations":["3790:10:80"],"nodeType":"IdentifierPath","referencedDeclaration":54448,"src":"3790:10:80"},"nodeType":"ModifierInvocation","src":"3790:10:80"}],"name":"valueClaimed","nameLocation":"3713:12:80","parameters":{"id":54315,"nodeType":"ParameterList","parameters":[{"constant":false,"id":54310,"mutability":"mutable","name":"claimedId","nameLocation":"3734:9:80","nodeType":"VariableDeclaration","scope":54330,"src":"3726:17:80","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":54309,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3726:7:80","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":54312,"mutability":"mutable","name":"destination","nameLocation":"3753:11:80","nodeType":"VariableDeclaration","scope":54330,"src":"3745:19:80","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":54311,"name":"address","nodeType":"ElementaryTypeName","src":"3745:7:80","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":54314,"mutability":"mutable","name":"value","nameLocation":"3774:5:80","nodeType":"VariableDeclaration","scope":54330,"src":"3766:13:80","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":54313,"name":"uint128","nodeType":"ElementaryTypeName","src":"3766:7:80","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"3725:55:80"},"returnParameters":{"id":54318,"nodeType":"ParameterList","parameters":[],"src":"3801:0:80"},"scope":54550,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":54344,"nodeType":"FunctionDefinition","src":"3902:114:80","nodes":[],"body":{"id":54343,"nodeType":"Block","src":"3970:46:80","nodes":[],"statements":[{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":54338,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54061,"src":"3993:6:80","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":54339,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3993:8:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":54340,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54332,"src":"4003:5:80","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint128","typeString":"uint128"}],"id":54337,"name":"_sendValueTo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54549,"src":"3980:12:80","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint128_$returns$__$","typeString":"function (address,uint128)"}},"id":54341,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3980:29:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":54342,"nodeType":"ExpressionStatement","src":"3980:29:80"}]},"baseFunctions":[53629],"functionSelector":"dca4a373","implemented":true,"kind":"function","modifiers":[{"id":54335,"kind":"modifierInvocation","modifierName":{"id":54334,"name":"onlyRouter","nameLocations":["3959:10:80"],"nodeType":"IdentifierPath","referencedDeclaration":54448,"src":"3959:10:80"},"nodeType":"ModifierInvocation","src":"3959:10:80"}],"name":"executableBalanceBurned","nameLocation":"3911:23:80","parameters":{"id":54333,"nodeType":"ParameterList","parameters":[{"constant":false,"id":54332,"mutability":"mutable","name":"value","nameLocation":"3943:5:80","nodeType":"VariableDeclaration","scope":54344,"src":"3935:13:80","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":54331,"name":"uint128","nodeType":"ElementaryTypeName","src":"3935:7:80","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"3934:15:80"},"returnParameters":{"id":54336,"nodeType":"ParameterList","parameters":[],"src":"3970:0:80"},"scope":54550,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":54385,"nodeType":"FunctionDefinition","src":"4022:363:80","nodes":[],"body":{"id":54384,"nodeType":"Block","src":"4103:282:80","nodes":[],"statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":54356,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":54354,"name":"nonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54044,"src":"4121:5:80","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":54355,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4130:1:80","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"4121:10:80","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"6465636f64657220636f756c64206f6e6c792062652063726561746564206265666f726520696e6974206d657373616765","id":54357,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4133:51:80","typeDescriptions":{"typeIdentifier":"t_stringliteral_6179111dcaf1477c3041b02777f68e6f9b47b46bbab14442425a87a2628d248f","typeString":"literal_string \"decoder could only be created before init message\""},"value":"decoder could only be created before init message"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_6179111dcaf1477c3041b02777f68e6f9b47b46bbab14442425a87a2628d248f","typeString":"literal_string \"decoder could only be created before init message\""}],"id":54353,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"4113:7:80","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":54358,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4113:72:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":54359,"nodeType":"ExpressionStatement","src":"4113:72:80"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":54366,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":54361,"name":"decoder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54046,"src":"4203:7:80","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":54364,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4222:1:80","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":54363,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4214:7:80","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":54362,"name":"address","nodeType":"ElementaryTypeName","src":"4214:7:80","typeDescriptions":{}}},"id":54365,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4214:10:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4203:21:80","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"6465636f64657220636f756c64206f6e6c792062652063726561746564206f6e6365","id":54367,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4226:36:80","typeDescriptions":{"typeIdentifier":"t_stringliteral_2e378c5f64e230407f2ea4b317edbd32f061bf14b6bede40dc75fef40a2c3f34","typeString":"literal_string \"decoder could only be created once\""},"value":"decoder could only be created once"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_2e378c5f64e230407f2ea4b317edbd32f061bf14b6bede40dc75fef40a2c3f34","typeString":"literal_string \"decoder could only be created once\""}],"id":54360,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"4195:7:80","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":54368,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4195:68:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":54369,"nodeType":"ExpressionStatement","src":"4195:68:80"},{"expression":{"id":54376,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":54370,"name":"decoder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54046,"src":"4274:7:80","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":54373,"name":"implementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54346,"src":"4310:14:80","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":54374,"name":"salt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54348,"src":"4326:4:80","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":54371,"name":"Clones","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41121,"src":"4284:6:80","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Clones_$41121_$","typeString":"type(library Clones)"}},"id":54372,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4291:18:80","memberName":"cloneDeterministic","nodeType":"MemberAccess","referencedDeclaration":41039,"src":"4284:25:80","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes32_$returns$_t_address_$","typeString":"function (address,bytes32) returns (address)"}},"id":54375,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4284:47:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4274:57:80","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":54377,"nodeType":"ExpressionStatement","src":"4274:57:80"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":54379,"name":"decoder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54046,"src":"4357:7:80","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":54378,"name":"IMirrorDecoder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53683,"src":"4342:14:80","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IMirrorDecoder_$53683_$","typeString":"type(contract IMirrorDecoder)"}},"id":54380,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4342:23:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IMirrorDecoder_$53683","typeString":"contract IMirrorDecoder"}},"id":54381,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4366:10:80","memberName":"initialize","nodeType":"MemberAccess","referencedDeclaration":53653,"src":"4342:34:80","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$__$returns$__$","typeString":"function () external"}},"id":54382,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4342:36:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":54383,"nodeType":"ExpressionStatement","src":"4342:36:80"}]},"baseFunctions":[53636],"functionSelector":"5b1b84f7","implemented":true,"kind":"function","modifiers":[{"id":54351,"kind":"modifierInvocation","modifierName":{"id":54350,"name":"onlyRouter","nameLocations":["4092:10:80"],"nodeType":"IdentifierPath","referencedDeclaration":54448,"src":"4092:10:80"},"nodeType":"ModifierInvocation","src":"4092:10:80"}],"name":"createDecoder","nameLocation":"4031:13:80","parameters":{"id":54349,"nodeType":"ParameterList","parameters":[{"constant":false,"id":54346,"mutability":"mutable","name":"implementation","nameLocation":"4053:14:80","nodeType":"VariableDeclaration","scope":54385,"src":"4045:22:80","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":54345,"name":"address","nodeType":"ElementaryTypeName","src":"4045:7:80","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":54348,"mutability":"mutable","name":"salt","nameLocation":"4077:4:80","nodeType":"VariableDeclaration","scope":54385,"src":"4069:12:80","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":54347,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4069:7:80","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"4044:38:80"},"returnParameters":{"id":54352,"nodeType":"ParameterList","parameters":[],"src":"4103:0:80"},"scope":54550,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":54435,"nodeType":"FunctionDefinition","src":"4391:566:80","nodes":[],"body":{"id":54434,"nodeType":"Block","src":"4534:423:80","nodes":[],"statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":54401,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":54399,"name":"nonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54044,"src":"4552:5:80","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":54400,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4561:1:80","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"4552:10:80","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"696e6974206d657373616765206d7573742062652063726561746564206265666f726520616e79206f7468657273","id":54402,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4564:48:80","typeDescriptions":{"typeIdentifier":"t_stringliteral_f66d837affa62c092147eee2ea617e19f402b656aab0578ab0acad8d1e9a6341","typeString":"literal_string \"init message must be created before any others\""},"value":"init message must be created before any others"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_f66d837affa62c092147eee2ea617e19f402b656aab0578ab0acad8d1e9a6341","typeString":"literal_string \"init message must be created before any others\""}],"id":54398,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"4544:7:80","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":54403,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4544:69:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":54404,"nodeType":"ExpressionStatement","src":"4544:69:80"},{"assignments":[54406],"declarations":[{"constant":false,"id":54406,"mutability":"mutable","name":"initNonce","nameLocation":"4722:9:80","nodeType":"VariableDeclaration","scope":54434,"src":"4714:17:80","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":54405,"name":"uint256","nodeType":"ElementaryTypeName","src":"4714:7:80","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":54409,"initialValue":{"id":54408,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"4734:7:80","subExpression":{"id":54407,"name":"nonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54044,"src":"4734:5:80","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"4714:27:80"},{"assignments":[54411],"declarations":[{"constant":false,"id":54411,"mutability":"mutable","name":"id","nameLocation":"4759:2:80","nodeType":"VariableDeclaration","scope":54434,"src":"4751:10:80","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":54410,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4751:7:80","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":54422,"initialValue":{"arguments":[{"arguments":[{"arguments":[{"id":54417,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"4799:4:80","typeDescriptions":{"typeIdentifier":"t_contract$_Mirror_$54550","typeString":"contract Mirror"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Mirror_$54550","typeString":"contract Mirror"}],"id":54416,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4791:7:80","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":54415,"name":"address","nodeType":"ElementaryTypeName","src":"4791:7:80","typeDescriptions":{}}},"id":54418,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4791:13:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":54419,"name":"initNonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54406,"src":"4806:9:80","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":54413,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"4774:3:80","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":54414,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4778:12:80","memberName":"encodePacked","nodeType":"MemberAccess","src":"4774:16:80","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":54420,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4774:42:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":54412,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"4764:9:80","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":54421,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4764:53:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"4751:66:80"},{"eventCall":{"arguments":[{"id":54424,"name":"executableBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54393,"src":"4865:17:80","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint128","typeString":"uint128"}],"id":54423,"name":"ExecutableBalanceTopUpRequested","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53509,"src":"4833:31:80","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint128_$returns$__$","typeString":"function (uint128)"}},"id":54425,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4833:50:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":54426,"nodeType":"EmitStatement","src":"4828:55:80"},{"eventCall":{"arguments":[{"id":54428,"name":"id","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54411,"src":"4923:2:80","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":54429,"name":"source","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54387,"src":"4927:6:80","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":54430,"name":"payload","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54389,"src":"4935:7:80","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},{"id":54431,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54391,"src":"4944:5:80","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"},{"typeIdentifier":"t_uint128","typeString":"uint128"}],"id":54427,"name":"MessageQueueingRequested","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53486,"src":"4898:24:80","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$_t_address_$_t_bytes_memory_ptr_$_t_uint128_$returns$__$","typeString":"function (bytes32,address,bytes memory,uint128)"}},"id":54432,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4898:52:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":54433,"nodeType":"EmitStatement","src":"4893:57:80"}]},"baseFunctions":[53647],"functionSelector":"de1dd2e0","implemented":true,"kind":"function","modifiers":[{"id":54396,"kind":"modifierInvocation","modifierName":{"id":54395,"name":"onlyRouter","nameLocations":["4519:10:80"],"nodeType":"IdentifierPath","referencedDeclaration":54448,"src":"4519:10:80"},"nodeType":"ModifierInvocation","src":"4519:10:80"}],"name":"initMessage","nameLocation":"4400:11:80","parameters":{"id":54394,"nodeType":"ParameterList","parameters":[{"constant":false,"id":54387,"mutability":"mutable","name":"source","nameLocation":"4420:6:80","nodeType":"VariableDeclaration","scope":54435,"src":"4412:14:80","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":54386,"name":"address","nodeType":"ElementaryTypeName","src":"4412:7:80","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":54389,"mutability":"mutable","name":"payload","nameLocation":"4443:7:80","nodeType":"VariableDeclaration","scope":54435,"src":"4428:22:80","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":54388,"name":"bytes","nodeType":"ElementaryTypeName","src":"4428:5:80","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":54391,"mutability":"mutable","name":"value","nameLocation":"4460:5:80","nodeType":"VariableDeclaration","scope":54435,"src":"4452:13:80","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":54390,"name":"uint128","nodeType":"ElementaryTypeName","src":"4452:7:80","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":54393,"mutability":"mutable","name":"executableBalance","nameLocation":"4475:17:80","nodeType":"VariableDeclaration","scope":54435,"src":"4467:25:80","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":54392,"name":"uint128","nodeType":"ElementaryTypeName","src":"4467:7:80","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"4411:82:80"},"returnParameters":{"id":54397,"nodeType":"ParameterList","parameters":[],"src":"4534:0:80"},"scope":54550,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":54448,"nodeType":"ModifierDefinition","src":"4963:131:80","nodes":[],"body":{"id":54447,"nodeType":"Block","src":"4985:109:80","nodes":[],"statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":54442,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":54438,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"5003:3:80","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":54439,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5007:6:80","memberName":"sender","nodeType":"MemberAccess","src":"5003:10:80","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":54440,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54061,"src":"5017:6:80","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":54441,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5017:8:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"5003:22:80","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"6f6e6c7920726f7574657220636f6e747261637420697320656c696769626c6520666f72206f7065726174696f6e","id":54443,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5027:48:80","typeDescriptions":{"typeIdentifier":"t_stringliteral_64d2230e88596248f8ffc0c335875e1b5d3e7ef288684b79c0f3f409577b1f91","typeString":"literal_string \"only router contract is eligible for operation\""},"value":"only router contract is eligible for operation"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_64d2230e88596248f8ffc0c335875e1b5d3e7ef288684b79c0f3f409577b1f91","typeString":"literal_string \"only router contract is eligible for operation\""}],"id":54437,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"4995:7:80","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":54444,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4995:81:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":54445,"nodeType":"ExpressionStatement","src":"4995:81:80"},{"id":54446,"nodeType":"PlaceholderStatement","src":"5086:1:80"}]},"name":"onlyRouter","nameLocation":"4972:10:80","parameters":{"id":54436,"nodeType":"ParameterList","parameters":[],"src":"4982:2:80"},"virtual":false,"visibility":"internal"},{"id":54474,"nodeType":"FunctionDefinition","src":"5134:207:80","nodes":[],"body":{"id":54473,"nodeType":"Block","src":"5184:157:80","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":54463,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":54458,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":54453,"name":"decoder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54046,"src":"5198:7:80","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":54456,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5217:1:80","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":54455,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5209:7:80","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":54454,"name":"address","nodeType":"ElementaryTypeName","src":"5209:7:80","typeDescriptions":{}}},"id":54457,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5209:10:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"5198:21:80","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":54462,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":54459,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"5223:3:80","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":54460,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5227:6:80","memberName":"sender","nodeType":"MemberAccess","src":"5223:10:80","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":54461,"name":"decoder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54046,"src":"5237:7:80","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"5223:21:80","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"5198:46:80","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":54471,"nodeType":"Block","src":"5293:42:80","statements":[{"expression":{"expression":{"id":54468,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"5314:3:80","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":54469,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5318:6:80","memberName":"sender","nodeType":"MemberAccess","src":"5314:10:80","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":54452,"id":54470,"nodeType":"Return","src":"5307:17:80"}]},"id":54472,"nodeType":"IfStatement","src":"5194:141:80","trueBody":{"id":54467,"nodeType":"Block","src":"5246:41:80","statements":[{"expression":{"expression":{"id":54464,"name":"tx","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-26,"src":"5267:2:80","typeDescriptions":{"typeIdentifier":"t_magic_transaction","typeString":"tx"}},"id":54465,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5270:6:80","memberName":"origin","nodeType":"MemberAccess","src":"5267:9:80","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":54452,"id":54466,"nodeType":"Return","src":"5260:16:80"}]}}]},"implemented":true,"kind":"function","modifiers":[],"name":"_source","nameLocation":"5143:7:80","parameters":{"id":54449,"nodeType":"ParameterList","parameters":[],"src":"5150:2:80"},"returnParameters":{"id":54452,"nodeType":"ParameterList","parameters":[{"constant":false,"id":54451,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":54474,"src":"5175:7:80","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":54450,"name":"address","nodeType":"ElementaryTypeName","src":"5175:7:80","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5174:9:80"},"scope":54550,"stateMutability":"view","virtual":false,"visibility":"private"},{"id":54511,"nodeType":"FunctionDefinition","src":"5347:332:80","nodes":[],"body":{"id":54510,"nodeType":"Block","src":"5403:276:80","nodes":[],"statements":[{"assignments":[54480],"declarations":[{"constant":false,"id":54480,"mutability":"mutable","name":"routerAddress","nameLocation":"5421:13:80","nodeType":"VariableDeclaration","scope":54510,"src":"5413:21:80","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":54479,"name":"address","nodeType":"ElementaryTypeName","src":"5413:7:80","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":54483,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":54481,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54061,"src":"5437:6:80","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":54482,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5437:8:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"5413:32:80"},{"assignments":[54486],"declarations":[{"constant":false,"id":54486,"mutability":"mutable","name":"wrappedVara","nameLocation":"5469:11:80","nodeType":"VariableDeclaration","scope":54510,"src":"5456:24:80","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IWrappedVara_$54024","typeString":"contract IWrappedVara"},"typeName":{"id":54485,"nodeType":"UserDefinedTypeName","pathNode":{"id":54484,"name":"IWrappedVara","nameLocations":["5456:12:80"],"nodeType":"IdentifierPath","referencedDeclaration":54024,"src":"5456:12:80"},"referencedDeclaration":54024,"src":"5456:12:80","typeDescriptions":{"typeIdentifier":"t_contract$_IWrappedVara_$54024","typeString":"contract IWrappedVara"}},"visibility":"internal"}],"id":54494,"initialValue":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":54489,"name":"routerAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54480,"src":"5504:13:80","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":54488,"name":"IRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54013,"src":"5496:7:80","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IRouter_$54013_$","typeString":"type(contract IRouter)"}},"id":54490,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5496:22:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IRouter_$54013","typeString":"contract IRouter"}},"id":54491,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5519:11:80","memberName":"wrappedVara","nodeType":"MemberAccess","referencedDeclaration":53857,"src":"5496:34:80","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":54492,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5496:36:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":54487,"name":"IWrappedVara","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54024,"src":"5483:12:80","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IWrappedVara_$54024_$","typeString":"type(contract IWrappedVara)"}},"id":54493,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5483:50:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IWrappedVara_$54024","typeString":"contract IWrappedVara"}},"nodeType":"VariableDeclarationStatement","src":"5456:77:80"},{"assignments":[54496],"declarations":[{"constant":false,"id":54496,"mutability":"mutable","name":"success","nameLocation":"5549:7:80","nodeType":"VariableDeclaration","scope":54510,"src":"5544:12:80","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":54495,"name":"bool","nodeType":"ElementaryTypeName","src":"5544:4:80","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":54504,"initialValue":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":54499,"name":"_source","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54474,"src":"5584:7:80","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":54500,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5584:9:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":54501,"name":"routerAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54480,"src":"5595:13:80","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":54502,"name":"_value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54476,"src":"5610:6:80","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint128","typeString":"uint128"}],"expression":{"id":54497,"name":"wrappedVara","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54486,"src":"5559:11:80","typeDescriptions":{"typeIdentifier":"t_contract$_IWrappedVara_$54024","typeString":"contract IWrappedVara"}},"id":54498,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5571:12:80","memberName":"transferFrom","nodeType":"MemberAccess","referencedDeclaration":41905,"src":"5559:24:80","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,address,uint256) external returns (bool)"}},"id":54503,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5559:58:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"VariableDeclarationStatement","src":"5544:73:80"},{"expression":{"arguments":[{"id":54506,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54496,"src":"5636:7:80","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"6661696c656420746f207265747269657665205756617261","id":54507,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5645:26:80","typeDescriptions":{"typeIdentifier":"t_stringliteral_3257f3c05b2e57b37b1b4545fc8e3f040a16378fd14b34b1b901c2ec9b919712","typeString":"literal_string \"failed to retrieve WVara\""},"value":"failed to retrieve WVara"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_3257f3c05b2e57b37b1b4545fc8e3f040a16378fd14b34b1b901c2ec9b919712","typeString":"literal_string \"failed to retrieve WVara\""}],"id":54505,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"5628:7:80","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":54508,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5628:44:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":54509,"nodeType":"ExpressionStatement","src":"5628:44:80"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_retrieveValueToRouter","nameLocation":"5356:22:80","parameters":{"id":54477,"nodeType":"ParameterList","parameters":[{"constant":false,"id":54476,"mutability":"mutable","name":"_value","nameLocation":"5387:6:80","nodeType":"VariableDeclaration","scope":54511,"src":"5379:14:80","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":54475,"name":"uint128","nodeType":"ElementaryTypeName","src":"5379:7:80","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"5378:16:80"},"returnParameters":{"id":54478,"nodeType":"ParameterList","parameters":[],"src":"5403:0:80"},"scope":54550,"stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"id":54549,"nodeType":"FunctionDefinition","src":"5685:316:80","nodes":[],"body":{"id":54548,"nodeType":"Block","src":"5751:250:80","nodes":[],"statements":[{"assignments":[54520],"declarations":[{"constant":false,"id":54520,"mutability":"mutable","name":"wrappedVara","nameLocation":"5774:11:80","nodeType":"VariableDeclaration","scope":54548,"src":"5761:24:80","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IWrappedVara_$54024","typeString":"contract IWrappedVara"},"typeName":{"id":54519,"nodeType":"UserDefinedTypeName","pathNode":{"id":54518,"name":"IWrappedVara","nameLocations":["5761:12:80"],"nodeType":"IdentifierPath","referencedDeclaration":54024,"src":"5761:12:80"},"referencedDeclaration":54024,"src":"5761:12:80","typeDescriptions":{"typeIdentifier":"t_contract$_IWrappedVara_$54024","typeString":"contract IWrappedVara"}},"visibility":"internal"}],"id":54529,"initialValue":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":54523,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54061,"src":"5809:6:80","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":54524,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5809:8:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":54522,"name":"IRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54013,"src":"5801:7:80","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IRouter_$54013_$","typeString":"type(contract IRouter)"}},"id":54525,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5801:17:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IRouter_$54013","typeString":"contract IRouter"}},"id":54526,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5819:11:80","memberName":"wrappedVara","nodeType":"MemberAccess","referencedDeclaration":53857,"src":"5801:29:80","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":54527,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5801:31:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":54521,"name":"IWrappedVara","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54024,"src":"5788:12:80","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IWrappedVara_$54024_$","typeString":"type(contract IWrappedVara)"}},"id":54528,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5788:45:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IWrappedVara_$54024","typeString":"contract IWrappedVara"}},"nodeType":"VariableDeclarationStatement","src":"5761:72:80"},{"condition":{"commonType":{"typeIdentifier":"t_uint128","typeString":"uint128"},"id":54532,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":54530,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54515,"src":"5848:5:80","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":54531,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5857:1:80","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"5848:10:80","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":54547,"nodeType":"IfStatement","src":"5844:151:80","trueBody":{"id":54546,"nodeType":"Block","src":"5860:135:80","statements":[{"assignments":[54534],"declarations":[{"constant":false,"id":54534,"mutability":"mutable","name":"success","nameLocation":"5879:7:80","nodeType":"VariableDeclaration","scope":54546,"src":"5874:12:80","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":54533,"name":"bool","nodeType":"ElementaryTypeName","src":"5874:4:80","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":54540,"initialValue":{"arguments":[{"id":54537,"name":"destination","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54513,"src":"5910:11:80","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":54538,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54515,"src":"5923:5:80","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint128","typeString":"uint128"}],"expression":{"id":54535,"name":"wrappedVara","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54520,"src":"5889:11:80","typeDescriptions":{"typeIdentifier":"t_contract$_IWrappedVara_$54024","typeString":"contract IWrappedVara"}},"id":54536,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5901:8:80","memberName":"transfer","nodeType":"MemberAccess","referencedDeclaration":41873,"src":"5889:20:80","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":54539,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5889:40:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"VariableDeclarationStatement","src":"5874:55:80"},{"expression":{"arguments":[{"id":54542,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54534,"src":"5952:7:80","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"6661696c656420746f2073656e64205756617261","id":54543,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5961:22:80","typeDescriptions":{"typeIdentifier":"t_stringliteral_8ec034c4b2ac47d4229390ddbbb751ebe057cb836b00500cd6f2ff2a9adb713a","typeString":"literal_string \"failed to send WVara\""},"value":"failed to send WVara"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_8ec034c4b2ac47d4229390ddbbb751ebe057cb836b00500cd6f2ff2a9adb713a","typeString":"literal_string \"failed to send WVara\""}],"id":54541,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"5944:7:80","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":54544,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5944:40:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":54545,"nodeType":"ExpressionStatement","src":"5944:40:80"}]}}]},"implemented":true,"kind":"function","modifiers":[],"name":"_sendValueTo","nameLocation":"5694:12:80","parameters":{"id":54516,"nodeType":"ParameterList","parameters":[{"constant":false,"id":54513,"mutability":"mutable","name":"destination","nameLocation":"5715:11:80","nodeType":"VariableDeclaration","scope":54549,"src":"5707:19:80","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":54512,"name":"address","nodeType":"ElementaryTypeName","src":"5707:7:80","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":54515,"mutability":"mutable","name":"value","nameLocation":"5736:5:80","nodeType":"VariableDeclaration","scope":54549,"src":"5728:13:80","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":54514,"name":"uint128","nodeType":"ElementaryTypeName","src":"5728:7:80","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"5706:36:80"},"returnParameters":{"id":54517,"nodeType":"ParameterList","parameters":[],"src":"5751:0:80"},"scope":54550,"stateMutability":"nonpayable","virtual":false,"visibility":"private"}],"abstract":false,"baseContracts":[{"baseName":{"id":54039,"name":"IMirror","nameLocations":["422:7:80"],"nodeType":"IdentifierPath","referencedDeclaration":53648,"src":"422:7:80"},"id":54040,"nodeType":"InheritanceSpecifier","src":"422:7:80"}],"canonicalName":"Mirror","contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"linearizedBaseContracts":[54550,53648],"name":"Mirror","nameLocation":"412:6:80","scope":54551,"usedErrors":[42267,42273],"usedEvents":[53475,53486,53497,53504,53509,53520,53531,53538]}],"license":"UNLICENSED"},"id":80} \ No newline at end of file +{"abi":[{"type":"function","name":"claimValue","inputs":[{"name":"_claimedId","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"createDecoder","inputs":[{"name":"implementation","type":"address","internalType":"address"},{"name":"salt","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"decoder","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"executableBalanceTopUp","inputs":[{"name":"_value","type":"uint128","internalType":"uint128"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"inheritor","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"initMessage","inputs":[{"name":"source","type":"address","internalType":"address"},{"name":"payload","type":"bytes","internalType":"bytes"},{"name":"value","type":"uint128","internalType":"uint128"},{"name":"executableBalance","type":"uint128","internalType":"uint128"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"messageSent","inputs":[{"name":"id","type":"bytes32","internalType":"bytes32"},{"name":"destination","type":"address","internalType":"address"},{"name":"payload","type":"bytes","internalType":"bytes"},{"name":"value","type":"uint128","internalType":"uint128"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"nonce","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"replySent","inputs":[{"name":"destination","type":"address","internalType":"address"},{"name":"payload","type":"bytes","internalType":"bytes"},{"name":"value","type":"uint128","internalType":"uint128"},{"name":"replyTo","type":"bytes32","internalType":"bytes32"},{"name":"replyCode","type":"bytes4","internalType":"bytes4"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"router","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"sendMessage","inputs":[{"name":"_payload","type":"bytes","internalType":"bytes"},{"name":"_value","type":"uint128","internalType":"uint128"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"payable"},{"type":"function","name":"sendReply","inputs":[{"name":"_repliedTo","type":"bytes32","internalType":"bytes32"},{"name":"_payload","type":"bytes","internalType":"bytes"},{"name":"_value","type":"uint128","internalType":"uint128"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"sendValueToInheritor","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setInheritor","inputs":[{"name":"_inheritor","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"stateHash","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"updateState","inputs":[{"name":"newStateHash","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"valueClaimed","inputs":[{"name":"claimedId","type":"bytes32","internalType":"bytes32"},{"name":"destination","type":"address","internalType":"address"},{"name":"value","type":"uint128","internalType":"uint128"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"ExecutableBalanceTopUpRequested","inputs":[{"name":"value","type":"uint128","indexed":false,"internalType":"uint128"}],"anonymous":false},{"type":"event","name":"Message","inputs":[{"name":"id","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"destination","type":"address","indexed":true,"internalType":"address"},{"name":"payload","type":"bytes","indexed":false,"internalType":"bytes"},{"name":"value","type":"uint128","indexed":false,"internalType":"uint128"}],"anonymous":false},{"type":"event","name":"MessageQueueingRequested","inputs":[{"name":"id","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"source","type":"address","indexed":true,"internalType":"address"},{"name":"payload","type":"bytes","indexed":false,"internalType":"bytes"},{"name":"value","type":"uint128","indexed":false,"internalType":"uint128"}],"anonymous":false},{"type":"event","name":"Reply","inputs":[{"name":"payload","type":"bytes","indexed":false,"internalType":"bytes"},{"name":"value","type":"uint128","indexed":false,"internalType":"uint128"},{"name":"replyTo","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"replyCode","type":"bytes4","indexed":true,"internalType":"bytes4"}],"anonymous":false},{"type":"event","name":"ReplyQueueingRequested","inputs":[{"name":"repliedTo","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"source","type":"address","indexed":true,"internalType":"address"},{"name":"payload","type":"bytes","indexed":false,"internalType":"bytes"},{"name":"value","type":"uint128","indexed":false,"internalType":"uint128"}],"anonymous":false},{"type":"event","name":"StateChanged","inputs":[{"name":"stateHash","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"ValueClaimed","inputs":[{"name":"claimedId","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"value","type":"uint128","indexed":false,"internalType":"uint128"}],"anonymous":false},{"type":"event","name":"ValueClaimingRequested","inputs":[{"name":"claimedId","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"source","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"error","name":"FailedDeployment","inputs":[]},{"type":"error","name":"InsufficientBalance","inputs":[{"name":"balance","type":"uint256","internalType":"uint256"},{"name":"needed","type":"uint256","internalType":"uint256"}]}],"bytecode":{"object":"0x608080604052346015576112dc908161001a8239f35b5f80fdfe60806040526004361015610011575f80fd5b5f803560e01c806312b22256146109f357806314503e511461097857806329336f391461087c57806336a52a18146108545780635b1b84f7146106a357806360302d241461068a578063701da98e1461066d578063704ed542146106055780638ea59e1d146105a057806391d5a64c146105385780639cb330051461050f578063affed0e0146104f1578063c2df60091461048e578063c78bde771461040e578063d562422214610298578063de1dd2e0146101045763f887ea40146100d5575f80fd5b3461010157806003193601126101015760206100ef610fe6565b6040516001600160a01b039091168152f35b80fd5b50346101015760803660031901126101015761011e610a47565b60243567ffffffffffffffff81116102945761013e903690600401610a9f565b90610147610a73565b92610150610a89565b9361016c6001600160a01b03610164610fe6565b163314610acd565b6002549081610238577f3527a119fe7f25d965cb7abc58139f031e8909b8592488c7926862d569e435c6947f85ba4ebb0990fc588bfbb287e2e810a77c858e0a69485d6a938c52c0542366676020846101c761023296610fd8565b6002556040513060601b6bffffffffffffffffffffffff1916838201908152601481019290925261020581603484015b03601f198101835282610b74565b519020986001600160801b0360405191168152a16040516001600160a01b03909416969394859485610c1d565b0390a280f35b60405162461bcd60e51b815260206004820152602e60248201527f696e6974206d657373616765206d75737420626520637265617465642062656660448201526d6f726520616e79206f746865727360901b6064820152608490fd5b8280fd5b5060403660031901126101015760043567ffffffffffffffff811161040a576102c5903690600401610a9f565b602435906001600160801b0382168203610406576001546102ef906001600160a01b031615610b30565b600460206001600160a01b03610303610fe6565b16604051928380926337792e1d60e11b82525afa9081156103fb57610358847f3527a119fe7f25d965cb7abc58139f031e8909b8592488c7926862d569e435c6949361035d93602099916103ce575b50610bc9565b61116c565b60025461036981610fd8565b6002556040513060601b6bffffffffffffffffffffffff1916878201908152601481019290925261039d81603484016101f7565b519020936103c36001600160a01b036103b461128a565b16946040519384938885610c1d565b0390a2604051908152f35b6103ee9150893d8b116103f4575b6103e68183610b74565b810190610baa565b5f610352565b503d6103dc565b6040513d87823e3d90fd5b8380fd5b5080fd5b50346101015760a036600319011261010157610428610a47565b60243567ffffffffffffffff811161029457610448903690600401610a9f565b9091610452610a73565b608435926001600160e01b03198416840361048a576104879461047e6001600160a01b03610164610fe6565b60643593610ec5565b80f35b8580fd5b5034610101576080366003190112610101576104a8610a5d565b6044359067ffffffffffffffff8211610294576104cc610487923690600401610a9f565b906104d5610a89565b926104e96001600160a01b03610164610fe6565b600435610ded565b50346101015780600319360112610101576020600254604051908152f35b50346101015780600319360112610101576003546040516001600160a01b039091168152602090f35b503461010157602036600319011261010157600154610560906001600160a01b031615610b30565b6001600160a01b0361057061128a565b167f0354817698da67944179457b89e15c1c57ca7b8cfd9d80eab1d09c258f6c497860206040516004358152a280f35b5034610101576020366003190112610101576004356105c86001600160a01b03610164610fe6565b808254036105d4575080f35b6020817f5c601f20d27885120b6fed87a4c313849b86eaddc9d28e7685e2e66a9c080930928455604051908152a180f35b506020366003190112610101576004356001600160801b03811690818103610294577f85ba4ebb0990fc588bfbb287e2e810a77c858e0a69485d6a938c52c0542366679161066360209261035860018060a01b036001541615610b30565b604051908152a180f35b503461010157806003193601126101015760209054604051908152f35b5034610101578060031936011261010157610487610c6a565b5034610792576040366003190112610792576106bd610a47565b6106d06001600160a01b03610164610fe6565b6002546107f5576003546001600160a01b03166107a55780763d602d80600a3d3981f3363d3d373d3d3d363d7300000062ffffff6e5af43d82803e903d91602b57fd5bf39360881c16175f5260781b1760205260018060a01b03602435603760095ff516801561079657600380546001600160a01b03191682179055803b15610792575f809160046040518094819363204a7f0760e21b83525af1801561078757610779575080f35b61078591505f90610b74565b005b6040513d5f823e3d90fd5b5f80fd5b63b06ebf3d60e01b5f5260045ffd5b60405162461bcd60e51b815260206004820152602260248201527f6465636f64657220636f756c64206f6e6c792062652063726561746564206f6e604482015261636560f01b6064820152608490fd5b60405162461bcd60e51b815260206004820152603160248201527f6465636f64657220636f756c64206f6e6c792062652063726561746564206265604482015270666f726520696e6974206d65737361676560781b6064820152608490fd5b34610792575f366003190112610792576001546040516001600160a01b039091168152602090f35b60603660031901126107925760243567ffffffffffffffff8111610792576108a960049136908301610a9f565b6108b4929192610a73565b6001549093906108cd906001600160a01b031615610b30565b60206001600160a01b036108df610fe6565b16604051948580926337792e1d60e11b82525afa92831561078757610358857fb64dad8a89028819d048f9c75ec4c516341da68972bb68a8e1262b5443c61e7f95610930935f916109595750610bc9565b6109546001600160a01b0361094361128a565b169460405193849360043585610c1d565b0390a2005b610972915060203d6020116103f4576103e68183610b74565b88610352565b34610792576060366003190112610792577fa217f2987a7942c2966f1fd16d39097862308325249e8b9fb4c00a430fd6578360406109b4610a5d565b6109da6109bf610a73565b9182906109d56001600160a01b03610164610fe6565b611041565b6001600160801b038251916004358352166020820152a1005b3461079257602036600319011261079257610a0c610a47565b610a1f6001600160a01b03610164610fe6565b60018060a01b03166bffffffffffffffffffffffff60a01b6001541617600155610785610c6a565b600435906001600160a01b038216820361079257565b602435906001600160a01b038216820361079257565b604435906001600160801b038216820361079257565b606435906001600160801b038216820361079257565b9181601f840112156107925782359167ffffffffffffffff8311610792576020838186019501011161079257565b15610ad457565b60405162461bcd60e51b815260206004820152602e60248201527f6f6e6c7920726f7574657220636f6e747261637420697320656c696769626c6560448201526d103337b91037b832b930ba34b7b760911b6064820152608490fd5b15610b3757565b60405162461bcd60e51b81526020600482015260156024820152741c1c9bd9dc985b481a5cc81d195c9b5a5b985d1959605a1b6044820152606490fd5b90601f8019910116810190811067ffffffffffffffff821117610b9657604052565b634e487b7160e01b5f52604160045260245ffd5b9081602091031261079257516001600160801b03811681036107925790565b906001600160801b03809116911601906001600160801b038211610be957565b634e487b7160e01b5f52601160045260245ffd5b908060209392818452848401375f828201840152601f01601f1916010190565b92604092610c44916001600160801b03939796978652606060208701526060860191610bfd565b9416910152565b9081602091031261079257516001600160a01b03811681036107925790565b6001546001600160a01b03168015610d695760049060206001600160a01b03610c91610fe6565b166040519384809263088f50cf60e41b82525afa918215610787576024926020915f91610d3c575b506040516370a0823160e01b815230600482015293849182906001600160a01b03165afa918215610787575f92610d01575b506001600160801b03610cff921690611041565b565b91506020823d602011610d34575b81610d1c60209383610b74565b81010312610792579051906001600160801b03610ceb565b3d9150610d0f565b610d5c9150823d8411610d62575b610d548183610b74565b810190610c4b565b5f610cb9565b503d610d4a565b60405162461bcd60e51b815260206004820152601960248201527f70726f6772616d206973206e6f74207465726d696e61746564000000000000006044820152606490fd5b3d15610de8573d9067ffffffffffffffff8211610b965760405191610ddd601f8201601f191660200184610b74565b82523d5f602084013e565b606090565b600354909493906001600160a01b031680610e44575b507f9c4ffe7286aed9eb205c8adb12b51219122c7e56c67017f312af0e15f801177393610e3f9160405194859460018060a01b03169785610c1d565b0390a2565b5f80916040518260208201916374fad4ef60e01b83528a602482015260018060a01b038816604482015260806064820152610ea481610e8760a482018a8d610bfd565b6001600160801b038d16608483015203601f198101835282610b74565b51926207a120f1610eb3610dae565b50610ebe575f610e03565b5050505050565b94909294610ed38682611041565b6003546001600160a01b03169081610f45575b50507fe240a19e4a4ef8e5861c0eea48f9ab2cdb47bfe98347c94ccabb9c45f7d8d1c6936001600160801b03610f29604051958695606087526060870191610bfd565b9616602084015260408301526001600160e01b031916930390a2565b604051639649744960e01b602082019081526001600160a01b03909216602482015260a060448201525f92839290918390610fbd818c6001600160801b03610f9160c484018d8f610bfd565b91166064830152608482018d90526001600160e01b03198a1660a483015203601f198101835282610b74565b51926207a120f1610fcc610dae565b50610ebe575f80610ee6565b5f198114610be95760010190565b6040516303e21fa960e61b8152602081600481305afa908115610787575f9161100d575090565b611026915060203d602011610d6257610d548183610b74565b90565b90816020910312610792575180151581036107925790565b60049160206001600160a01b03611056610fe6565b166040519485809263088f50cf60e41b82525afa928315610787575f93611142575b506001600160801b03168061108c57505050565b60405163a9059cbb60e01b81526001600160a01b039283166004820152602481019190915291602091839160449183915f91165af1908115610787575f91611113575b50156110d757565b60405162461bcd60e51b81526020600482015260146024820152736661696c656420746f2073656e6420575661726160601b6044820152606490fd5b611135915060203d60201161113b575b61112d8183610b74565b810190611029565b5f6110cf565b503d611123565b6001600160801b039193506111659060203d602011610d6257610d548183610b74565b9290611078565b6001600160a01b0361117c610fe6565b60405163088f50cf60e41b81529116602082600481845afa918215610787576020926064915f9161126d575b505f6111b261128a565b6040516323b872dd60e01b81526001600160a01b03918216600482015260248101959095526001600160801b039690961660448501529294859384929091165af1908115610787575f9161124e575b501561120957565b60405162461bcd60e51b815260206004820152601860248201527f6661696c656420746f20726574726965766520575661726100000000000000006044820152606490fd5b611267915060203d60201161113b5761112d8183610b74565b5f611201565b6112849150843d8611610d6257610d548183610b74565b5f6111a8565b600354336001600160a01b03909116036112a2573290565b339056fea2646970667358221220007ef9794ad81a4a348e3f0acb7e0a2f62802f10e23b7238d7d220500d0f1c9364736f6c634300081a0033","sourceMap":"403:6188:80:-:0;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x60806040526004361015610011575f80fd5b5f803560e01c806312b22256146109f357806314503e511461097857806329336f391461087c57806336a52a18146108545780635b1b84f7146106a357806360302d241461068a578063701da98e1461066d578063704ed542146106055780638ea59e1d146105a057806391d5a64c146105385780639cb330051461050f578063affed0e0146104f1578063c2df60091461048e578063c78bde771461040e578063d562422214610298578063de1dd2e0146101045763f887ea40146100d5575f80fd5b3461010157806003193601126101015760206100ef610fe6565b6040516001600160a01b039091168152f35b80fd5b50346101015760803660031901126101015761011e610a47565b60243567ffffffffffffffff81116102945761013e903690600401610a9f565b90610147610a73565b92610150610a89565b9361016c6001600160a01b03610164610fe6565b163314610acd565b6002549081610238577f3527a119fe7f25d965cb7abc58139f031e8909b8592488c7926862d569e435c6947f85ba4ebb0990fc588bfbb287e2e810a77c858e0a69485d6a938c52c0542366676020846101c761023296610fd8565b6002556040513060601b6bffffffffffffffffffffffff1916838201908152601481019290925261020581603484015b03601f198101835282610b74565b519020986001600160801b0360405191168152a16040516001600160a01b03909416969394859485610c1d565b0390a280f35b60405162461bcd60e51b815260206004820152602e60248201527f696e6974206d657373616765206d75737420626520637265617465642062656660448201526d6f726520616e79206f746865727360901b6064820152608490fd5b8280fd5b5060403660031901126101015760043567ffffffffffffffff811161040a576102c5903690600401610a9f565b602435906001600160801b0382168203610406576001546102ef906001600160a01b031615610b30565b600460206001600160a01b03610303610fe6565b16604051928380926337792e1d60e11b82525afa9081156103fb57610358847f3527a119fe7f25d965cb7abc58139f031e8909b8592488c7926862d569e435c6949361035d93602099916103ce575b50610bc9565b61116c565b60025461036981610fd8565b6002556040513060601b6bffffffffffffffffffffffff1916878201908152601481019290925261039d81603484016101f7565b519020936103c36001600160a01b036103b461128a565b16946040519384938885610c1d565b0390a2604051908152f35b6103ee9150893d8b116103f4575b6103e68183610b74565b810190610baa565b5f610352565b503d6103dc565b6040513d87823e3d90fd5b8380fd5b5080fd5b50346101015760a036600319011261010157610428610a47565b60243567ffffffffffffffff811161029457610448903690600401610a9f565b9091610452610a73565b608435926001600160e01b03198416840361048a576104879461047e6001600160a01b03610164610fe6565b60643593610ec5565b80f35b8580fd5b5034610101576080366003190112610101576104a8610a5d565b6044359067ffffffffffffffff8211610294576104cc610487923690600401610a9f565b906104d5610a89565b926104e96001600160a01b03610164610fe6565b600435610ded565b50346101015780600319360112610101576020600254604051908152f35b50346101015780600319360112610101576003546040516001600160a01b039091168152602090f35b503461010157602036600319011261010157600154610560906001600160a01b031615610b30565b6001600160a01b0361057061128a565b167f0354817698da67944179457b89e15c1c57ca7b8cfd9d80eab1d09c258f6c497860206040516004358152a280f35b5034610101576020366003190112610101576004356105c86001600160a01b03610164610fe6565b808254036105d4575080f35b6020817f5c601f20d27885120b6fed87a4c313849b86eaddc9d28e7685e2e66a9c080930928455604051908152a180f35b506020366003190112610101576004356001600160801b03811690818103610294577f85ba4ebb0990fc588bfbb287e2e810a77c858e0a69485d6a938c52c0542366679161066360209261035860018060a01b036001541615610b30565b604051908152a180f35b503461010157806003193601126101015760209054604051908152f35b5034610101578060031936011261010157610487610c6a565b5034610792576040366003190112610792576106bd610a47565b6106d06001600160a01b03610164610fe6565b6002546107f5576003546001600160a01b03166107a55780763d602d80600a3d3981f3363d3d373d3d3d363d7300000062ffffff6e5af43d82803e903d91602b57fd5bf39360881c16175f5260781b1760205260018060a01b03602435603760095ff516801561079657600380546001600160a01b03191682179055803b15610792575f809160046040518094819363204a7f0760e21b83525af1801561078757610779575080f35b61078591505f90610b74565b005b6040513d5f823e3d90fd5b5f80fd5b63b06ebf3d60e01b5f5260045ffd5b60405162461bcd60e51b815260206004820152602260248201527f6465636f64657220636f756c64206f6e6c792062652063726561746564206f6e604482015261636560f01b6064820152608490fd5b60405162461bcd60e51b815260206004820152603160248201527f6465636f64657220636f756c64206f6e6c792062652063726561746564206265604482015270666f726520696e6974206d65737361676560781b6064820152608490fd5b34610792575f366003190112610792576001546040516001600160a01b039091168152602090f35b60603660031901126107925760243567ffffffffffffffff8111610792576108a960049136908301610a9f565b6108b4929192610a73565b6001549093906108cd906001600160a01b031615610b30565b60206001600160a01b036108df610fe6565b16604051948580926337792e1d60e11b82525afa92831561078757610358857fb64dad8a89028819d048f9c75ec4c516341da68972bb68a8e1262b5443c61e7f95610930935f916109595750610bc9565b6109546001600160a01b0361094361128a565b169460405193849360043585610c1d565b0390a2005b610972915060203d6020116103f4576103e68183610b74565b88610352565b34610792576060366003190112610792577fa217f2987a7942c2966f1fd16d39097862308325249e8b9fb4c00a430fd6578360406109b4610a5d565b6109da6109bf610a73565b9182906109d56001600160a01b03610164610fe6565b611041565b6001600160801b038251916004358352166020820152a1005b3461079257602036600319011261079257610a0c610a47565b610a1f6001600160a01b03610164610fe6565b60018060a01b03166bffffffffffffffffffffffff60a01b6001541617600155610785610c6a565b600435906001600160a01b038216820361079257565b602435906001600160a01b038216820361079257565b604435906001600160801b038216820361079257565b606435906001600160801b038216820361079257565b9181601f840112156107925782359167ffffffffffffffff8311610792576020838186019501011161079257565b15610ad457565b60405162461bcd60e51b815260206004820152602e60248201527f6f6e6c7920726f7574657220636f6e747261637420697320656c696769626c6560448201526d103337b91037b832b930ba34b7b760911b6064820152608490fd5b15610b3757565b60405162461bcd60e51b81526020600482015260156024820152741c1c9bd9dc985b481a5cc81d195c9b5a5b985d1959605a1b6044820152606490fd5b90601f8019910116810190811067ffffffffffffffff821117610b9657604052565b634e487b7160e01b5f52604160045260245ffd5b9081602091031261079257516001600160801b03811681036107925790565b906001600160801b03809116911601906001600160801b038211610be957565b634e487b7160e01b5f52601160045260245ffd5b908060209392818452848401375f828201840152601f01601f1916010190565b92604092610c44916001600160801b03939796978652606060208701526060860191610bfd565b9416910152565b9081602091031261079257516001600160a01b03811681036107925790565b6001546001600160a01b03168015610d695760049060206001600160a01b03610c91610fe6565b166040519384809263088f50cf60e41b82525afa918215610787576024926020915f91610d3c575b506040516370a0823160e01b815230600482015293849182906001600160a01b03165afa918215610787575f92610d01575b506001600160801b03610cff921690611041565b565b91506020823d602011610d34575b81610d1c60209383610b74565b81010312610792579051906001600160801b03610ceb565b3d9150610d0f565b610d5c9150823d8411610d62575b610d548183610b74565b810190610c4b565b5f610cb9565b503d610d4a565b60405162461bcd60e51b815260206004820152601960248201527f70726f6772616d206973206e6f74207465726d696e61746564000000000000006044820152606490fd5b3d15610de8573d9067ffffffffffffffff8211610b965760405191610ddd601f8201601f191660200184610b74565b82523d5f602084013e565b606090565b600354909493906001600160a01b031680610e44575b507f9c4ffe7286aed9eb205c8adb12b51219122c7e56c67017f312af0e15f801177393610e3f9160405194859460018060a01b03169785610c1d565b0390a2565b5f80916040518260208201916374fad4ef60e01b83528a602482015260018060a01b038816604482015260806064820152610ea481610e8760a482018a8d610bfd565b6001600160801b038d16608483015203601f198101835282610b74565b51926207a120f1610eb3610dae565b50610ebe575f610e03565b5050505050565b94909294610ed38682611041565b6003546001600160a01b03169081610f45575b50507fe240a19e4a4ef8e5861c0eea48f9ab2cdb47bfe98347c94ccabb9c45f7d8d1c6936001600160801b03610f29604051958695606087526060870191610bfd565b9616602084015260408301526001600160e01b031916930390a2565b604051639649744960e01b602082019081526001600160a01b03909216602482015260a060448201525f92839290918390610fbd818c6001600160801b03610f9160c484018d8f610bfd565b91166064830152608482018d90526001600160e01b03198a1660a483015203601f198101835282610b74565b51926207a120f1610fcc610dae565b50610ebe575f80610ee6565b5f198114610be95760010190565b6040516303e21fa960e61b8152602081600481305afa908115610787575f9161100d575090565b611026915060203d602011610d6257610d548183610b74565b90565b90816020910312610792575180151581036107925790565b60049160206001600160a01b03611056610fe6565b166040519485809263088f50cf60e41b82525afa928315610787575f93611142575b506001600160801b03168061108c57505050565b60405163a9059cbb60e01b81526001600160a01b039283166004820152602481019190915291602091839160449183915f91165af1908115610787575f91611113575b50156110d757565b60405162461bcd60e51b81526020600482015260146024820152736661696c656420746f2073656e6420575661726160601b6044820152606490fd5b611135915060203d60201161113b575b61112d8183610b74565b810190611029565b5f6110cf565b503d611123565b6001600160801b039193506111659060203d602011610d6257610d548183610b74565b9290611078565b6001600160a01b0361117c610fe6565b60405163088f50cf60e41b81529116602082600481845afa918215610787576020926064915f9161126d575b505f6111b261128a565b6040516323b872dd60e01b81526001600160a01b03918216600482015260248101959095526001600160801b039690961660448501529294859384929091165af1908115610787575f9161124e575b501561120957565b60405162461bcd60e51b815260206004820152601860248201527f6661696c656420746f20726574726965766520575661726100000000000000006044820152606490fd5b611267915060203d60201161113b5761112d8183610b74565b5f611201565b6112849150843d8611610d6257610d548183610b74565b5f6111a8565b600354336001600160a01b03909116036112a2573290565b339056fea2646970667358221220007ef9794ad81a4a348e3f0acb7e0a2f62802f10e23b7238d7d220500d0f1c9364736f6c634300081a0033","sourceMap":"403:6188:80:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;403:6188:80;;;;;;;;;;;;;;;;-1:-1:-1;;403:6188:80;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;;;;:::i;:::-;;5608:81;-1:-1:-1;;;;;5630:8:80;;:::i;:::-;403:6188;5616:10;:22;5608:81;:::i;:::-;5165:5;403:6188;5165:10;;403:6188;;5511:52;5347:7;5446:50;403:6188;5347:7;;5511:52;5347:7;;:::i;:::-;5165:5;403:6188;;;5412:4;403:6188;;-1:-1:-1;;403:6188:80;5387:42;;;403:6188;;;;;;;;;;5387:42;403:6188;;;;5387:42;;1197:40;;5387:42;;;;;;:::i;:::-;403:6188;5377:53;;403:6188;-1:-1:-1;;;;;403:6188:80;;;;;;5446:50;403:6188;;-1:-1:-1;;;;;403:6188:80;;;;;;;;;5511:52;:::i;:::-;;;;403:6188;;;;;-1:-1:-1;;;403:6188:80;;;;;;;;;;;;;;;;;-1:-1:-1;;;403:6188:80;;;;;;;;;;;;-1:-1:-1;403:6188:80;;-1:-1:-1;;403:6188:80;;;;;;;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;403:6188:80;;;;;;;;1000:57;;-1:-1:-1;;;;;403:6188:80;1008:23;1000:57;:::i;:::-;403:6188;;-1:-1:-1;;;;;1094:8:80;;:::i;:::-;403:6188;;;;;;;;;;1086:27;;;;;;;;;1146:16;1086:27;1254:57;1086:27;;1146:16;1086:27;403:6188;1086:27;;;;403:6188;1146:16;;:::i;:::-;;:::i;:::-;1229:7;403:6188;1229:7;;;:::i;:::-;;403:6188;;;1222:4;403:6188;;-1:-1:-1;;403:6188:80;1197:40;;;403:6188;;;;;;;;;;1197:40;403:6188;;;;1197:40;403:6188;1197:40;403:6188;1187:51;;;1254:57;-1:-1:-1;;;;;1283:9:80;;:::i;:::-;403:6188;;;;1254:57;;;;;;:::i;:::-;;;;403:6188;;;;;;1086:27;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;403:6188;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;403:6188:80;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;-1:-1:-1;;;;;;403:6188:80;;;;;;5699:1;;5608:81;-1:-1:-1;;;;;5630:8:80;;:::i;5608:81::-;403:6188;;5699:1;;:::i;:::-;403:6188;;;;;;;;;;;;;-1:-1:-1;;403:6188:80;;;;;;:::i;:::-;;;;;;;;;;5699:1;403:6188;;;;;;:::i;:::-;;;;:::i;:::-;;5608:81;-1:-1:-1;;;;;5630:8:80;;:::i;5608:81::-;403:6188;;5699:1;:::i;403:6188::-;;;;;;;;;;;;;;568:20;403:6188;;;;;;;;;;;;;;;;;;;;604:22;403:6188;;;-1:-1:-1;;;;;403:6188:80;;;;;;;;;;;;;;;-1:-1:-1;;403:6188:80;;;;;;1765:57;;-1:-1:-1;;;;;403:6188:80;1773:23;1765:57;:::i;:::-;-1:-1:-1;;;;;1873:9:80;;:::i;:::-;403:6188;1838:45;403:6188;;;;;;;1838:45;403:6188;;;;;;;;;-1:-1:-1;;403:6188:80;;;;;;5608:81;-1:-1:-1;;;;;5630:8:80;;:::i;5608:81::-;403:6188;;;2539:25;2535:123;;403:6188;;;2535:123;403:6188;;2624:23;403:6188;;;;;;;;2624:23;403:6188;;;-1:-1:-1;403:6188:80;;-1:-1:-1;;403:6188:80;;;;;;-1:-1:-1;;;;;403:6188:80;;;;;;;;2085:39;403:6188;2062:6;403:6188;;1971:57;403:6188;;;;;1979:9;403:6188;;1979:23;1971:57;:::i;2062:6::-;403:6188;;;;;2085:39;403:6188;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;403:6188:80;;;;;;:::i;:::-;5608:81;-1:-1:-1;;;;;5630:8:80;;:::i;5608:81::-;4734:5;403:6188;;;4816:7;403:6188;-1:-1:-1;;;;;403:6188:80;;;3743:569:36;;;;;;;;;403:6188:80;3743:569:36;;;;403:6188:80;3743:569:36;403:6188:80;;;;;;;3743:569:36;;403:6188:80;3743:569:36;403:6188:80;4325:22:36;;4321:85;;4816:7:80;403:6188;;-1:-1:-1;;;;;;403:6188:80;;;;;4955:36;;;;;403:6188;;;;;;;;;;;;;4955:36;;;;;;;;;;403:6188;;;4955:36;;;;403:6188;4955:36;;:::i;:::-;403:6188;4955:36;403:6188;;;;;;;;;4955:36;403:6188;;;4321:85:36;4370:25;;;403:6188:80;4370:25:36;403:6188:80;;4370:25:36;403:6188:80;;;-1:-1:-1;;;403:6188:80;;;;;;;;;;;;;;;;;-1:-1:-1;;;403:6188:80;;;;;;;;;;-1:-1:-1;;;403:6188:80;;;;;;;;;;;;;;;;;-1:-1:-1;;;403:6188:80;;;;;;;;;;;;;-1:-1:-1;;403:6188:80;;;;;;;;-1:-1:-1;;;;;403:6188:80;;;;;;;;;;;-1:-1:-1;;403:6188:80;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;1451:57;;-1:-1:-1;;;;;403:6188:80;1459:23;1451:57;:::i;:::-;403:6188;-1:-1:-1;;;;;1545:8:80;;:::i;:::-;403:6188;;;;;;;;;;1537:27;;;;;;;;;1597:16;1537:27;1630:63;1537:27;1597:16;1537:27;403:6188;1537:27;;;1597:16;;:::i;:::-;1630:63;-1:-1:-1;;;;;1665:9:80;;:::i;:::-;403:6188;;;;;;;;;1630:63;;:::i;:::-;;;;403:6188;1537:27;;;;403:6188;1537:27;403:6188;1537:27;;;;;;;:::i;:::-;;;;403:6188;;;;;;-1:-1:-1;;403:6188:80;;;;4592:30;403:6188;;;:::i;:::-;4570:5;403:6188;;:::i;:::-;;;;5608:81;-1:-1:-1;;;;;5630:8:80;;:::i;5608:81::-;4570:5;:::i;:::-;-1:-1:-1;;;;;403:6188:80;;;;;;;;;;;;4592:30;403:6188;;;;;;;-1:-1:-1;;403:6188:80;;;;;;:::i;:::-;5608:81;-1:-1:-1;;;;;5630:8:80;;:::i;5608:81::-;403:6188;;;;;;;;;2828:22;403:6188;;;2828:22;403:6188;2828:22;;:::i;403:6188::-;;;;-1:-1:-1;;;;;403:6188:80;;;;;;:::o;:::-;;;;-1:-1:-1;;;;;403:6188:80;;;;;;:::o;:::-;;;;-1:-1:-1;;;;;403:6188:80;;;;;;:::o;:::-;;;;-1:-1:-1;;;;;403:6188:80;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;:::o;:::-;;;-1:-1:-1;;;403:6188:80;;;;;;;;;;;;;;;;;-1:-1:-1;;;403:6188:80;;;;;;;;;;;:::o;:::-;;;-1:-1:-1;;;403:6188:80;;;;;;;;;;;;-1:-1:-1;;;403:6188:80;;;;;;;;;;1197:40;;403:6188;;;;;;;;;;;;;;;;:::o;:::-;;;;-1:-1:-1;403:6188:80;;;;;-1:-1:-1;403:6188:80;;;;;;;;;;;-1:-1:-1;;;;;403:6188:80;;;;;;;:::o;:::-;;-1:-1:-1;;;;;403:6188:80;;;;;;;-1:-1:-1;;;;;403:6188:80;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;403:6188:80;;;;;;;;-1:-1:-1;;403:6188:80;;;;:::o;:::-;;;;;;-1:-1:-1;;;;;403:6188:80;;;;;;;;;;;;;;;;:::i;:::-;;;;;;:::o;:::-;;;;;;;;;;-1:-1:-1;;;;;403:6188:80;;;;;;;:::o;2137:267::-;403:6188;;-1:-1:-1;;;;;403:6188:80;2194:23;;403:6188;;2289:31;;;-1:-1:-1;;;;;2297:8:80;;:::i;:::-;403:6188;;;;;;;;;;2289:31;;;;;;;;;2276:70;2289:31;;;-1:-1:-1;2289:31:80;;;2137:267;-1:-1:-1;403:6188:80;;-1:-1:-1;;;2276:70:80;;2340:4;2289:31;2276:70;;403:6188;;;;;;-1:-1:-1;;;;;403:6188:80;2276:70;;;;;;;-1:-1:-1;2276:70:80;;;2137:267;403:6188;-1:-1:-1;;;;;2380:16:80;403:6188;;2380:16;;:::i;:::-;2137:267::o;2276:70::-;;;2289:31;2276:70;;2289:31;2276:70;;;;;;2289:31;2276:70;;;:::i;:::-;;;403:6188;;;;;;;-1:-1:-1;;;;;2276:70:80;;;;;-1:-1:-1;2276:70:80;;2289:31;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;403:6188;;;-1:-1:-1;;;403:6188:80;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1197:40;403:6188;;-1:-1:-1;;403:6188:80;;;;;:::i;:::-;;;;-1:-1:-1;403:6188:80;;;;:::o;:::-;;;:::o;2896:754::-;3113:7;403:6188;2896:754;;;;-1:-1:-1;;;;;403:6188:80;;3109:479;;2896:754;403:6188;3603:40;403:6188;3603:40;403:6188;;;;;;;;;;;;3603:40;;;:::i;:::-;;;;2896:754::o;3109:479::-;-1:-1:-1;403:6188:80;;;;3190:94;;;;3213:37;;;;3190:94;;;;;;403:6188;;;;;;;;;;;;;;;;;3190:94;403:6188;;;;;;;;:::i;:::-;-1:-1:-1;;;;;403:6188:80;;;;;;3190:94;1197:40;;3190:94;;;;;;:::i;:::-;3410:36;;3428:7;3410:36;;;:::i;:::-;;3461:117;;3109:479;;;3461:117;3557:7;;;;;:::o;3656:775::-;;;;;3846:5;;;;:::i;:::-;3867:7;403:6188;-1:-1:-1;;;;;403:6188:80;;;3863:505;;3656:775;403:6188;;4383:41;403:6188;-1:-1:-1;;;;;403:6188:80;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;-1:-1:-1;;;;;;403:6188:80;;4383:41;;;3656:775::o;3863:505::-;403:6188;;-1:-1:-1;;;3928:138:80;;;;;;-1:-1:-1;;;;;403:6188:80;;;3928:138;;;403:6188;;;;;;-1:-1:-1;;;;403:6188:80;;-1:-1:-1;;3928:138:80;403:6188;;-1:-1:-1;;;;;403:6188:80;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;;403:6188:80;;;;;;3928:138;-1:-1:-1;;3928:138:80;;;;;;:::i;:::-;4192:36;;4210:7;4192:36;;;:::i;:::-;;4243:115;;3863:505;;;;403:6188;-1:-1:-1;;403:6188:80;;;;;;;:::o;666:108::-;403:6188;;-1:-1:-1;;;731:36:80;;;403:6188;731:36;403:6188;752:4;731:36;;;;;;;-1:-1:-1;731:36:80;;;724:43;666:108;:::o;731:36::-;;;;;;;;;;;;;;:::i;:::-;666:108;:::o;403:6188::-;;;;;;;;;;;;;;;;;;:::o;6273:316::-;6389:31;;;-1:-1:-1;;;;;6397:8:80;;:::i;:::-;403:6188;;;;;;;;;;6389:31;;;;;;;;;-1:-1:-1;6389:31:80;;;6273:316;403:6188;-1:-1:-1;;;;;403:6188:80;6436:10;6432:151;;6273:316;;;:::o;6432:151::-;403:6188;;-1:-1:-1;;;6477:40:80;;-1:-1:-1;;;;;403:6188:80;;;6389:31;6477:40;;403:6188;;;;;;;;;6389:31;;403:6188;;6477:40;;403:6188;;-1:-1:-1;;403:6188:80;6477:40;;;;;;;-1:-1:-1;6477:40:80;;;6432:151;403:6188;;;;6273:316::o;403:6188::-;;;-1:-1:-1;;;403:6188:80;;6389:31;;403:6188;;;;;;;;-1:-1:-1;;;6477:40:80;403:6188;;;;;;6477:40;;;;6389:31;6477:40;6389:31;6477:40;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;6389:31;-1:-1:-1;;;;;6389:31:80;;;;;;;;;;;;;;;:::i;:::-;;;;;5935:332;-1:-1:-1;;;;;6025:8:80;;:::i;:::-;403:6188;;-1:-1:-1;;;6084:36:80;;403:6188;;6084:36;403:6188;6084:36;403:6188;;6084:36;;;;;;;;;6147:58;6084:36;-1:-1:-1;6084:36:80;;;5935:332;6172:9;-1:-1:-1;6172:9:80;;:::i;:::-;403:6188;;-1:-1:-1;;;6147:58:80;;-1:-1:-1;;;;;403:6188:80;;;6084:36;6147:58;;403:6188;;;;;;;;-1:-1:-1;;;;;403:6188:80;;;;;;;;;;;;;;-1:-1:-1;;403:6188:80;6147:58;;;;;;;-1:-1:-1;6147:58:80;;;5935:332;403:6188;;;;5935:332::o;403:6188::-;;;-1:-1:-1;;;403:6188:80;;6084:36;;403:6188;;;;;;;;;;;;;6147:58;;403:6188;6147:58;;;;6084:36;6147:58;6084:36;6147:58;;;;;;;:::i;:::-;;;;6084:36;;;;;;;;;;;;;;:::i;:::-;;;;5747:182;5825:7;403:6188;5811:10;-1:-1:-1;;;;;403:6188:80;;;5811:21;403:6188;;5855:9;5848:16;:::o;5807:116::-;5811:10;5895:17;:::o","linkReferences":{}},"methodIdentifiers":{"claimValue(bytes32)":"91d5a64c","createDecoder(address,bytes32)":"5b1b84f7","decoder()":"9cb33005","executableBalanceTopUp(uint128)":"704ed542","inheritor()":"36a52a18","initMessage(address,bytes,uint128,uint128)":"de1dd2e0","messageSent(bytes32,address,bytes,uint128)":"c2df6009","nonce()":"affed0e0","replySent(address,bytes,uint128,bytes32,bytes4)":"c78bde77","router()":"f887ea40","sendMessage(bytes,uint128)":"d5624222","sendReply(bytes32,bytes,uint128)":"29336f39","sendValueToInheritor()":"60302d24","setInheritor(address)":"12b22256","stateHash()":"701da98e","updateState(bytes32)":"8ea59e1d","valueClaimed(bytes32,address,uint128)":"14503e51"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"FailedDeployment\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"InsufficientBalance\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"value\",\"type\":\"uint128\"}],\"name\":\"ExecutableBalanceTopUpRequested\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"id\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"destination\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"payload\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"value\",\"type\":\"uint128\"}],\"name\":\"Message\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"id\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"source\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"payload\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"value\",\"type\":\"uint128\"}],\"name\":\"MessageQueueingRequested\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"payload\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"value\",\"type\":\"uint128\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"replyTo\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes4\",\"name\":\"replyCode\",\"type\":\"bytes4\"}],\"name\":\"Reply\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"repliedTo\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"source\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"payload\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"value\",\"type\":\"uint128\"}],\"name\":\"ReplyQueueingRequested\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"stateHash\",\"type\":\"bytes32\"}],\"name\":\"StateChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"claimedId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"value\",\"type\":\"uint128\"}],\"name\":\"ValueClaimed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"claimedId\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"source\",\"type\":\"address\"}],\"name\":\"ValueClaimingRequested\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_claimedId\",\"type\":\"bytes32\"}],\"name\":\"claimValue\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"}],\"name\":\"createDecoder\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decoder\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint128\",\"name\":\"_value\",\"type\":\"uint128\"}],\"name\":\"executableBalanceTopUp\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"inheritor\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"source\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"payload\",\"type\":\"bytes\"},{\"internalType\":\"uint128\",\"name\":\"value\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"executableBalance\",\"type\":\"uint128\"}],\"name\":\"initMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"id\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"destination\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"payload\",\"type\":\"bytes\"},{\"internalType\":\"uint128\",\"name\":\"value\",\"type\":\"uint128\"}],\"name\":\"messageSent\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"nonce\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"destination\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"payload\",\"type\":\"bytes\"},{\"internalType\":\"uint128\",\"name\":\"value\",\"type\":\"uint128\"},{\"internalType\":\"bytes32\",\"name\":\"replyTo\",\"type\":\"bytes32\"},{\"internalType\":\"bytes4\",\"name\":\"replyCode\",\"type\":\"bytes4\"}],\"name\":\"replySent\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"router\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_payload\",\"type\":\"bytes\"},{\"internalType\":\"uint128\",\"name\":\"_value\",\"type\":\"uint128\"}],\"name\":\"sendMessage\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_repliedTo\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"_payload\",\"type\":\"bytes\"},{\"internalType\":\"uint128\",\"name\":\"_value\",\"type\":\"uint128\"}],\"name\":\"sendReply\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"sendValueToInheritor\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_inheritor\",\"type\":\"address\"}],\"name\":\"setInheritor\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"stateHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"newStateHash\",\"type\":\"bytes32\"}],\"name\":\"updateState\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"claimedId\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"destination\",\"type\":\"address\"},{\"internalType\":\"uint128\",\"name\":\"value\",\"type\":\"uint128\"}],\"name\":\"valueClaimed\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"errors\":{\"FailedDeployment()\":[{\"details\":\"The deployment failed.\"}],\"InsufficientBalance(uint256,uint256)\":[{\"details\":\"The ETH balance of the account is not enough to perform the operation.\"}]},\"events\":{\"ExecutableBalanceTopUpRequested(uint128)\":{\"details\":\"Emitted when a user requests program's executable balance top up with his tokens. NOTE: It's event for NODES: it requires to top up balance of the program.\"},\"Message(bytes32,address,bytes,uint128)\":{\"details\":\"Emitted when the program sends outgoing message. NOTE: It's event for USERS: it informs about new message sent from program.\"},\"MessageQueueingRequested(bytes32,address,bytes,uint128)\":{\"details\":\"Emitted when a new message is sent to be queued. NOTE: It's event for NODES: it requires to insert message in the program's queue.\"},\"Reply(bytes,uint128,bytes32,bytes4)\":{\"details\":\"Emitted when the program sends reply message. NOTE: It's event for USERS: it informs about new reply sent from program.\"},\"ReplyQueueingRequested(bytes32,address,bytes,uint128)\":{\"details\":\"Emitted when a new reply is sent and requested to be verified and queued. NOTE: It's event for NODES: it requires to insert message in the program's queue, if message, exists.\"},\"StateChanged(bytes32)\":{\"details\":\"Emitted when the state hash of program is changed. NOTE: It's event for USERS: it informs about state changes.\"},\"ValueClaimed(bytes32,uint128)\":{\"details\":\"Emitted when a user succeed in claiming value request and receives balance. NOTE: It's event for USERS: it informs about value claimed.\"},\"ValueClaimingRequested(bytes32,address)\":{\"details\":\"Emitted when a reply's value is requested to be verified and claimed. NOTE: It's event for NODES: it requires to claim value from message, if exists.\"}},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/Mirror.sol\":\"Mirror\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/openzeppelin-contracts-upgradeable/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts-upgradeable/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin-foundry-upgrades/=lib/openzeppelin-foundry-upgrades/src/\",\":solidity-stringutils/=lib/openzeppelin-foundry-upgrades/lib/solidity-stringutils/\"],\"viaIR\":true},\"sources\":{\"lib/openzeppelin-contracts/contracts/proxy/Clones.sol\":{\"keccak256\":\"0x4cc853b89072428e406c60c6e8d5280b31f9d99d6caf7b041650e649746513a6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://38a1bbdb89a8f5d1820a2dcc34b5086a6e199c7a8965007345975b5db8997a64\",\"dweb:/ipfs/QmcN6yJBkoserTqAMpue55HmMCMf7dGJYUbGi8p366HqZq\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009\",\"dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x88f7b6f070ad1de2bf899da6978ed74b5038eac78c01b7359b92b60c3d965c28\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c436edb6733a036607c6f17cc590e8ee351363a8cb4c564a98d9a66392c89323\",\"dweb:/ipfs/QmcJvJR2K3EtYcKEXVpQ1WqT6TvAbVem5HR1FirAsqEXFR\"]},\"lib/openzeppelin-contracts/contracts/utils/Errors.sol\":{\"keccak256\":\"0xc452b8c0ab5a57e6ca49c4fbe6aead2460c2f8d60d58bc60af68e559b7ca1179\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0980b3b9e8cd9d9a0f2ae848f0f36a85158887e6fd961142a13b11299ae7f30a\",\"dweb:/ipfs/QmUrmDji3NR2V3YezV8xHSS3wjeBKq16FL7cHdBCnwLjKd\"]},\"src/IMirror.sol\":{\"keccak256\":\"0x78105f388516b83fcb68f7c006c5d9d685bc8ad7fadcdfa56c0919efa79a6373\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://3a8ab1264895b4f5c8fd3aa18524016c4e88712a50e0a9935f421e13f3e09601\",\"dweb:/ipfs/QmXyVe9k37fDFWmrfjYHisxmqnEynevYo88uVrnRAmYW6L\"]},\"src/IMirrorDecoder.sol\":{\"keccak256\":\"0x95bfe42461bd03e726f894679f4b4133034a405672fe8343c3343d0964cf9072\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://a0907d84596ed62b9ea222fd841fc0259e87b17dd0b5af3f6d0d8a8f4726994d\",\"dweb:/ipfs/QmTkumKh7DBJNXrark6NBqBxCtnYmbRMGYkRyxxzpW9wKr\"]},\"src/IMirrorProxy.sol\":{\"keccak256\":\"0x56448b8905cc408f5656d47c893f3cda6623992ef1ba6a2e0a1be06b04c0b570\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://7d148123c4f51abce8b8e92c45830dd7de3829e228f37fd2e9093616dd7b2469\",\"dweb:/ipfs/QmTkohe2uFVsJiCKdu7QBFYff6L3tzvE7rTjnRhnjdgEmG\"]},\"src/IRouter.sol\":{\"keccak256\":\"0xb16e44a8917c8292c47779fdcb6a8fa23a394258370375d83774e324c159a8d2\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://356609e9f3ed19904806ba235c5fd247171754eea0f479d826558a9a7908cf05\",\"dweb:/ipfs/QmXPnJzKpk6AhqXjd2cKgReTvnZULcn2tdH2RiU8avLP7P\"]},\"src/IWrappedVara.sol\":{\"keccak256\":\"0xfc2f9955b1d8f74a98a087b490a03b86933c423eb58b840f1e3eb4cd58eac175\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://5942f66657786636ddb832587404810bf65fc757e12ddaa07393a0b3f885840f\",\"dweb:/ipfs/QmTEP15EF9zrA7bCj8cesNd8QyUPHM3XgtKJecCUjsA5Jf\"]},\"src/Mirror.sol\":{\"keccak256\":\"0xdaa3b0c9b0b6ee16e301331fa6eb8924acf99f6d1428506351881187f2c1cbef\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://57342861c4a20fb28b983d0235c56d42073138c1996ff6b7ee7e29a0697d31a6\",\"dweb:/ipfs/QmNYCZZFgBADfMR9HSugS4RcH3jniLnEVhRquV6vD82uri\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.26+commit.8a97fa7a"},"language":"Solidity","output":{"abi":[{"inputs":[],"type":"error","name":"FailedDeployment"},{"inputs":[{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"type":"error","name":"InsufficientBalance"},{"inputs":[{"internalType":"uint128","name":"value","type":"uint128","indexed":false}],"type":"event","name":"ExecutableBalanceTopUpRequested","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"id","type":"bytes32","indexed":false},{"internalType":"address","name":"destination","type":"address","indexed":true},{"internalType":"bytes","name":"payload","type":"bytes","indexed":false},{"internalType":"uint128","name":"value","type":"uint128","indexed":false}],"type":"event","name":"Message","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"id","type":"bytes32","indexed":false},{"internalType":"address","name":"source","type":"address","indexed":true},{"internalType":"bytes","name":"payload","type":"bytes","indexed":false},{"internalType":"uint128","name":"value","type":"uint128","indexed":false}],"type":"event","name":"MessageQueueingRequested","anonymous":false},{"inputs":[{"internalType":"bytes","name":"payload","type":"bytes","indexed":false},{"internalType":"uint128","name":"value","type":"uint128","indexed":false},{"internalType":"bytes32","name":"replyTo","type":"bytes32","indexed":false},{"internalType":"bytes4","name":"replyCode","type":"bytes4","indexed":true}],"type":"event","name":"Reply","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"repliedTo","type":"bytes32","indexed":false},{"internalType":"address","name":"source","type":"address","indexed":true},{"internalType":"bytes","name":"payload","type":"bytes","indexed":false},{"internalType":"uint128","name":"value","type":"uint128","indexed":false}],"type":"event","name":"ReplyQueueingRequested","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"stateHash","type":"bytes32","indexed":false}],"type":"event","name":"StateChanged","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"claimedId","type":"bytes32","indexed":false},{"internalType":"uint128","name":"value","type":"uint128","indexed":false}],"type":"event","name":"ValueClaimed","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"claimedId","type":"bytes32","indexed":false},{"internalType":"address","name":"source","type":"address","indexed":true}],"type":"event","name":"ValueClaimingRequested","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"_claimedId","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"claimValue"},{"inputs":[{"internalType":"address","name":"implementation","type":"address"},{"internalType":"bytes32","name":"salt","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"createDecoder"},{"inputs":[],"stateMutability":"view","type":"function","name":"decoder","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"uint128","name":"_value","type":"uint128"}],"stateMutability":"payable","type":"function","name":"executableBalanceTopUp"},{"inputs":[],"stateMutability":"view","type":"function","name":"inheritor","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"source","type":"address"},{"internalType":"bytes","name":"payload","type":"bytes"},{"internalType":"uint128","name":"value","type":"uint128"},{"internalType":"uint128","name":"executableBalance","type":"uint128"}],"stateMutability":"nonpayable","type":"function","name":"initMessage"},{"inputs":[{"internalType":"bytes32","name":"id","type":"bytes32"},{"internalType":"address","name":"destination","type":"address"},{"internalType":"bytes","name":"payload","type":"bytes"},{"internalType":"uint128","name":"value","type":"uint128"}],"stateMutability":"nonpayable","type":"function","name":"messageSent"},{"inputs":[],"stateMutability":"view","type":"function","name":"nonce","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"destination","type":"address"},{"internalType":"bytes","name":"payload","type":"bytes"},{"internalType":"uint128","name":"value","type":"uint128"},{"internalType":"bytes32","name":"replyTo","type":"bytes32"},{"internalType":"bytes4","name":"replyCode","type":"bytes4"}],"stateMutability":"nonpayable","type":"function","name":"replySent"},{"inputs":[],"stateMutability":"view","type":"function","name":"router","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"bytes","name":"_payload","type":"bytes"},{"internalType":"uint128","name":"_value","type":"uint128"}],"stateMutability":"payable","type":"function","name":"sendMessage","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"bytes32","name":"_repliedTo","type":"bytes32"},{"internalType":"bytes","name":"_payload","type":"bytes"},{"internalType":"uint128","name":"_value","type":"uint128"}],"stateMutability":"payable","type":"function","name":"sendReply"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"sendValueToInheritor"},{"inputs":[{"internalType":"address","name":"_inheritor","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setInheritor"},{"inputs":[],"stateMutability":"view","type":"function","name":"stateHash","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"bytes32","name":"newStateHash","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"updateState"},{"inputs":[{"internalType":"bytes32","name":"claimedId","type":"bytes32"},{"internalType":"address","name":"destination","type":"address"},{"internalType":"uint128","name":"value","type":"uint128"}],"stateMutability":"nonpayable","type":"function","name":"valueClaimed"}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/openzeppelin-contracts-upgradeable/lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","halmos-cheatcodes/=lib/openzeppelin-contracts-upgradeable/lib/halmos-cheatcodes/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/","openzeppelin-foundry-upgrades/=lib/openzeppelin-foundry-upgrades/src/","solidity-stringutils/=lib/openzeppelin-foundry-upgrades/lib/solidity-stringutils/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/Mirror.sol":"Mirror"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/openzeppelin-contracts/contracts/proxy/Clones.sol":{"keccak256":"0x4cc853b89072428e406c60c6e8d5280b31f9d99d6caf7b041650e649746513a6","urls":["bzz-raw://38a1bbdb89a8f5d1820a2dcc34b5086a6e199c7a8965007345975b5db8997a64","dweb:/ipfs/QmcN6yJBkoserTqAMpue55HmMCMf7dGJYUbGi8p366HqZq"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4","urls":["bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009","dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"keccak256":"0x88f7b6f070ad1de2bf899da6978ed74b5038eac78c01b7359b92b60c3d965c28","urls":["bzz-raw://c436edb6733a036607c6f17cc590e8ee351363a8cb4c564a98d9a66392c89323","dweb:/ipfs/QmcJvJR2K3EtYcKEXVpQ1WqT6TvAbVem5HR1FirAsqEXFR"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Errors.sol":{"keccak256":"0xc452b8c0ab5a57e6ca49c4fbe6aead2460c2f8d60d58bc60af68e559b7ca1179","urls":["bzz-raw://0980b3b9e8cd9d9a0f2ae848f0f36a85158887e6fd961142a13b11299ae7f30a","dweb:/ipfs/QmUrmDji3NR2V3YezV8xHSS3wjeBKq16FL7cHdBCnwLjKd"],"license":"MIT"},"src/IMirror.sol":{"keccak256":"0x78105f388516b83fcb68f7c006c5d9d685bc8ad7fadcdfa56c0919efa79a6373","urls":["bzz-raw://3a8ab1264895b4f5c8fd3aa18524016c4e88712a50e0a9935f421e13f3e09601","dweb:/ipfs/QmXyVe9k37fDFWmrfjYHisxmqnEynevYo88uVrnRAmYW6L"],"license":"UNLICENSED"},"src/IMirrorDecoder.sol":{"keccak256":"0x95bfe42461bd03e726f894679f4b4133034a405672fe8343c3343d0964cf9072","urls":["bzz-raw://a0907d84596ed62b9ea222fd841fc0259e87b17dd0b5af3f6d0d8a8f4726994d","dweb:/ipfs/QmTkumKh7DBJNXrark6NBqBxCtnYmbRMGYkRyxxzpW9wKr"],"license":"UNLICENSED"},"src/IMirrorProxy.sol":{"keccak256":"0x56448b8905cc408f5656d47c893f3cda6623992ef1ba6a2e0a1be06b04c0b570","urls":["bzz-raw://7d148123c4f51abce8b8e92c45830dd7de3829e228f37fd2e9093616dd7b2469","dweb:/ipfs/QmTkohe2uFVsJiCKdu7QBFYff6L3tzvE7rTjnRhnjdgEmG"],"license":"UNLICENSED"},"src/IRouter.sol":{"keccak256":"0xb16e44a8917c8292c47779fdcb6a8fa23a394258370375d83774e324c159a8d2","urls":["bzz-raw://356609e9f3ed19904806ba235c5fd247171754eea0f479d826558a9a7908cf05","dweb:/ipfs/QmXPnJzKpk6AhqXjd2cKgReTvnZULcn2tdH2RiU8avLP7P"],"license":"UNLICENSED"},"src/IWrappedVara.sol":{"keccak256":"0xfc2f9955b1d8f74a98a087b490a03b86933c423eb58b840f1e3eb4cd58eac175","urls":["bzz-raw://5942f66657786636ddb832587404810bf65fc757e12ddaa07393a0b3f885840f","dweb:/ipfs/QmTEP15EF9zrA7bCj8cesNd8QyUPHM3XgtKJecCUjsA5Jf"],"license":"UNLICENSED"},"src/Mirror.sol":{"keccak256":"0xdaa3b0c9b0b6ee16e301331fa6eb8924acf99f6d1428506351881187f2c1cbef","urls":["bzz-raw://57342861c4a20fb28b983d0235c56d42073138c1996ff6b7ee7e29a0697d31a6","dweb:/ipfs/QmNYCZZFgBADfMR9HSugS4RcH3jniLnEVhRquV6vD82uri"],"license":"UNLICENSED"}},"version":1},"storageLayout":{"storage":[{"astId":54052,"contract":"src/Mirror.sol:Mirror","label":"stateHash","offset":0,"slot":"0","type":"t_bytes32"},{"astId":54054,"contract":"src/Mirror.sol:Mirror","label":"inheritor","offset":0,"slot":"1","type":"t_address"},{"astId":54056,"contract":"src/Mirror.sol:Mirror","label":"nonce","offset":0,"slot":"2","type":"t_uint256"},{"astId":54058,"contract":"src/Mirror.sol:Mirror","label":"decoder","offset":0,"slot":"3","type":"t_address"}],"types":{"t_address":{"encoding":"inplace","label":"address","numberOfBytes":"20"},"t_bytes32":{"encoding":"inplace","label":"bytes32","numberOfBytes":"32"},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"}}},"ast":{"absolutePath":"src/Mirror.sol","id":54636,"exportedSymbols":{"Clones":[41121],"IMirror":[53656],"IMirrorDecoder":[53691],"IMirrorProxy":[53699],"IRouter":[54023],"IWrappedVara":[54034],"Mirror":[54635]},"nodeType":"SourceUnit","src":"39:6553:80","nodes":[{"id":54036,"nodeType":"PragmaDirective","src":"39:24:80","nodes":[],"literals":["solidity","^","0.8",".26"]},{"id":54038,"nodeType":"ImportDirective","src":"65:48:80","nodes":[],"absolutePath":"src/IMirrorProxy.sol","file":"./IMirrorProxy.sol","nameLocation":"-1:-1:-1","scope":54636,"sourceUnit":53700,"symbolAliases":[{"foreign":{"id":54037,"name":"IMirrorProxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53699,"src":"73:12:80","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":54040,"nodeType":"ImportDirective","src":"114:38:80","nodes":[],"absolutePath":"src/IMirror.sol","file":"./IMirror.sol","nameLocation":"-1:-1:-1","scope":54636,"sourceUnit":53657,"symbolAliases":[{"foreign":{"id":54039,"name":"IMirror","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53656,"src":"122:7:80","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":54042,"nodeType":"ImportDirective","src":"153:38:80","nodes":[],"absolutePath":"src/IRouter.sol","file":"./IRouter.sol","nameLocation":"-1:-1:-1","scope":54636,"sourceUnit":54024,"symbolAliases":[{"foreign":{"id":54041,"name":"IRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54023,"src":"161:7:80","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":54044,"nodeType":"ImportDirective","src":"192:48:80","nodes":[],"absolutePath":"src/IWrappedVara.sol","file":"./IWrappedVara.sol","nameLocation":"-1:-1:-1","scope":54636,"sourceUnit":54035,"symbolAliases":[{"foreign":{"id":54043,"name":"IWrappedVara","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54034,"src":"200:12:80","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":54046,"nodeType":"ImportDirective","src":"241:52:80","nodes":[],"absolutePath":"src/IMirrorDecoder.sol","file":"./IMirrorDecoder.sol","nameLocation":"-1:-1:-1","scope":54636,"sourceUnit":53692,"symbolAliases":[{"foreign":{"id":54045,"name":"IMirrorDecoder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53691,"src":"249:14:80","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":54048,"nodeType":"ImportDirective","src":"294:64:80","nodes":[],"absolutePath":"lib/openzeppelin-contracts/contracts/proxy/Clones.sol","file":"@openzeppelin/contracts/proxy/Clones.sol","nameLocation":"-1:-1:-1","scope":54636,"sourceUnit":41122,"symbolAliases":[{"foreign":{"id":54047,"name":"Clones","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41121,"src":"302:6:80","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":54635,"nodeType":"ContractDefinition","src":"403:6188:80","nodes":[{"id":54052,"nodeType":"VariableDeclaration","src":"436:24:80","nodes":[],"baseFunctions":[53543],"constant":false,"functionSelector":"701da98e","mutability":"mutable","name":"stateHash","nameLocation":"451:9:80","scope":54635,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":54051,"name":"bytes32","nodeType":"ElementaryTypeName","src":"436:7:80","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"public"},{"id":54054,"nodeType":"VariableDeclaration","src":"466:24:80","nodes":[],"baseFunctions":[53548],"constant":false,"functionSelector":"36a52a18","mutability":"mutable","name":"inheritor","nameLocation":"481:9:80","scope":54635,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":54053,"name":"address","nodeType":"ElementaryTypeName","src":"466:7:80","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"public"},{"id":54056,"nodeType":"VariableDeclaration","src":"568:20:80","nodes":[],"baseFunctions":[53553],"constant":false,"functionSelector":"affed0e0","mutability":"mutable","name":"nonce","nameLocation":"583:5:80","scope":54635,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":54055,"name":"uint256","nodeType":"ElementaryTypeName","src":"568:7:80","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"public"},{"id":54058,"nodeType":"VariableDeclaration","src":"604:22:80","nodes":[],"baseFunctions":[53563],"constant":false,"functionSelector":"9cb33005","mutability":"mutable","name":"decoder","nameLocation":"619:7:80","scope":54635,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":54057,"name":"address","nodeType":"ElementaryTypeName","src":"604:7:80","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"public"},{"id":54073,"nodeType":"FunctionDefinition","src":"666:108:80","nodes":[],"body":{"id":54072,"nodeType":"Block","src":"714:60:80","nodes":[],"statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"arguments":[{"id":54066,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"752:4:80","typeDescriptions":{"typeIdentifier":"t_contract$_Mirror_$54635","typeString":"contract Mirror"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Mirror_$54635","typeString":"contract Mirror"}],"id":54065,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"744:7:80","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":54064,"name":"address","nodeType":"ElementaryTypeName","src":"744:7:80","typeDescriptions":{}}},"id":54067,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"744:13:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":54063,"name":"IMirrorProxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53699,"src":"731:12:80","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IMirrorProxy_$53699_$","typeString":"type(contract IMirrorProxy)"}},"id":54068,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"731:27:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IMirrorProxy_$53699","typeString":"contract IMirrorProxy"}},"id":54069,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"759:6:80","memberName":"router","nodeType":"MemberAccess","referencedDeclaration":53698,"src":"731:34:80","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":54070,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"731:36:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":54062,"id":54071,"nodeType":"Return","src":"724:43:80"}]},"baseFunctions":[53558],"functionSelector":"f887ea40","implemented":true,"kind":"function","modifiers":[],"name":"router","nameLocation":"675:6:80","parameters":{"id":54059,"nodeType":"ParameterList","parameters":[],"src":"681:2:80"},"returnParameters":{"id":54062,"nodeType":"ParameterList","parameters":[{"constant":false,"id":54061,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":54073,"src":"705:7:80","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":54060,"name":"address","nodeType":"ElementaryTypeName","src":"705:7:80","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"704:9:80"},"scope":54635,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":54132,"nodeType":"FunctionDefinition","src":"893:445:80","nodes":[],"body":{"id":54131,"nodeType":"Block","src":"990:348:80","nodes":[],"statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":54088,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":54083,"name":"inheritor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54054,"src":"1008:9:80","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":54086,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1029:1:80","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":54085,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1021:7:80","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":54084,"name":"address","nodeType":"ElementaryTypeName","src":"1021:7:80","typeDescriptions":{}}},"id":54087,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1021:10:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1008:23:80","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"70726f6772616d206973207465726d696e61746564","id":54089,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1033:23:80","typeDescriptions":{"typeIdentifier":"t_stringliteral_b99e931e301d9bf46f7569c6df99f13b4ced53db9be4aedb00fc4bbd41b4ec22","typeString":"literal_string \"program is terminated\""},"value":"program is terminated"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_b99e931e301d9bf46f7569c6df99f13b4ced53db9be4aedb00fc4bbd41b4ec22","typeString":"literal_string \"program is terminated\""}],"id":54082,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"1000:7:80","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":54090,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1000:57:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":54091,"nodeType":"ExpressionStatement","src":"1000:57:80"},{"assignments":[54093],"declarations":[{"constant":false,"id":54093,"mutability":"mutable","name":"baseFee","nameLocation":"1076:7:80","nodeType":"VariableDeclaration","scope":54131,"src":"1068:15:80","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":54092,"name":"uint128","nodeType":"ElementaryTypeName","src":"1068:7:80","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"id":54100,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":54095,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54073,"src":"1094:6:80","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":54096,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1094:8:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":54094,"name":"IRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54023,"src":"1086:7:80","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IRouter_$54023_$","typeString":"type(contract IRouter)"}},"id":54097,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1086:17:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IRouter_$54023","typeString":"contract IRouter"}},"id":54098,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1104:7:80","memberName":"baseFee","nodeType":"MemberAccess","referencedDeclaration":53967,"src":"1086:25:80","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint128_$","typeString":"function () view external returns (uint128)"}},"id":54099,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1086:27:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"VariableDeclarationStatement","src":"1068:45:80"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint128","typeString":"uint128"},"id":54104,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":54102,"name":"baseFee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54093,"src":"1146:7:80","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":54103,"name":"_value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54077,"src":"1156:6:80","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"src":"1146:16:80","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint128","typeString":"uint128"}],"id":54101,"name":"_retrieveValueToRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54596,"src":"1123:22:80","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint128_$returns$__$","typeString":"function (uint128)"}},"id":54105,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1123:40:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":54106,"nodeType":"ExpressionStatement","src":"1123:40:80"},{"assignments":[54108],"declarations":[{"constant":false,"id":54108,"mutability":"mutable","name":"id","nameLocation":"1182:2:80","nodeType":"VariableDeclaration","scope":54131,"src":"1174:10:80","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":54107,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1174:7:80","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":54120,"initialValue":{"arguments":[{"arguments":[{"arguments":[{"id":54114,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"1222:4:80","typeDescriptions":{"typeIdentifier":"t_contract$_Mirror_$54635","typeString":"contract Mirror"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Mirror_$54635","typeString":"contract Mirror"}],"id":54113,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1214:7:80","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":54112,"name":"address","nodeType":"ElementaryTypeName","src":"1214:7:80","typeDescriptions":{}}},"id":54115,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1214:13:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":54117,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"1229:7:80","subExpression":{"id":54116,"name":"nonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54056,"src":"1229:5:80","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":54110,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"1197:3:80","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":54111,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1201:12:80","memberName":"encodePacked","nodeType":"MemberAccess","src":"1197:16:80","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":54118,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1197:40:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":54109,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"1187:9:80","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":54119,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1187:51:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"1174:64:80"},{"eventCall":{"arguments":[{"id":54122,"name":"id","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54108,"src":"1279:2:80","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"arguments":[],"expression":{"argumentTypes":[],"id":54123,"name":"_source","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54559,"src":"1283:7:80","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":54124,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1283:9:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":54125,"name":"_payload","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54075,"src":"1294:8:80","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},{"id":54126,"name":"_value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54077,"src":"1304:6:80","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"},{"typeIdentifier":"t_uint128","typeString":"uint128"}],"id":54121,"name":"MessageQueueingRequested","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53486,"src":"1254:24:80","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$_t_address_$_t_bytes_memory_ptr_$_t_uint128_$returns$__$","typeString":"function (bytes32,address,bytes memory,uint128)"}},"id":54127,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1254:57:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":54128,"nodeType":"EmitStatement","src":"1249:62:80"},{"expression":{"id":54129,"name":"id","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54108,"src":"1329:2:80","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":54081,"id":54130,"nodeType":"Return","src":"1322:9:80"}]},"baseFunctions":[53572],"functionSelector":"d5624222","implemented":true,"kind":"function","modifiers":[],"name":"sendMessage","nameLocation":"902:11:80","parameters":{"id":54078,"nodeType":"ParameterList","parameters":[{"constant":false,"id":54075,"mutability":"mutable","name":"_payload","nameLocation":"929:8:80","nodeType":"VariableDeclaration","scope":54132,"src":"914:23:80","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":54074,"name":"bytes","nodeType":"ElementaryTypeName","src":"914:5:80","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":54077,"mutability":"mutable","name":"_value","nameLocation":"947:6:80","nodeType":"VariableDeclaration","scope":54132,"src":"939:14:80","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":54076,"name":"uint128","nodeType":"ElementaryTypeName","src":"939:7:80","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"913:41:80"},"returnParameters":{"id":54081,"nodeType":"ParameterList","parameters":[{"constant":false,"id":54080,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":54132,"src":"981:7:80","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":54079,"name":"bytes32","nodeType":"ElementaryTypeName","src":"981:7:80","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"980:9:80"},"scope":54635,"stateMutability":"payable","virtual":false,"visibility":"external"},{"id":54175,"nodeType":"FunctionDefinition","src":"1344:356:80","nodes":[],"body":{"id":54174,"nodeType":"Block","src":"1441:259:80","nodes":[],"statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":54147,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":54142,"name":"inheritor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54054,"src":"1459:9:80","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":54145,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1480:1:80","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":54144,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1472:7:80","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":54143,"name":"address","nodeType":"ElementaryTypeName","src":"1472:7:80","typeDescriptions":{}}},"id":54146,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1472:10:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1459:23:80","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"70726f6772616d206973207465726d696e61746564","id":54148,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1484:23:80","typeDescriptions":{"typeIdentifier":"t_stringliteral_b99e931e301d9bf46f7569c6df99f13b4ced53db9be4aedb00fc4bbd41b4ec22","typeString":"literal_string \"program is terminated\""},"value":"program is terminated"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_b99e931e301d9bf46f7569c6df99f13b4ced53db9be4aedb00fc4bbd41b4ec22","typeString":"literal_string \"program is terminated\""}],"id":54141,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"1451:7:80","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":54149,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1451:57:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":54150,"nodeType":"ExpressionStatement","src":"1451:57:80"},{"assignments":[54152],"declarations":[{"constant":false,"id":54152,"mutability":"mutable","name":"baseFee","nameLocation":"1527:7:80","nodeType":"VariableDeclaration","scope":54174,"src":"1519:15:80","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":54151,"name":"uint128","nodeType":"ElementaryTypeName","src":"1519:7:80","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"id":54159,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":54154,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54073,"src":"1545:6:80","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":54155,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1545:8:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":54153,"name":"IRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54023,"src":"1537:7:80","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IRouter_$54023_$","typeString":"type(contract IRouter)"}},"id":54156,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1537:17:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IRouter_$54023","typeString":"contract IRouter"}},"id":54157,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1555:7:80","memberName":"baseFee","nodeType":"MemberAccess","referencedDeclaration":53967,"src":"1537:25:80","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint128_$","typeString":"function () view external returns (uint128)"}},"id":54158,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1537:27:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"VariableDeclarationStatement","src":"1519:45:80"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint128","typeString":"uint128"},"id":54163,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":54161,"name":"baseFee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54152,"src":"1597:7:80","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":54162,"name":"_value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54138,"src":"1607:6:80","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"src":"1597:16:80","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint128","typeString":"uint128"}],"id":54160,"name":"_retrieveValueToRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54596,"src":"1574:22:80","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint128_$returns$__$","typeString":"function (uint128)"}},"id":54164,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1574:40:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":54165,"nodeType":"ExpressionStatement","src":"1574:40:80"},{"eventCall":{"arguments":[{"id":54167,"name":"_repliedTo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54134,"src":"1653:10:80","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"arguments":[],"expression":{"argumentTypes":[],"id":54168,"name":"_source","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54559,"src":"1665:7:80","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":54169,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1665:9:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":54170,"name":"_payload","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54136,"src":"1676:8:80","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},{"id":54171,"name":"_value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54138,"src":"1686:6:80","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"},{"typeIdentifier":"t_uint128","typeString":"uint128"}],"id":54166,"name":"ReplyQueueingRequested","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53497,"src":"1630:22:80","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$_t_address_$_t_bytes_memory_ptr_$_t_uint128_$returns$__$","typeString":"function (bytes32,address,bytes memory,uint128)"}},"id":54172,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1630:63:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":54173,"nodeType":"EmitStatement","src":"1625:68:80"}]},"baseFunctions":[53581],"functionSelector":"29336f39","implemented":true,"kind":"function","modifiers":[],"name":"sendReply","nameLocation":"1353:9:80","parameters":{"id":54139,"nodeType":"ParameterList","parameters":[{"constant":false,"id":54134,"mutability":"mutable","name":"_repliedTo","nameLocation":"1371:10:80","nodeType":"VariableDeclaration","scope":54175,"src":"1363:18:80","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":54133,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1363:7:80","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":54136,"mutability":"mutable","name":"_payload","nameLocation":"1398:8:80","nodeType":"VariableDeclaration","scope":54175,"src":"1383:23:80","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":54135,"name":"bytes","nodeType":"ElementaryTypeName","src":"1383:5:80","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":54138,"mutability":"mutable","name":"_value","nameLocation":"1416:6:80","nodeType":"VariableDeclaration","scope":54175,"src":"1408:14:80","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":54137,"name":"uint128","nodeType":"ElementaryTypeName","src":"1408:7:80","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"1362:61:80"},"returnParameters":{"id":54140,"nodeType":"ParameterList","parameters":[],"src":"1441:0:80"},"scope":54635,"stateMutability":"payable","virtual":false,"visibility":"external"},{"id":54197,"nodeType":"FunctionDefinition","src":"1706:184:80","nodes":[],"body":{"id":54196,"nodeType":"Block","src":"1755:135:80","nodes":[],"statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":54186,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":54181,"name":"inheritor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54054,"src":"1773:9:80","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":54184,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1794:1:80","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":54183,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1786:7:80","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":54182,"name":"address","nodeType":"ElementaryTypeName","src":"1786:7:80","typeDescriptions":{}}},"id":54185,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1786:10:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1773:23:80","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"70726f6772616d206973207465726d696e61746564","id":54187,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1798:23:80","typeDescriptions":{"typeIdentifier":"t_stringliteral_b99e931e301d9bf46f7569c6df99f13b4ced53db9be4aedb00fc4bbd41b4ec22","typeString":"literal_string \"program is terminated\""},"value":"program is terminated"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_b99e931e301d9bf46f7569c6df99f13b4ced53db9be4aedb00fc4bbd41b4ec22","typeString":"literal_string \"program is terminated\""}],"id":54180,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"1765:7:80","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":54188,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1765:57:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":54189,"nodeType":"ExpressionStatement","src":"1765:57:80"},{"eventCall":{"arguments":[{"id":54191,"name":"_claimedId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54177,"src":"1861:10:80","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"arguments":[],"expression":{"argumentTypes":[],"id":54192,"name":"_source","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54559,"src":"1873:7:80","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":54193,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1873:9:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"id":54190,"name":"ValueClaimingRequested","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53504,"src":"1838:22:80","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$_t_address_$returns$__$","typeString":"function (bytes32,address)"}},"id":54194,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1838:45:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":54195,"nodeType":"EmitStatement","src":"1833:50:80"}]},"baseFunctions":[53586],"functionSelector":"91d5a64c","implemented":true,"kind":"function","modifiers":[],"name":"claimValue","nameLocation":"1715:10:80","parameters":{"id":54178,"nodeType":"ParameterList","parameters":[{"constant":false,"id":54177,"mutability":"mutable","name":"_claimedId","nameLocation":"1734:10:80","nodeType":"VariableDeclaration","scope":54197,"src":"1726:18:80","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":54176,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1726:7:80","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1725:20:80"},"returnParameters":{"id":54179,"nodeType":"ParameterList","parameters":[],"src":"1755:0:80"},"scope":54635,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":54221,"nodeType":"FunctionDefinition","src":"1896:235:80","nodes":[],"body":{"id":54220,"nodeType":"Block","src":"1961:170:80","nodes":[],"statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":54208,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":54203,"name":"inheritor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54054,"src":"1979:9:80","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":54206,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2000:1:80","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":54205,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1992:7:80","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":54204,"name":"address","nodeType":"ElementaryTypeName","src":"1992:7:80","typeDescriptions":{}}},"id":54207,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1992:10:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1979:23:80","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"70726f6772616d206973207465726d696e61746564","id":54209,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2004:23:80","typeDescriptions":{"typeIdentifier":"t_stringliteral_b99e931e301d9bf46f7569c6df99f13b4ced53db9be4aedb00fc4bbd41b4ec22","typeString":"literal_string \"program is terminated\""},"value":"program is terminated"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_b99e931e301d9bf46f7569c6df99f13b4ced53db9be4aedb00fc4bbd41b4ec22","typeString":"literal_string \"program is terminated\""}],"id":54202,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"1971:7:80","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":54210,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1971:57:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":54211,"nodeType":"ExpressionStatement","src":"1971:57:80"},{"expression":{"arguments":[{"id":54213,"name":"_value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54199,"src":"2062:6:80","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint128","typeString":"uint128"}],"id":54212,"name":"_retrieveValueToRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54596,"src":"2039:22:80","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint128_$returns$__$","typeString":"function (uint128)"}},"id":54214,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2039:30:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":54215,"nodeType":"ExpressionStatement","src":"2039:30:80"},{"eventCall":{"arguments":[{"id":54217,"name":"_value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54199,"src":"2117:6:80","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint128","typeString":"uint128"}],"id":54216,"name":"ExecutableBalanceTopUpRequested","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53509,"src":"2085:31:80","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint128_$returns$__$","typeString":"function (uint128)"}},"id":54218,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2085:39:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":54219,"nodeType":"EmitStatement","src":"2080:44:80"}]},"baseFunctions":[53591],"functionSelector":"704ed542","implemented":true,"kind":"function","modifiers":[],"name":"executableBalanceTopUp","nameLocation":"1905:22:80","parameters":{"id":54200,"nodeType":"ParameterList","parameters":[{"constant":false,"id":54199,"mutability":"mutable","name":"_value","nameLocation":"1936:6:80","nodeType":"VariableDeclaration","scope":54221,"src":"1928:14:80","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":54198,"name":"uint128","nodeType":"ElementaryTypeName","src":"1928:7:80","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"1927:16:80"},"returnParameters":{"id":54201,"nodeType":"ParameterList","parameters":[],"src":"1961:0:80"},"scope":54635,"stateMutability":"payable","virtual":false,"visibility":"external"},{"id":54260,"nodeType":"FunctionDefinition","src":"2137:267:80","nodes":[],"body":{"id":54259,"nodeType":"Block","src":"2176:228:80","nodes":[],"statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":54230,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":54225,"name":"inheritor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54054,"src":"2194:9:80","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":54228,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2215:1:80","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":54227,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2207:7:80","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":54226,"name":"address","nodeType":"ElementaryTypeName","src":"2207:7:80","typeDescriptions":{}}},"id":54229,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2207:10:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2194:23:80","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"70726f6772616d206973206e6f74207465726d696e61746564","id":54231,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2219:27:80","typeDescriptions":{"typeIdentifier":"t_stringliteral_645ea9267b04b6ac53df8eea2c448cbffac59a494197543c99a5f296932bd588","typeString":"literal_string \"program is not terminated\""},"value":"program is not terminated"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_645ea9267b04b6ac53df8eea2c448cbffac59a494197543c99a5f296932bd588","typeString":"literal_string \"program is not terminated\""}],"id":54224,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"2186:7:80","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":54232,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2186:61:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":54233,"nodeType":"ExpressionStatement","src":"2186:61:80"},{"assignments":[54235],"declarations":[{"constant":false,"id":54235,"mutability":"mutable","name":"balance","nameLocation":"2266:7:80","nodeType":"VariableDeclaration","scope":54259,"src":"2258:15:80","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":54234,"name":"uint256","nodeType":"ElementaryTypeName","src":"2258:7:80","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":54250,"initialValue":{"arguments":[{"arguments":[{"id":54247,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"2340:4:80","typeDescriptions":{"typeIdentifier":"t_contract$_Mirror_$54635","typeString":"contract Mirror"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Mirror_$54635","typeString":"contract Mirror"}],"id":54246,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2332:7:80","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":54245,"name":"address","nodeType":"ElementaryTypeName","src":"2332:7:80","typeDescriptions":{}}},"id":54248,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2332:13:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":54238,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54073,"src":"2297:6:80","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":54239,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2297:8:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":54237,"name":"IRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54023,"src":"2289:7:80","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IRouter_$54023_$","typeString":"type(contract IRouter)"}},"id":54240,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2289:17:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IRouter_$54023","typeString":"contract IRouter"}},"id":54241,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2307:11:80","memberName":"wrappedVara","nodeType":"MemberAccess","referencedDeclaration":53867,"src":"2289:29:80","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":54242,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2289:31:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":54236,"name":"IWrappedVara","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54034,"src":"2276:12:80","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IWrappedVara_$54034_$","typeString":"type(contract IWrappedVara)"}},"id":54243,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2276:45:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IWrappedVara_$54034","typeString":"contract IWrappedVara"}},"id":54244,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2322:9:80","memberName":"balanceOf","nodeType":"MemberAccess","referencedDeclaration":41863,"src":"2276:55:80","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":54249,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2276:70:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2258:88:80"},{"expression":{"arguments":[{"id":54252,"name":"inheritor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54054,"src":"2369:9:80","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":54255,"name":"balance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54235,"src":"2388:7:80","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":54254,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2380:7:80","typeDescriptions":{"typeIdentifier":"t_type$_t_uint128_$","typeString":"type(uint128)"},"typeName":{"id":54253,"name":"uint128","nodeType":"ElementaryTypeName","src":"2380:7:80","typeDescriptions":{}}},"id":54256,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2380:16:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint128","typeString":"uint128"}],"id":54251,"name":"_sendValueTo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54634,"src":"2356:12:80","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint128_$returns$__$","typeString":"function (address,uint128)"}},"id":54257,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2356:41:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":54258,"nodeType":"ExpressionStatement","src":"2356:41:80"}]},"baseFunctions":[53594],"functionSelector":"60302d24","implemented":true,"kind":"function","modifiers":[],"name":"sendValueToInheritor","nameLocation":"2146:20:80","parameters":{"id":54222,"nodeType":"ParameterList","parameters":[],"src":"2166:2:80"},"returnParameters":{"id":54223,"nodeType":"ParameterList","parameters":[],"src":"2176:0:80"},"scope":54635,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":54281,"nodeType":"FunctionDefinition","src":"2462:202:80","nodes":[],"body":{"id":54280,"nodeType":"Block","src":"2525:139:80","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":54269,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":54267,"name":"stateHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54052,"src":"2539:9:80","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":54268,"name":"newStateHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54262,"src":"2552:12:80","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"2539:25:80","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":54279,"nodeType":"IfStatement","src":"2535:123:80","trueBody":{"id":54278,"nodeType":"Block","src":"2566:92:80","statements":[{"expression":{"id":54272,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":54270,"name":"stateHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54052,"src":"2580:9:80","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":54271,"name":"newStateHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54262,"src":"2592:12:80","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"2580:24:80","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":54273,"nodeType":"ExpressionStatement","src":"2580:24:80"},{"eventCall":{"arguments":[{"id":54275,"name":"stateHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54052,"src":"2637:9:80","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":54274,"name":"StateChanged","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53475,"src":"2624:12:80","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$returns$__$","typeString":"function (bytes32)"}},"id":54276,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2624:23:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":54277,"nodeType":"EmitStatement","src":"2619:28:80"}]}}]},"baseFunctions":[53599],"functionSelector":"8ea59e1d","implemented":true,"kind":"function","modifiers":[{"id":54265,"kind":"modifierInvocation","modifierName":{"id":54264,"name":"onlyRouter","nameLocations":["2514:10:80"],"nodeType":"IdentifierPath","referencedDeclaration":54540,"src":"2514:10:80"},"nodeType":"ModifierInvocation","src":"2514:10:80"}],"name":"updateState","nameLocation":"2471:11:80","parameters":{"id":54263,"nodeType":"ParameterList","parameters":[{"constant":false,"id":54262,"mutability":"mutable","name":"newStateHash","nameLocation":"2491:12:80","nodeType":"VariableDeclaration","scope":54281,"src":"2483:20:80","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":54261,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2483:7:80","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2482:22:80"},"returnParameters":{"id":54266,"nodeType":"ParameterList","parameters":[],"src":"2525:0:80"},"scope":54635,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":54296,"nodeType":"FunctionDefinition","src":"2756:134:80","nodes":[],"body":{"id":54295,"nodeType":"Block","src":"2818:72:80","nodes":[],"statements":[{"expression":{"id":54290,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":54288,"name":"inheritor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54054,"src":"2828:9:80","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":54289,"name":"_inheritor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54283,"src":"2840:10:80","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2828:22:80","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":54291,"nodeType":"ExpressionStatement","src":"2828:22:80"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":54292,"name":"sendValueToInheritor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54260,"src":"2861:20:80","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":54293,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2861:22:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":54294,"nodeType":"ExpressionStatement","src":"2861:22:80"}]},"baseFunctions":[53604],"functionSelector":"12b22256","implemented":true,"kind":"function","modifiers":[{"id":54286,"kind":"modifierInvocation","modifierName":{"id":54285,"name":"onlyRouter","nameLocations":["2807:10:80"],"nodeType":"IdentifierPath","referencedDeclaration":54540,"src":"2807:10:80"},"nodeType":"ModifierInvocation","src":"2807:10:80"}],"name":"setInheritor","nameLocation":"2765:12:80","parameters":{"id":54284,"nodeType":"ParameterList","parameters":[{"constant":false,"id":54283,"mutability":"mutable","name":"_inheritor","nameLocation":"2786:10:80","nodeType":"VariableDeclaration","scope":54296,"src":"2778:18:80","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":54282,"name":"address","nodeType":"ElementaryTypeName","src":"2778:7:80","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2777:20:80"},"returnParameters":{"id":54287,"nodeType":"ParameterList","parameters":[],"src":"2818:0:80"},"scope":54635,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":54351,"nodeType":"FunctionDefinition","src":"2896:754:80","nodes":[],"body":{"id":54350,"nodeType":"Block","src":"3009:641:80","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":54314,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":54309,"name":"decoder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54058,"src":"3113:7:80","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":54312,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3132:1:80","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":54311,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3124:7:80","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":54310,"name":"address","nodeType":"ElementaryTypeName","src":"3124:7:80","typeDescriptions":{}}},"id":54313,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3124:10:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3113:21:80","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":54342,"nodeType":"IfStatement","src":"3109:479:80","trueBody":{"id":54341,"nodeType":"Block","src":"3136:452:80","statements":[{"assignments":[54316],"declarations":[{"constant":false,"id":54316,"mutability":"mutable","name":"callData","nameLocation":"3163:8:80","nodeType":"VariableDeclaration","scope":54341,"src":"3150:21:80","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":54315,"name":"bytes","nodeType":"ElementaryTypeName","src":"3150:5:80","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":54327,"initialValue":{"arguments":[{"expression":{"expression":{"id":54319,"name":"IMirrorDecoder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53691,"src":"3213:14:80","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IMirrorDecoder_$53691_$","typeString":"type(contract IMirrorDecoder)"}},"id":54320,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3228:13:80","memberName":"onMessageSent","nodeType":"MemberAccess","referencedDeclaration":53677,"src":"3213:28:80","typeDescriptions":{"typeIdentifier":"t_function_declaration_nonpayable$_t_bytes32_$_t_address_$_t_bytes_calldata_ptr_$_t_uint128_$returns$__$","typeString":"function IMirrorDecoder.onMessageSent(bytes32,address,bytes calldata,uint128)"}},"id":54321,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3242:8:80","memberName":"selector","nodeType":"MemberAccess","src":"3213:37:80","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},{"id":54322,"name":"id","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54298,"src":"3252:2:80","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":54323,"name":"destination","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54300,"src":"3256:11:80","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":54324,"name":"payload","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54302,"src":"3269:7:80","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},{"id":54325,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54304,"src":"3278:5:80","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"},{"typeIdentifier":"t_uint128","typeString":"uint128"}],"expression":{"id":54317,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"3190:3:80","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":54318,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3194:18:80","memberName":"encodeWithSelector","nodeType":"MemberAccess","src":"3190:22:80","typeDescriptions":{"typeIdentifier":"t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes4) pure returns (bytes memory)"}},"id":54326,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3190:94:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"3150:134:80"},{"assignments":[54329,null],"declarations":[{"constant":false,"id":54329,"mutability":"mutable","name":"success","nameLocation":"3398:7:80","nodeType":"VariableDeclaration","scope":54341,"src":"3393:12:80","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":54328,"name":"bool","nodeType":"ElementaryTypeName","src":"3393:4:80","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},null],"id":54336,"initialValue":{"arguments":[{"id":54334,"name":"callData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54316,"src":"3437:8:80","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":54330,"name":"decoder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54058,"src":"3410:7:80","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":54331,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3418:4:80","memberName":"call","nodeType":"MemberAccess","src":"3410:12:80","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":54333,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["gas"],"nodeType":"FunctionCallOptions","options":[{"hexValue":"3530305f303030","id":54332,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3428:7:80","typeDescriptions":{"typeIdentifier":"t_rational_500000_by_1","typeString":"int_const 500000"},"value":"500_000"}],"src":"3410:26:80","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$gas","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":54335,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3410:36:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"3392:54:80"},{"condition":{"id":54337,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54329,"src":"3465:7:80","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":54340,"nodeType":"IfStatement","src":"3461:117:80","trueBody":{"id":54339,"nodeType":"Block","src":"3474:104:80","statements":[{"functionReturnParameters":54308,"id":54338,"nodeType":"Return","src":"3557:7:80"}]}}]}},{"eventCall":{"arguments":[{"id":54344,"name":"id","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54298,"src":"3611:2:80","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":54345,"name":"destination","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54300,"src":"3615:11:80","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":54346,"name":"payload","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54302,"src":"3628:7:80","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},{"id":54347,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54304,"src":"3637:5:80","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"},{"typeIdentifier":"t_uint128","typeString":"uint128"}],"id":54343,"name":"Message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53520,"src":"3603:7:80","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$_t_address_$_t_bytes_memory_ptr_$_t_uint128_$returns$__$","typeString":"function (bytes32,address,bytes memory,uint128)"}},"id":54348,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3603:40:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":54349,"nodeType":"EmitStatement","src":"3598:45:80"}]},"baseFunctions":[53615],"functionSelector":"c2df6009","implemented":true,"kind":"function","modifiers":[{"id":54307,"kind":"modifierInvocation","modifierName":{"id":54306,"name":"onlyRouter","nameLocations":["2998:10:80"],"nodeType":"IdentifierPath","referencedDeclaration":54540,"src":"2998:10:80"},"nodeType":"ModifierInvocation","src":"2998:10:80"}],"name":"messageSent","nameLocation":"2905:11:80","parameters":{"id":54305,"nodeType":"ParameterList","parameters":[{"constant":false,"id":54298,"mutability":"mutable","name":"id","nameLocation":"2925:2:80","nodeType":"VariableDeclaration","scope":54351,"src":"2917:10:80","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":54297,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2917:7:80","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":54300,"mutability":"mutable","name":"destination","nameLocation":"2937:11:80","nodeType":"VariableDeclaration","scope":54351,"src":"2929:19:80","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":54299,"name":"address","nodeType":"ElementaryTypeName","src":"2929:7:80","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":54302,"mutability":"mutable","name":"payload","nameLocation":"2965:7:80","nodeType":"VariableDeclaration","scope":54351,"src":"2950:22:80","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":54301,"name":"bytes","nodeType":"ElementaryTypeName","src":"2950:5:80","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":54304,"mutability":"mutable","name":"value","nameLocation":"2982:5:80","nodeType":"VariableDeclaration","scope":54351,"src":"2974:13:80","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":54303,"name":"uint128","nodeType":"ElementaryTypeName","src":"2974:7:80","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"2916:72:80"},"returnParameters":{"id":54308,"nodeType":"ParameterList","parameters":[],"src":"3009:0:80"},"scope":54635,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":54414,"nodeType":"FunctionDefinition","src":"3656:775:80","nodes":[],"body":{"id":54413,"nodeType":"Block","src":"3810:621:80","nodes":[],"statements":[{"expression":{"arguments":[{"id":54367,"name":"destination","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54353,"src":"3833:11:80","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":54368,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54357,"src":"3846:5:80","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint128","typeString":"uint128"}],"id":54366,"name":"_sendValueTo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54634,"src":"3820:12:80","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint128_$returns$__$","typeString":"function (address,uint128)"}},"id":54369,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3820:32:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":54370,"nodeType":"ExpressionStatement","src":"3820:32:80"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":54376,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":54371,"name":"decoder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54058,"src":"3867:7:80","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":54374,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3886:1:80","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":54373,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3878:7:80","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":54372,"name":"address","nodeType":"ElementaryTypeName","src":"3878:7:80","typeDescriptions":{}}},"id":54375,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3878:10:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3867:21:80","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":54405,"nodeType":"IfStatement","src":"3863:505:80","trueBody":{"id":54404,"nodeType":"Block","src":"3890:478:80","statements":[{"assignments":[54378],"declarations":[{"constant":false,"id":54378,"mutability":"mutable","name":"callData","nameLocation":"3917:8:80","nodeType":"VariableDeclaration","scope":54404,"src":"3904:21:80","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":54377,"name":"bytes","nodeType":"ElementaryTypeName","src":"3904:5:80","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":54390,"initialValue":{"arguments":[{"expression":{"expression":{"id":54381,"name":"IMirrorDecoder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53691,"src":"3968:14:80","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IMirrorDecoder_$53691_$","typeString":"type(contract IMirrorDecoder)"}},"id":54382,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3983:11:80","memberName":"onReplySent","nodeType":"MemberAccess","referencedDeclaration":53690,"src":"3968:26:80","typeDescriptions":{"typeIdentifier":"t_function_declaration_nonpayable$_t_address_$_t_bytes_calldata_ptr_$_t_uint128_$_t_bytes32_$_t_bytes4_$returns$__$","typeString":"function IMirrorDecoder.onReplySent(address,bytes calldata,uint128,bytes32,bytes4)"}},"id":54383,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3995:8:80","memberName":"selector","nodeType":"MemberAccess","src":"3968:35:80","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},{"id":54384,"name":"destination","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54353,"src":"4005:11:80","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":54385,"name":"payload","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54355,"src":"4018:7:80","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},{"id":54386,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54357,"src":"4027:5:80","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"id":54387,"name":"replyTo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54359,"src":"4034:7:80","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":54388,"name":"replyCode","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54361,"src":"4043:9:80","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"},{"typeIdentifier":"t_uint128","typeString":"uint128"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"expression":{"id":54379,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"3928:3:80","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":54380,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3932:18:80","memberName":"encodeWithSelector","nodeType":"MemberAccess","src":"3928:22:80","typeDescriptions":{"typeIdentifier":"t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes4) pure returns (bytes memory)"}},"id":54389,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3928:138:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"3904:162:80"},{"assignments":[54392,null],"declarations":[{"constant":false,"id":54392,"mutability":"mutable","name":"success","nameLocation":"4180:7:80","nodeType":"VariableDeclaration","scope":54404,"src":"4175:12:80","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":54391,"name":"bool","nodeType":"ElementaryTypeName","src":"4175:4:80","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},null],"id":54399,"initialValue":{"arguments":[{"id":54397,"name":"callData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54378,"src":"4219:8:80","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":54393,"name":"decoder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54058,"src":"4192:7:80","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":54394,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4200:4:80","memberName":"call","nodeType":"MemberAccess","src":"4192:12:80","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":54396,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["gas"],"nodeType":"FunctionCallOptions","options":[{"hexValue":"3530305f303030","id":54395,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4210:7:80","typeDescriptions":{"typeIdentifier":"t_rational_500000_by_1","typeString":"int_const 500000"},"value":"500_000"}],"src":"4192:26:80","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$gas","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":54398,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4192:36:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"4174:54:80"},{"condition":{"id":54400,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54392,"src":"4247:7:80","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":54403,"nodeType":"IfStatement","src":"4243:115:80","trueBody":{"id":54402,"nodeType":"Block","src":"4256:102:80","statements":[{"functionReturnParameters":54365,"id":54401,"nodeType":"Return","src":"4337:7:80"}]}}]}},{"eventCall":{"arguments":[{"id":54407,"name":"payload","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54355,"src":"4389:7:80","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},{"id":54408,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54357,"src":"4398:5:80","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"id":54409,"name":"replyTo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54359,"src":"4405:7:80","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":54410,"name":"replyCode","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54361,"src":"4414:9:80","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"},{"typeIdentifier":"t_uint128","typeString":"uint128"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"id":54406,"name":"Reply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53531,"src":"4383:5:80","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes_memory_ptr_$_t_uint128_$_t_bytes32_$_t_bytes4_$returns$__$","typeString":"function (bytes memory,uint128,bytes32,bytes4)"}},"id":54411,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4383:41:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":54412,"nodeType":"EmitStatement","src":"4378:46:80"}]},"baseFunctions":[53628],"functionSelector":"c78bde77","implemented":true,"kind":"function","modifiers":[{"id":54364,"kind":"modifierInvocation","modifierName":{"id":54363,"name":"onlyRouter","nameLocations":["3795:10:80"],"nodeType":"IdentifierPath","referencedDeclaration":54540,"src":"3795:10:80"},"nodeType":"ModifierInvocation","src":"3795:10:80"}],"name":"replySent","nameLocation":"3665:9:80","parameters":{"id":54362,"nodeType":"ParameterList","parameters":[{"constant":false,"id":54353,"mutability":"mutable","name":"destination","nameLocation":"3683:11:80","nodeType":"VariableDeclaration","scope":54414,"src":"3675:19:80","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":54352,"name":"address","nodeType":"ElementaryTypeName","src":"3675:7:80","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":54355,"mutability":"mutable","name":"payload","nameLocation":"3711:7:80","nodeType":"VariableDeclaration","scope":54414,"src":"3696:22:80","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":54354,"name":"bytes","nodeType":"ElementaryTypeName","src":"3696:5:80","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":54357,"mutability":"mutable","name":"value","nameLocation":"3728:5:80","nodeType":"VariableDeclaration","scope":54414,"src":"3720:13:80","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":54356,"name":"uint128","nodeType":"ElementaryTypeName","src":"3720:7:80","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":54359,"mutability":"mutable","name":"replyTo","nameLocation":"3743:7:80","nodeType":"VariableDeclaration","scope":54414,"src":"3735:15:80","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":54358,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3735:7:80","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":54361,"mutability":"mutable","name":"replyCode","nameLocation":"3759:9:80","nodeType":"VariableDeclaration","scope":54414,"src":"3752:16:80","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":54360,"name":"bytes4","nodeType":"ElementaryTypeName","src":"3752:6:80","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"3674:95:80"},"returnParameters":{"id":54365,"nodeType":"ParameterList","parameters":[],"src":"3810:0:80"},"scope":54635,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":54436,"nodeType":"FunctionDefinition","src":"4437:192:80","nodes":[],"body":{"id":54435,"nodeType":"Block","src":"4534:95:80","nodes":[],"statements":[{"expression":{"arguments":[{"id":54426,"name":"destination","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54418,"src":"4557:11:80","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":54427,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54420,"src":"4570:5:80","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint128","typeString":"uint128"}],"id":54425,"name":"_sendValueTo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54634,"src":"4544:12:80","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint128_$returns$__$","typeString":"function (address,uint128)"}},"id":54428,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4544:32:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":54429,"nodeType":"ExpressionStatement","src":"4544:32:80"},{"eventCall":{"arguments":[{"id":54431,"name":"claimedId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54416,"src":"4605:9:80","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":54432,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54420,"src":"4616:5:80","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint128","typeString":"uint128"}],"id":54430,"name":"ValueClaimed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53538,"src":"4592:12:80","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$_t_uint128_$returns$__$","typeString":"function (bytes32,uint128)"}},"id":54433,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4592:30:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":54434,"nodeType":"EmitStatement","src":"4587:35:80"}]},"baseFunctions":[53637],"functionSelector":"14503e51","implemented":true,"kind":"function","modifiers":[{"id":54423,"kind":"modifierInvocation","modifierName":{"id":54422,"name":"onlyRouter","nameLocations":["4523:10:80"],"nodeType":"IdentifierPath","referencedDeclaration":54540,"src":"4523:10:80"},"nodeType":"ModifierInvocation","src":"4523:10:80"}],"name":"valueClaimed","nameLocation":"4446:12:80","parameters":{"id":54421,"nodeType":"ParameterList","parameters":[{"constant":false,"id":54416,"mutability":"mutable","name":"claimedId","nameLocation":"4467:9:80","nodeType":"VariableDeclaration","scope":54436,"src":"4459:17:80","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":54415,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4459:7:80","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":54418,"mutability":"mutable","name":"destination","nameLocation":"4486:11:80","nodeType":"VariableDeclaration","scope":54436,"src":"4478:19:80","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":54417,"name":"address","nodeType":"ElementaryTypeName","src":"4478:7:80","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":54420,"mutability":"mutable","name":"value","nameLocation":"4507:5:80","nodeType":"VariableDeclaration","scope":54436,"src":"4499:13:80","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":54419,"name":"uint128","nodeType":"ElementaryTypeName","src":"4499:7:80","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"4458:55:80"},"returnParameters":{"id":54424,"nodeType":"ParameterList","parameters":[],"src":"4534:0:80"},"scope":54635,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":54477,"nodeType":"FunctionDefinition","src":"4635:363:80","nodes":[],"body":{"id":54476,"nodeType":"Block","src":"4716:282:80","nodes":[],"statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":54448,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":54446,"name":"nonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54056,"src":"4734:5:80","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":54447,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4743:1:80","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"4734:10:80","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"6465636f64657220636f756c64206f6e6c792062652063726561746564206265666f726520696e6974206d657373616765","id":54449,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4746:51:80","typeDescriptions":{"typeIdentifier":"t_stringliteral_6179111dcaf1477c3041b02777f68e6f9b47b46bbab14442425a87a2628d248f","typeString":"literal_string \"decoder could only be created before init message\""},"value":"decoder could only be created before init message"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_6179111dcaf1477c3041b02777f68e6f9b47b46bbab14442425a87a2628d248f","typeString":"literal_string \"decoder could only be created before init message\""}],"id":54445,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"4726:7:80","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":54450,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4726:72:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":54451,"nodeType":"ExpressionStatement","src":"4726:72:80"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":54458,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":54453,"name":"decoder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54058,"src":"4816:7:80","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":54456,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4835:1:80","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":54455,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4827:7:80","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":54454,"name":"address","nodeType":"ElementaryTypeName","src":"4827:7:80","typeDescriptions":{}}},"id":54457,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4827:10:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4816:21:80","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"6465636f64657220636f756c64206f6e6c792062652063726561746564206f6e6365","id":54459,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4839:36:80","typeDescriptions":{"typeIdentifier":"t_stringliteral_2e378c5f64e230407f2ea4b317edbd32f061bf14b6bede40dc75fef40a2c3f34","typeString":"literal_string \"decoder could only be created once\""},"value":"decoder could only be created once"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_2e378c5f64e230407f2ea4b317edbd32f061bf14b6bede40dc75fef40a2c3f34","typeString":"literal_string \"decoder could only be created once\""}],"id":54452,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"4808:7:80","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":54460,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4808:68:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":54461,"nodeType":"ExpressionStatement","src":"4808:68:80"},{"expression":{"id":54468,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":54462,"name":"decoder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54058,"src":"4887:7:80","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":54465,"name":"implementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54438,"src":"4923:14:80","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":54466,"name":"salt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54440,"src":"4939:4:80","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":54463,"name":"Clones","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41121,"src":"4897:6:80","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Clones_$41121_$","typeString":"type(library Clones)"}},"id":54464,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4904:18:80","memberName":"cloneDeterministic","nodeType":"MemberAccess","referencedDeclaration":41039,"src":"4897:25:80","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes32_$returns$_t_address_$","typeString":"function (address,bytes32) returns (address)"}},"id":54467,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4897:47:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4887:57:80","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":54469,"nodeType":"ExpressionStatement","src":"4887:57:80"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":54471,"name":"decoder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54058,"src":"4970:7:80","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":54470,"name":"IMirrorDecoder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53691,"src":"4955:14:80","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IMirrorDecoder_$53691_$","typeString":"type(contract IMirrorDecoder)"}},"id":54472,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4955:23:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IMirrorDecoder_$53691","typeString":"contract IMirrorDecoder"}},"id":54473,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4979:10:80","memberName":"initialize","nodeType":"MemberAccess","referencedDeclaration":53661,"src":"4955:34:80","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$__$returns$__$","typeString":"function () external"}},"id":54474,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4955:36:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":54475,"nodeType":"ExpressionStatement","src":"4955:36:80"}]},"baseFunctions":[53644],"functionSelector":"5b1b84f7","implemented":true,"kind":"function","modifiers":[{"id":54443,"kind":"modifierInvocation","modifierName":{"id":54442,"name":"onlyRouter","nameLocations":["4705:10:80"],"nodeType":"IdentifierPath","referencedDeclaration":54540,"src":"4705:10:80"},"nodeType":"ModifierInvocation","src":"4705:10:80"}],"name":"createDecoder","nameLocation":"4644:13:80","parameters":{"id":54441,"nodeType":"ParameterList","parameters":[{"constant":false,"id":54438,"mutability":"mutable","name":"implementation","nameLocation":"4666:14:80","nodeType":"VariableDeclaration","scope":54477,"src":"4658:22:80","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":54437,"name":"address","nodeType":"ElementaryTypeName","src":"4658:7:80","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":54440,"mutability":"mutable","name":"salt","nameLocation":"4690:4:80","nodeType":"VariableDeclaration","scope":54477,"src":"4682:12:80","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":54439,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4682:7:80","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"4657:38:80"},"returnParameters":{"id":54444,"nodeType":"ParameterList","parameters":[],"src":"4716:0:80"},"scope":54635,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":54527,"nodeType":"FunctionDefinition","src":"5004:566:80","nodes":[],"body":{"id":54526,"nodeType":"Block","src":"5147:423:80","nodes":[],"statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":54493,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":54491,"name":"nonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54056,"src":"5165:5:80","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":54492,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5174:1:80","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"5165:10:80","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"696e6974206d657373616765206d7573742062652063726561746564206265666f726520616e79206f7468657273","id":54494,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5177:48:80","typeDescriptions":{"typeIdentifier":"t_stringliteral_f66d837affa62c092147eee2ea617e19f402b656aab0578ab0acad8d1e9a6341","typeString":"literal_string \"init message must be created before any others\""},"value":"init message must be created before any others"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_f66d837affa62c092147eee2ea617e19f402b656aab0578ab0acad8d1e9a6341","typeString":"literal_string \"init message must be created before any others\""}],"id":54490,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"5157:7:80","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":54495,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5157:69:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":54496,"nodeType":"ExpressionStatement","src":"5157:69:80"},{"assignments":[54498],"declarations":[{"constant":false,"id":54498,"mutability":"mutable","name":"initNonce","nameLocation":"5335:9:80","nodeType":"VariableDeclaration","scope":54526,"src":"5327:17:80","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":54497,"name":"uint256","nodeType":"ElementaryTypeName","src":"5327:7:80","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":54501,"initialValue":{"id":54500,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"5347:7:80","subExpression":{"id":54499,"name":"nonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54056,"src":"5347:5:80","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"5327:27:80"},{"assignments":[54503],"declarations":[{"constant":false,"id":54503,"mutability":"mutable","name":"id","nameLocation":"5372:2:80","nodeType":"VariableDeclaration","scope":54526,"src":"5364:10:80","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":54502,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5364:7:80","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":54514,"initialValue":{"arguments":[{"arguments":[{"arguments":[{"id":54509,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"5412:4:80","typeDescriptions":{"typeIdentifier":"t_contract$_Mirror_$54635","typeString":"contract Mirror"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Mirror_$54635","typeString":"contract Mirror"}],"id":54508,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5404:7:80","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":54507,"name":"address","nodeType":"ElementaryTypeName","src":"5404:7:80","typeDescriptions":{}}},"id":54510,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5404:13:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":54511,"name":"initNonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54498,"src":"5419:9:80","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":54505,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"5387:3:80","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":54506,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"5391:12:80","memberName":"encodePacked","nodeType":"MemberAccess","src":"5387:16:80","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":54512,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5387:42:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":54504,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"5377:9:80","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":54513,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5377:53:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"5364:66:80"},{"eventCall":{"arguments":[{"id":54516,"name":"executableBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54485,"src":"5478:17:80","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint128","typeString":"uint128"}],"id":54515,"name":"ExecutableBalanceTopUpRequested","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53509,"src":"5446:31:80","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint128_$returns$__$","typeString":"function (uint128)"}},"id":54517,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5446:50:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":54518,"nodeType":"EmitStatement","src":"5441:55:80"},{"eventCall":{"arguments":[{"id":54520,"name":"id","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54503,"src":"5536:2:80","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":54521,"name":"source","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54479,"src":"5540:6:80","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":54522,"name":"payload","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54481,"src":"5548:7:80","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},{"id":54523,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54483,"src":"5557:5:80","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"},{"typeIdentifier":"t_uint128","typeString":"uint128"}],"id":54519,"name":"MessageQueueingRequested","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53486,"src":"5511:24:80","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$_t_address_$_t_bytes_memory_ptr_$_t_uint128_$returns$__$","typeString":"function (bytes32,address,bytes memory,uint128)"}},"id":54524,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5511:52:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":54525,"nodeType":"EmitStatement","src":"5506:57:80"}]},"baseFunctions":[53655],"functionSelector":"de1dd2e0","implemented":true,"kind":"function","modifiers":[{"id":54488,"kind":"modifierInvocation","modifierName":{"id":54487,"name":"onlyRouter","nameLocations":["5132:10:80"],"nodeType":"IdentifierPath","referencedDeclaration":54540,"src":"5132:10:80"},"nodeType":"ModifierInvocation","src":"5132:10:80"}],"name":"initMessage","nameLocation":"5013:11:80","parameters":{"id":54486,"nodeType":"ParameterList","parameters":[{"constant":false,"id":54479,"mutability":"mutable","name":"source","nameLocation":"5033:6:80","nodeType":"VariableDeclaration","scope":54527,"src":"5025:14:80","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":54478,"name":"address","nodeType":"ElementaryTypeName","src":"5025:7:80","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":54481,"mutability":"mutable","name":"payload","nameLocation":"5056:7:80","nodeType":"VariableDeclaration","scope":54527,"src":"5041:22:80","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":54480,"name":"bytes","nodeType":"ElementaryTypeName","src":"5041:5:80","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":54483,"mutability":"mutable","name":"value","nameLocation":"5073:5:80","nodeType":"VariableDeclaration","scope":54527,"src":"5065:13:80","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":54482,"name":"uint128","nodeType":"ElementaryTypeName","src":"5065:7:80","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":54485,"mutability":"mutable","name":"executableBalance","nameLocation":"5088:17:80","nodeType":"VariableDeclaration","scope":54527,"src":"5080:25:80","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":54484,"name":"uint128","nodeType":"ElementaryTypeName","src":"5080:7:80","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"5024:82:80"},"returnParameters":{"id":54489,"nodeType":"ParameterList","parameters":[],"src":"5147:0:80"},"scope":54635,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":54540,"nodeType":"ModifierDefinition","src":"5576:131:80","nodes":[],"body":{"id":54539,"nodeType":"Block","src":"5598:109:80","nodes":[],"statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":54534,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":54530,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"5616:3:80","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":54531,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5620:6:80","memberName":"sender","nodeType":"MemberAccess","src":"5616:10:80","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":54532,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54073,"src":"5630:6:80","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":54533,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5630:8:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"5616:22:80","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"6f6e6c7920726f7574657220636f6e747261637420697320656c696769626c6520666f72206f7065726174696f6e","id":54535,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5640:48:80","typeDescriptions":{"typeIdentifier":"t_stringliteral_64d2230e88596248f8ffc0c335875e1b5d3e7ef288684b79c0f3f409577b1f91","typeString":"literal_string \"only router contract is eligible for operation\""},"value":"only router contract is eligible for operation"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_64d2230e88596248f8ffc0c335875e1b5d3e7ef288684b79c0f3f409577b1f91","typeString":"literal_string \"only router contract is eligible for operation\""}],"id":54529,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"5608:7:80","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":54536,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5608:81:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":54537,"nodeType":"ExpressionStatement","src":"5608:81:80"},{"id":54538,"nodeType":"PlaceholderStatement","src":"5699:1:80"}]},"name":"onlyRouter","nameLocation":"5585:10:80","parameters":{"id":54528,"nodeType":"ParameterList","parameters":[],"src":"5595:2:80"},"virtual":false,"visibility":"internal"},{"id":54559,"nodeType":"FunctionDefinition","src":"5747:182:80","nodes":[],"body":{"id":54558,"nodeType":"Block","src":"5797:132:80","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":54548,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":54545,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"5811:3:80","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":54546,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5815:6:80","memberName":"sender","nodeType":"MemberAccess","src":"5811:10:80","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":54547,"name":"decoder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54058,"src":"5825:7:80","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"5811:21:80","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":54556,"nodeType":"Block","src":"5881:42:80","statements":[{"expression":{"expression":{"id":54553,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"5902:3:80","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":54554,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5906:6:80","memberName":"sender","nodeType":"MemberAccess","src":"5902:10:80","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":54544,"id":54555,"nodeType":"Return","src":"5895:17:80"}]},"id":54557,"nodeType":"IfStatement","src":"5807:116:80","trueBody":{"id":54552,"nodeType":"Block","src":"5834:41:80","statements":[{"expression":{"expression":{"id":54549,"name":"tx","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-26,"src":"5855:2:80","typeDescriptions":{"typeIdentifier":"t_magic_transaction","typeString":"tx"}},"id":54550,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5858:6:80","memberName":"origin","nodeType":"MemberAccess","src":"5855:9:80","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":54544,"id":54551,"nodeType":"Return","src":"5848:16:80"}]}}]},"implemented":true,"kind":"function","modifiers":[],"name":"_source","nameLocation":"5756:7:80","parameters":{"id":54541,"nodeType":"ParameterList","parameters":[],"src":"5763:2:80"},"returnParameters":{"id":54544,"nodeType":"ParameterList","parameters":[{"constant":false,"id":54543,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":54559,"src":"5788:7:80","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":54542,"name":"address","nodeType":"ElementaryTypeName","src":"5788:7:80","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5787:9:80"},"scope":54635,"stateMutability":"view","virtual":false,"visibility":"private"},{"id":54596,"nodeType":"FunctionDefinition","src":"5935:332:80","nodes":[],"body":{"id":54595,"nodeType":"Block","src":"5991:276:80","nodes":[],"statements":[{"assignments":[54565],"declarations":[{"constant":false,"id":54565,"mutability":"mutable","name":"routerAddress","nameLocation":"6009:13:80","nodeType":"VariableDeclaration","scope":54595,"src":"6001:21:80","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":54564,"name":"address","nodeType":"ElementaryTypeName","src":"6001:7:80","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":54568,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":54566,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54073,"src":"6025:6:80","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":54567,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6025:8:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"6001:32:80"},{"assignments":[54571],"declarations":[{"constant":false,"id":54571,"mutability":"mutable","name":"wrappedVara","nameLocation":"6057:11:80","nodeType":"VariableDeclaration","scope":54595,"src":"6044:24:80","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IWrappedVara_$54034","typeString":"contract IWrappedVara"},"typeName":{"id":54570,"nodeType":"UserDefinedTypeName","pathNode":{"id":54569,"name":"IWrappedVara","nameLocations":["6044:12:80"],"nodeType":"IdentifierPath","referencedDeclaration":54034,"src":"6044:12:80"},"referencedDeclaration":54034,"src":"6044:12:80","typeDescriptions":{"typeIdentifier":"t_contract$_IWrappedVara_$54034","typeString":"contract IWrappedVara"}},"visibility":"internal"}],"id":54579,"initialValue":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":54574,"name":"routerAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54565,"src":"6092:13:80","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":54573,"name":"IRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54023,"src":"6084:7:80","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IRouter_$54023_$","typeString":"type(contract IRouter)"}},"id":54575,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6084:22:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IRouter_$54023","typeString":"contract IRouter"}},"id":54576,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6107:11:80","memberName":"wrappedVara","nodeType":"MemberAccess","referencedDeclaration":53867,"src":"6084:34:80","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":54577,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6084:36:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":54572,"name":"IWrappedVara","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54034,"src":"6071:12:80","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IWrappedVara_$54034_$","typeString":"type(contract IWrappedVara)"}},"id":54578,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6071:50:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IWrappedVara_$54034","typeString":"contract IWrappedVara"}},"nodeType":"VariableDeclarationStatement","src":"6044:77:80"},{"assignments":[54581],"declarations":[{"constant":false,"id":54581,"mutability":"mutable","name":"success","nameLocation":"6137:7:80","nodeType":"VariableDeclaration","scope":54595,"src":"6132:12:80","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":54580,"name":"bool","nodeType":"ElementaryTypeName","src":"6132:4:80","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":54589,"initialValue":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":54584,"name":"_source","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54559,"src":"6172:7:80","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":54585,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6172:9:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":54586,"name":"routerAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54565,"src":"6183:13:80","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":54587,"name":"_value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54561,"src":"6198:6:80","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint128","typeString":"uint128"}],"expression":{"id":54582,"name":"wrappedVara","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54571,"src":"6147:11:80","typeDescriptions":{"typeIdentifier":"t_contract$_IWrappedVara_$54034","typeString":"contract IWrappedVara"}},"id":54583,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6159:12:80","memberName":"transferFrom","nodeType":"MemberAccess","referencedDeclaration":41905,"src":"6147:24:80","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,address,uint256) external returns (bool)"}},"id":54588,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6147:58:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"VariableDeclarationStatement","src":"6132:73:80"},{"expression":{"arguments":[{"id":54591,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54581,"src":"6224:7:80","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"6661696c656420746f207265747269657665205756617261","id":54592,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"6233:26:80","typeDescriptions":{"typeIdentifier":"t_stringliteral_3257f3c05b2e57b37b1b4545fc8e3f040a16378fd14b34b1b901c2ec9b919712","typeString":"literal_string \"failed to retrieve WVara\""},"value":"failed to retrieve WVara"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_3257f3c05b2e57b37b1b4545fc8e3f040a16378fd14b34b1b901c2ec9b919712","typeString":"literal_string \"failed to retrieve WVara\""}],"id":54590,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"6216:7:80","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":54593,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6216:44:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":54594,"nodeType":"ExpressionStatement","src":"6216:44:80"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_retrieveValueToRouter","nameLocation":"5944:22:80","parameters":{"id":54562,"nodeType":"ParameterList","parameters":[{"constant":false,"id":54561,"mutability":"mutable","name":"_value","nameLocation":"5975:6:80","nodeType":"VariableDeclaration","scope":54596,"src":"5967:14:80","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":54560,"name":"uint128","nodeType":"ElementaryTypeName","src":"5967:7:80","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"5966:16:80"},"returnParameters":{"id":54563,"nodeType":"ParameterList","parameters":[],"src":"5991:0:80"},"scope":54635,"stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"id":54634,"nodeType":"FunctionDefinition","src":"6273:316:80","nodes":[],"body":{"id":54633,"nodeType":"Block","src":"6339:250:80","nodes":[],"statements":[{"assignments":[54605],"declarations":[{"constant":false,"id":54605,"mutability":"mutable","name":"wrappedVara","nameLocation":"6362:11:80","nodeType":"VariableDeclaration","scope":54633,"src":"6349:24:80","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IWrappedVara_$54034","typeString":"contract IWrappedVara"},"typeName":{"id":54604,"nodeType":"UserDefinedTypeName","pathNode":{"id":54603,"name":"IWrappedVara","nameLocations":["6349:12:80"],"nodeType":"IdentifierPath","referencedDeclaration":54034,"src":"6349:12:80"},"referencedDeclaration":54034,"src":"6349:12:80","typeDescriptions":{"typeIdentifier":"t_contract$_IWrappedVara_$54034","typeString":"contract IWrappedVara"}},"visibility":"internal"}],"id":54614,"initialValue":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":54608,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54073,"src":"6397:6:80","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":54609,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6397:8:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":54607,"name":"IRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54023,"src":"6389:7:80","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IRouter_$54023_$","typeString":"type(contract IRouter)"}},"id":54610,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6389:17:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IRouter_$54023","typeString":"contract IRouter"}},"id":54611,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6407:11:80","memberName":"wrappedVara","nodeType":"MemberAccess","referencedDeclaration":53867,"src":"6389:29:80","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":54612,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6389:31:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":54606,"name":"IWrappedVara","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54034,"src":"6376:12:80","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IWrappedVara_$54034_$","typeString":"type(contract IWrappedVara)"}},"id":54613,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6376:45:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IWrappedVara_$54034","typeString":"contract IWrappedVara"}},"nodeType":"VariableDeclarationStatement","src":"6349:72:80"},{"condition":{"commonType":{"typeIdentifier":"t_uint128","typeString":"uint128"},"id":54617,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":54615,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54600,"src":"6436:5:80","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":54616,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6445:1:80","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"6436:10:80","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":54632,"nodeType":"IfStatement","src":"6432:151:80","trueBody":{"id":54631,"nodeType":"Block","src":"6448:135:80","statements":[{"assignments":[54619],"declarations":[{"constant":false,"id":54619,"mutability":"mutable","name":"success","nameLocation":"6467:7:80","nodeType":"VariableDeclaration","scope":54631,"src":"6462:12:80","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":54618,"name":"bool","nodeType":"ElementaryTypeName","src":"6462:4:80","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":54625,"initialValue":{"arguments":[{"id":54622,"name":"destination","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54598,"src":"6498:11:80","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":54623,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54600,"src":"6511:5:80","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint128","typeString":"uint128"}],"expression":{"id":54620,"name":"wrappedVara","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54605,"src":"6477:11:80","typeDescriptions":{"typeIdentifier":"t_contract$_IWrappedVara_$54034","typeString":"contract IWrappedVara"}},"id":54621,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6489:8:80","memberName":"transfer","nodeType":"MemberAccess","referencedDeclaration":41873,"src":"6477:20:80","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":54624,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6477:40:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"VariableDeclarationStatement","src":"6462:55:80"},{"expression":{"arguments":[{"id":54627,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54619,"src":"6540:7:80","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"6661696c656420746f2073656e64205756617261","id":54628,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"6549:22:80","typeDescriptions":{"typeIdentifier":"t_stringliteral_8ec034c4b2ac47d4229390ddbbb751ebe057cb836b00500cd6f2ff2a9adb713a","typeString":"literal_string \"failed to send WVara\""},"value":"failed to send WVara"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_8ec034c4b2ac47d4229390ddbbb751ebe057cb836b00500cd6f2ff2a9adb713a","typeString":"literal_string \"failed to send WVara\""}],"id":54626,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"6532:7:80","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":54629,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6532:40:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":54630,"nodeType":"ExpressionStatement","src":"6532:40:80"}]}}]},"implemented":true,"kind":"function","modifiers":[],"name":"_sendValueTo","nameLocation":"6282:12:80","parameters":{"id":54601,"nodeType":"ParameterList","parameters":[{"constant":false,"id":54598,"mutability":"mutable","name":"destination","nameLocation":"6303:11:80","nodeType":"VariableDeclaration","scope":54634,"src":"6295:19:80","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":54597,"name":"address","nodeType":"ElementaryTypeName","src":"6295:7:80","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":54600,"mutability":"mutable","name":"value","nameLocation":"6324:5:80","nodeType":"VariableDeclaration","scope":54634,"src":"6316:13:80","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":54599,"name":"uint128","nodeType":"ElementaryTypeName","src":"6316:7:80","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"6294:36:80"},"returnParameters":{"id":54602,"nodeType":"ParameterList","parameters":[],"src":"6339:0:80"},"scope":54635,"stateMutability":"nonpayable","virtual":false,"visibility":"private"}],"abstract":false,"baseContracts":[{"baseName":{"id":54049,"name":"IMirror","nameLocations":["422:7:80"],"nodeType":"IdentifierPath","referencedDeclaration":53656,"src":"422:7:80"},"id":54050,"nodeType":"InheritanceSpecifier","src":"422:7:80"}],"canonicalName":"Mirror","contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"linearizedBaseContracts":[54635,53656],"name":"Mirror","nameLocation":"412:6:80","scope":54636,"usedErrors":[42267,42273],"usedEvents":[53475,53486,53497,53504,53509,53520,53531,53538]}],"license":"UNLICENSED"},"id":80} \ No newline at end of file diff --git a/ethexe/ethereum/MirrorProxy.json b/ethexe/ethereum/MirrorProxy.json index 73831741411..df6d35d4d68 100644 --- a/ethexe/ethereum/MirrorProxy.json +++ b/ethexe/ethereum/MirrorProxy.json @@ -1 +1 @@ -{"abi":[{"type":"constructor","inputs":[{"name":"_router","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"type":"fallback","stateMutability":"payable"},{"type":"function","name":"router","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"}],"bytecode":{"object":"0x60a034606b57601f61021038819003918201601f19168301916001600160401b03831184841017606f57808492602094604052833981010312606b57516001600160a01b0381168103606b5760805260405161018c908161008482396080518181816023015260e10152f35b5f80fd5b634e487b7160e01b5f52604160045260245ffdfe608060405260043610156100c0575b632226c8b960e11b60809081526020906004817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa80156100b5575f9015610139575060203d6020116100ae575b601f19601f820116608001906080821067ffffffffffffffff83111761009a5761009591604052608001610117565b610139565b634e487b7160e01b5f52604160045260245ffd5b503d610066565b6040513d5f823e3d90fd5b5f3560e01c63f887ea400361000e5734610113575f366003190112610113577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166080908152602090f35b5f80fd5b602090607f190112610113576080516001600160a01b03811681036101135790565b5f8091368280378136915af43d5f803e15610152573d5ff35b3d5ffdfea26469706673582212207395defe08345fda7fa0275e94c4547716017484d822753fbfc88698d6fef96464736f6c634300081a0033","sourceMap":"259:282:81:-:0;;;;;;;;;;;;;-1:-1:-1;;259:282:81;;;;-1:-1:-1;;;;;259:282:81;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;259:282:81;;;;;;386:16;;259:282;;;;;;;;386:16;259:282;;;;;;;;;;;;-1:-1:-1;259:282:81;;;;;;-1:-1:-1;259:282:81;;;;;-1:-1:-1;259:282:81","linkReferences":{}},"deployedBytecode":{"object":"0x608060405260043610156100c0575b632226c8b960e11b60809081526020906004817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa80156100b5575f9015610139575060203d6020116100ae575b601f19601f820116608001906080821067ffffffffffffffff83111761009a5761009591604052608001610117565b610139565b634e487b7160e01b5f52604160045260245ffd5b503d610066565b6040513d5f823e3d90fd5b5f3560e01c63f887ea400361000e5734610113575f366003190112610113577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166080908152602090f35b5f80fd5b602090607f190112610113576080516001600160a01b03811681036101135790565b5f8091368280378136915af43d5f803e15610152573d5ff35b3d5ffdfea26469706673582212207395defe08345fda7fa0275e94c4547716017484d822753fbfc88698d6fef96464736f6c634300081a0033","sourceMap":"259:282:81:-:0;;;;;;;;;-1:-1:-1;;;;259:282:81;508:24;;;;;259:282;;516:6;-1:-1:-1;;;;;259:282:81;508:24;;;;;;-1:-1:-1;508:24:81;;2381:17:39;508:24:81;;;;;;;;;259:282;;;;;;;;;;;;;;;;;;508:24;259:282;;;;508:24;;:::i;:::-;2381:17:39;:::i;259:282:81:-;;;;-1:-1:-1;259:282:81;;;;;-1:-1:-1;259:282:81;508:24;;;;;;259:282;;;-1:-1:-1;259:282:81;;;;;;;;;;;;;;;;;;;-1:-1:-1;;259:282:81;;;;309:31;-1:-1:-1;;;;;259:282:81;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;259:282:81;;;;;;;:::o;949:895:39:-;1019:819;949:895;;1019:819;;;;;;;;;;;;;;;;;;;;;;","linkReferences":{},"immutableReferences":{"54564":[{"start":35,"length":32},{"start":225,"length":32}]}},"methodIdentifiers":{"router()":"f887ea40"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_router\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"stateMutability\":\"payable\",\"type\":\"fallback\"},{\"inputs\":[],\"name\":\"router\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/MirrorProxy.sol\":\"MirrorProxy\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/openzeppelin-contracts-upgradeable/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts-upgradeable/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin-foundry-upgrades/=lib/openzeppelin-foundry-upgrades/src/\",\":solidity-stringutils/=lib/openzeppelin-foundry-upgrades/lib/solidity-stringutils/\"],\"viaIR\":true},\"sources\":{\"lib/openzeppelin-contracts/contracts/proxy/Proxy.sol\":{\"keccak256\":\"0xc3f2ec76a3de8ed7a7007c46166f5550c72c7709e3fc7e8bb3111a7191cdedbd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e73efb4c2ca655882dc237c6b4f234a9bd36d97159d8fcaa837eb01171f726ac\",\"dweb:/ipfs/QmTNnnv7Gu5fs5G1ZMh7Fexp8N4XUs3XrNAngjcxgiss3e\"]},\"src/IMirrorProxy.sol\":{\"keccak256\":\"0x56448b8905cc408f5656d47c893f3cda6623992ef1ba6a2e0a1be06b04c0b570\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://7d148123c4f51abce8b8e92c45830dd7de3829e228f37fd2e9093616dd7b2469\",\"dweb:/ipfs/QmTkohe2uFVsJiCKdu7QBFYff6L3tzvE7rTjnRhnjdgEmG\"]},\"src/IRouter.sol\":{\"keccak256\":\"0x4eea409058588f3e4d88b1687bfe367c6a6407b905e5af2df693327ab443fa7a\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://fc93c4fdb632d11e8cbfea97f2bf10d9e40fedd38649fdc020d65fd52d122421\",\"dweb:/ipfs/QmVsGD6aQ8oZqTAZJNrdQotWynFLGpfWD7zrfDSNumx87s\"]},\"src/MirrorProxy.sol\":{\"keccak256\":\"0xbb15dbe1f5a0bb2168af590f1aee9748d3a96b4f7423f3428fe6fd24a9796c30\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://d17ae2869b3fbfcc3a03754bedffcd798f70bf53b771f95d1f2f0b8f113662a8\",\"dweb:/ipfs/QmdUwWV5MdYzsxXaq1R2zLAttW5XwEKX6SSTpVo6pRynwq\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.26+commit.8a97fa7a"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"_router","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"stateMutability":"payable","type":"fallback"},{"inputs":[],"stateMutability":"view","type":"function","name":"router","outputs":[{"internalType":"address","name":"","type":"address"}]}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/openzeppelin-contracts-upgradeable/lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","halmos-cheatcodes/=lib/openzeppelin-contracts-upgradeable/lib/halmos-cheatcodes/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/","openzeppelin-foundry-upgrades/=lib/openzeppelin-foundry-upgrades/src/","solidity-stringutils/=lib/openzeppelin-foundry-upgrades/lib/solidity-stringutils/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/MirrorProxy.sol":"MirrorProxy"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/openzeppelin-contracts/contracts/proxy/Proxy.sol":{"keccak256":"0xc3f2ec76a3de8ed7a7007c46166f5550c72c7709e3fc7e8bb3111a7191cdedbd","urls":["bzz-raw://e73efb4c2ca655882dc237c6b4f234a9bd36d97159d8fcaa837eb01171f726ac","dweb:/ipfs/QmTNnnv7Gu5fs5G1ZMh7Fexp8N4XUs3XrNAngjcxgiss3e"],"license":"MIT"},"src/IMirrorProxy.sol":{"keccak256":"0x56448b8905cc408f5656d47c893f3cda6623992ef1ba6a2e0a1be06b04c0b570","urls":["bzz-raw://7d148123c4f51abce8b8e92c45830dd7de3829e228f37fd2e9093616dd7b2469","dweb:/ipfs/QmTkohe2uFVsJiCKdu7QBFYff6L3tzvE7rTjnRhnjdgEmG"],"license":"UNLICENSED"},"src/IRouter.sol":{"keccak256":"0x4eea409058588f3e4d88b1687bfe367c6a6407b905e5af2df693327ab443fa7a","urls":["bzz-raw://fc93c4fdb632d11e8cbfea97f2bf10d9e40fedd38649fdc020d65fd52d122421","dweb:/ipfs/QmVsGD6aQ8oZqTAZJNrdQotWynFLGpfWD7zrfDSNumx87s"],"license":"UNLICENSED"},"src/MirrorProxy.sol":{"keccak256":"0xbb15dbe1f5a0bb2168af590f1aee9748d3a96b4f7423f3428fe6fd24a9796c30","urls":["bzz-raw://d17ae2869b3fbfcc3a03754bedffcd798f70bf53b771f95d1f2f0b8f113662a8","dweb:/ipfs/QmdUwWV5MdYzsxXaq1R2zLAttW5XwEKX6SSTpVo6pRynwq"],"license":"UNLICENSED"}},"version":1},"storageLayout":{"storage":[],"types":{}},"ast":{"absolutePath":"src/MirrorProxy.sol","id":54589,"exportedSymbols":{"IMirrorProxy":[53691],"IRouter":[54013],"MirrorProxy":[54588],"Proxy":[41489]},"nodeType":"SourceUnit","src":"39:503:81","nodes":[{"id":54552,"nodeType":"PragmaDirective","src":"39:24:81","nodes":[],"literals":["solidity","^","0.8",".26"]},{"id":54554,"nodeType":"ImportDirective","src":"65:62:81","nodes":[],"absolutePath":"lib/openzeppelin-contracts/contracts/proxy/Proxy.sol","file":"@openzeppelin/contracts/proxy/Proxy.sol","nameLocation":"-1:-1:-1","scope":54589,"sourceUnit":41490,"symbolAliases":[{"foreign":{"id":54553,"name":"Proxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41489,"src":"73:5:81","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":54556,"nodeType":"ImportDirective","src":"128:48:81","nodes":[],"absolutePath":"src/IMirrorProxy.sol","file":"./IMirrorProxy.sol","nameLocation":"-1:-1:-1","scope":54589,"sourceUnit":53692,"symbolAliases":[{"foreign":{"id":54555,"name":"IMirrorProxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53691,"src":"136:12:81","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":54558,"nodeType":"ImportDirective","src":"177:38:81","nodes":[],"absolutePath":"src/IRouter.sol","file":"./IRouter.sol","nameLocation":"-1:-1:-1","scope":54589,"sourceUnit":54014,"symbolAliases":[{"foreign":{"id":54557,"name":"IRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54013,"src":"185:7:81","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":54588,"nodeType":"ContractDefinition","src":"259:282:81","nodes":[{"id":54564,"nodeType":"VariableDeclaration","src":"309:31:81","nodes":[],"baseFunctions":[53690],"constant":false,"functionSelector":"f887ea40","mutability":"immutable","name":"router","nameLocation":"334:6:81","scope":54588,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":54563,"name":"address","nodeType":"ElementaryTypeName","src":"309:7:81","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"public"},{"id":54574,"nodeType":"FunctionDefinition","src":"347:62:81","nodes":[],"body":{"id":54573,"nodeType":"Block","src":"376:33:81","nodes":[],"statements":[{"expression":{"id":54571,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":54569,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54564,"src":"386:6:81","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":54570,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54566,"src":"395:7:81","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"386:16:81","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":54572,"nodeType":"ExpressionStatement","src":"386:16:81"}]},"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":54567,"nodeType":"ParameterList","parameters":[{"constant":false,"id":54566,"mutability":"mutable","name":"_router","nameLocation":"367:7:81","nodeType":"VariableDeclaration","scope":54574,"src":"359:15:81","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":54565,"name":"address","nodeType":"ElementaryTypeName","src":"359:7:81","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"358:17:81"},"returnParameters":{"id":54568,"nodeType":"ParameterList","parameters":[],"src":"376:0:81"},"scope":54588,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":54587,"nodeType":"FunctionDefinition","src":"415:124:81","nodes":[],"body":{"id":54586,"nodeType":"Block","src":"491:48:81","nodes":[],"statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":54581,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54564,"src":"516:6:81","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":54580,"name":"IRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54013,"src":"508:7:81","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IRouter_$54013_$","typeString":"type(contract IRouter)"}},"id":54582,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"508:15:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IRouter_$54013","typeString":"contract IRouter"}},"id":54583,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"524:6:81","memberName":"mirror","nodeType":"MemberAccess","referencedDeclaration":53867,"src":"508:22:81","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":54584,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"508:24:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":54579,"id":54585,"nodeType":"Return","src":"501:31:81"}]},"baseFunctions":[41470],"implemented":true,"kind":"function","modifiers":[],"name":"_implementation","nameLocation":"424:15:81","overrides":{"id":54576,"nodeType":"OverrideSpecifier","overrides":[],"src":"464:8:81"},"parameters":{"id":54575,"nodeType":"ParameterList","parameters":[],"src":"439:2:81"},"returnParameters":{"id":54579,"nodeType":"ParameterList","parameters":[{"constant":false,"id":54578,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":54587,"src":"482:7:81","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":54577,"name":"address","nodeType":"ElementaryTypeName","src":"482:7:81","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"481:9:81"},"scope":54588,"stateMutability":"view","virtual":true,"visibility":"internal"}],"abstract":false,"baseContracts":[{"baseName":{"id":54559,"name":"IMirrorProxy","nameLocations":["283:12:81"],"nodeType":"IdentifierPath","referencedDeclaration":53691,"src":"283:12:81"},"id":54560,"nodeType":"InheritanceSpecifier","src":"283:12:81"},{"baseName":{"id":54561,"name":"Proxy","nameLocations":["297:5:81"],"nodeType":"IdentifierPath","referencedDeclaration":41489,"src":"297:5:81"},"id":54562,"nodeType":"InheritanceSpecifier","src":"297:5:81"}],"canonicalName":"MirrorProxy","contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"linearizedBaseContracts":[54588,41489,53691],"name":"MirrorProxy","nameLocation":"268:11:81","scope":54589,"usedErrors":[],"usedEvents":[]}],"license":"UNLICENSED"},"id":81} \ No newline at end of file +{"abi":[{"type":"constructor","inputs":[{"name":"_router","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"type":"fallback","stateMutability":"payable"},{"type":"function","name":"router","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"}],"bytecode":{"object":"0x60a034606b57601f61021038819003918201601f19168301916001600160401b03831184841017606f57808492602094604052833981010312606b57516001600160a01b0381168103606b5760805260405161018c908161008482396080518181816023015260e10152f35b5f80fd5b634e487b7160e01b5f52604160045260245ffdfe608060405260043610156100c0575b632226c8b960e11b60809081526020906004817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa80156100b5575f9015610139575060203d6020116100ae575b601f19601f820116608001906080821067ffffffffffffffff83111761009a5761009591604052608001610117565b610139565b634e487b7160e01b5f52604160045260245ffd5b503d610066565b6040513d5f823e3d90fd5b5f3560e01c63f887ea400361000e5734610113575f366003190112610113577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166080908152602090f35b5f80fd5b602090607f190112610113576080516001600160a01b03811681036101135790565b5f8091368280378136915af43d5f803e15610152573d5ff35b3d5ffdfea2646970667358221220300aa0731698586ff2773376575e20cd0619de19d8ea3e49ebf0f2ad922ccbb564736f6c634300081a0033","sourceMap":"259:282:81:-:0;;;;;;;;;;;;;-1:-1:-1;;259:282:81;;;;-1:-1:-1;;;;;259:282:81;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;259:282:81;;;;;;386:16;;259:282;;;;;;;;386:16;259:282;;;;;;;;;;;;-1:-1:-1;259:282:81;;;;;;-1:-1:-1;259:282:81;;;;;-1:-1:-1;259:282:81","linkReferences":{}},"deployedBytecode":{"object":"0x608060405260043610156100c0575b632226c8b960e11b60809081526020906004817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa80156100b5575f9015610139575060203d6020116100ae575b601f19601f820116608001906080821067ffffffffffffffff83111761009a5761009591604052608001610117565b610139565b634e487b7160e01b5f52604160045260245ffd5b503d610066565b6040513d5f823e3d90fd5b5f3560e01c63f887ea400361000e5734610113575f366003190112610113577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166080908152602090f35b5f80fd5b602090607f190112610113576080516001600160a01b03811681036101135790565b5f8091368280378136915af43d5f803e15610152573d5ff35b3d5ffdfea2646970667358221220300aa0731698586ff2773376575e20cd0619de19d8ea3e49ebf0f2ad922ccbb564736f6c634300081a0033","sourceMap":"259:282:81:-:0;;;;;;;;;-1:-1:-1;;;;259:282:81;508:24;;;;;259:282;;516:6;-1:-1:-1;;;;;259:282:81;508:24;;;;;;-1:-1:-1;508:24:81;;2381:17:39;508:24:81;;;;;;;;;259:282;;;;;;;;;;;;;;;;;;508:24;259:282;;;;508:24;;:::i;:::-;2381:17:39;:::i;259:282:81:-;;;;-1:-1:-1;259:282:81;;;;;-1:-1:-1;259:282:81;508:24;;;;;;259:282;;;-1:-1:-1;259:282:81;;;;;;;;;;;;;;;;;;;-1:-1:-1;;259:282:81;;;;309:31;-1:-1:-1;;;;;259:282:81;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;259:282:81;;;;;;;:::o;949:895:39:-;1019:819;949:895;;1019:819;;;;;;;;;;;;;;;;;;;;;;","linkReferences":{},"immutableReferences":{"54649":[{"start":35,"length":32},{"start":225,"length":32}]}},"methodIdentifiers":{"router()":"f887ea40"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_router\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"stateMutability\":\"payable\",\"type\":\"fallback\"},{\"inputs\":[],\"name\":\"router\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/MirrorProxy.sol\":\"MirrorProxy\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/openzeppelin-contracts-upgradeable/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts-upgradeable/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin-foundry-upgrades/=lib/openzeppelin-foundry-upgrades/src/\",\":solidity-stringutils/=lib/openzeppelin-foundry-upgrades/lib/solidity-stringutils/\"],\"viaIR\":true},\"sources\":{\"lib/openzeppelin-contracts/contracts/proxy/Proxy.sol\":{\"keccak256\":\"0xc3f2ec76a3de8ed7a7007c46166f5550c72c7709e3fc7e8bb3111a7191cdedbd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e73efb4c2ca655882dc237c6b4f234a9bd36d97159d8fcaa837eb01171f726ac\",\"dweb:/ipfs/QmTNnnv7Gu5fs5G1ZMh7Fexp8N4XUs3XrNAngjcxgiss3e\"]},\"src/IMirrorProxy.sol\":{\"keccak256\":\"0x56448b8905cc408f5656d47c893f3cda6623992ef1ba6a2e0a1be06b04c0b570\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://7d148123c4f51abce8b8e92c45830dd7de3829e228f37fd2e9093616dd7b2469\",\"dweb:/ipfs/QmTkohe2uFVsJiCKdu7QBFYff6L3tzvE7rTjnRhnjdgEmG\"]},\"src/IRouter.sol\":{\"keccak256\":\"0xb16e44a8917c8292c47779fdcb6a8fa23a394258370375d83774e324c159a8d2\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://356609e9f3ed19904806ba235c5fd247171754eea0f479d826558a9a7908cf05\",\"dweb:/ipfs/QmXPnJzKpk6AhqXjd2cKgReTvnZULcn2tdH2RiU8avLP7P\"]},\"src/MirrorProxy.sol\":{\"keccak256\":\"0xbb15dbe1f5a0bb2168af590f1aee9748d3a96b4f7423f3428fe6fd24a9796c30\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://d17ae2869b3fbfcc3a03754bedffcd798f70bf53b771f95d1f2f0b8f113662a8\",\"dweb:/ipfs/QmdUwWV5MdYzsxXaq1R2zLAttW5XwEKX6SSTpVo6pRynwq\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.26+commit.8a97fa7a"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"_router","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"stateMutability":"payable","type":"fallback"},{"inputs":[],"stateMutability":"view","type":"function","name":"router","outputs":[{"internalType":"address","name":"","type":"address"}]}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/openzeppelin-contracts-upgradeable/lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","halmos-cheatcodes/=lib/openzeppelin-contracts-upgradeable/lib/halmos-cheatcodes/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/","openzeppelin-foundry-upgrades/=lib/openzeppelin-foundry-upgrades/src/","solidity-stringutils/=lib/openzeppelin-foundry-upgrades/lib/solidity-stringutils/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/MirrorProxy.sol":"MirrorProxy"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/openzeppelin-contracts/contracts/proxy/Proxy.sol":{"keccak256":"0xc3f2ec76a3de8ed7a7007c46166f5550c72c7709e3fc7e8bb3111a7191cdedbd","urls":["bzz-raw://e73efb4c2ca655882dc237c6b4f234a9bd36d97159d8fcaa837eb01171f726ac","dweb:/ipfs/QmTNnnv7Gu5fs5G1ZMh7Fexp8N4XUs3XrNAngjcxgiss3e"],"license":"MIT"},"src/IMirrorProxy.sol":{"keccak256":"0x56448b8905cc408f5656d47c893f3cda6623992ef1ba6a2e0a1be06b04c0b570","urls":["bzz-raw://7d148123c4f51abce8b8e92c45830dd7de3829e228f37fd2e9093616dd7b2469","dweb:/ipfs/QmTkohe2uFVsJiCKdu7QBFYff6L3tzvE7rTjnRhnjdgEmG"],"license":"UNLICENSED"},"src/IRouter.sol":{"keccak256":"0xb16e44a8917c8292c47779fdcb6a8fa23a394258370375d83774e324c159a8d2","urls":["bzz-raw://356609e9f3ed19904806ba235c5fd247171754eea0f479d826558a9a7908cf05","dweb:/ipfs/QmXPnJzKpk6AhqXjd2cKgReTvnZULcn2tdH2RiU8avLP7P"],"license":"UNLICENSED"},"src/MirrorProxy.sol":{"keccak256":"0xbb15dbe1f5a0bb2168af590f1aee9748d3a96b4f7423f3428fe6fd24a9796c30","urls":["bzz-raw://d17ae2869b3fbfcc3a03754bedffcd798f70bf53b771f95d1f2f0b8f113662a8","dweb:/ipfs/QmdUwWV5MdYzsxXaq1R2zLAttW5XwEKX6SSTpVo6pRynwq"],"license":"UNLICENSED"}},"version":1},"storageLayout":{"storage":[],"types":{}},"ast":{"absolutePath":"src/MirrorProxy.sol","id":54674,"exportedSymbols":{"IMirrorProxy":[53699],"IRouter":[54023],"MirrorProxy":[54673],"Proxy":[41489]},"nodeType":"SourceUnit","src":"39:503:81","nodes":[{"id":54637,"nodeType":"PragmaDirective","src":"39:24:81","nodes":[],"literals":["solidity","^","0.8",".26"]},{"id":54639,"nodeType":"ImportDirective","src":"65:62:81","nodes":[],"absolutePath":"lib/openzeppelin-contracts/contracts/proxy/Proxy.sol","file":"@openzeppelin/contracts/proxy/Proxy.sol","nameLocation":"-1:-1:-1","scope":54674,"sourceUnit":41490,"symbolAliases":[{"foreign":{"id":54638,"name":"Proxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41489,"src":"73:5:81","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":54641,"nodeType":"ImportDirective","src":"128:48:81","nodes":[],"absolutePath":"src/IMirrorProxy.sol","file":"./IMirrorProxy.sol","nameLocation":"-1:-1:-1","scope":54674,"sourceUnit":53700,"symbolAliases":[{"foreign":{"id":54640,"name":"IMirrorProxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53699,"src":"136:12:81","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":54643,"nodeType":"ImportDirective","src":"177:38:81","nodes":[],"absolutePath":"src/IRouter.sol","file":"./IRouter.sol","nameLocation":"-1:-1:-1","scope":54674,"sourceUnit":54024,"symbolAliases":[{"foreign":{"id":54642,"name":"IRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54023,"src":"185:7:81","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":54673,"nodeType":"ContractDefinition","src":"259:282:81","nodes":[{"id":54649,"nodeType":"VariableDeclaration","src":"309:31:81","nodes":[],"baseFunctions":[53698],"constant":false,"functionSelector":"f887ea40","mutability":"immutable","name":"router","nameLocation":"334:6:81","scope":54673,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":54648,"name":"address","nodeType":"ElementaryTypeName","src":"309:7:81","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"public"},{"id":54659,"nodeType":"FunctionDefinition","src":"347:62:81","nodes":[],"body":{"id":54658,"nodeType":"Block","src":"376:33:81","nodes":[],"statements":[{"expression":{"id":54656,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":54654,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54649,"src":"386:6:81","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":54655,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54651,"src":"395:7:81","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"386:16:81","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":54657,"nodeType":"ExpressionStatement","src":"386:16:81"}]},"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":54652,"nodeType":"ParameterList","parameters":[{"constant":false,"id":54651,"mutability":"mutable","name":"_router","nameLocation":"367:7:81","nodeType":"VariableDeclaration","scope":54659,"src":"359:15:81","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":54650,"name":"address","nodeType":"ElementaryTypeName","src":"359:7:81","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"358:17:81"},"returnParameters":{"id":54653,"nodeType":"ParameterList","parameters":[],"src":"376:0:81"},"scope":54673,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":54672,"nodeType":"FunctionDefinition","src":"415:124:81","nodes":[],"body":{"id":54671,"nodeType":"Block","src":"491:48:81","nodes":[],"statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":54666,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54649,"src":"516:6:81","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":54665,"name":"IRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54023,"src":"508:7:81","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IRouter_$54023_$","typeString":"type(contract IRouter)"}},"id":54667,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"508:15:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IRouter_$54023","typeString":"contract IRouter"}},"id":54668,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"524:6:81","memberName":"mirror","nodeType":"MemberAccess","referencedDeclaration":53877,"src":"508:22:81","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":54669,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"508:24:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":54664,"id":54670,"nodeType":"Return","src":"501:31:81"}]},"baseFunctions":[41470],"implemented":true,"kind":"function","modifiers":[],"name":"_implementation","nameLocation":"424:15:81","overrides":{"id":54661,"nodeType":"OverrideSpecifier","overrides":[],"src":"464:8:81"},"parameters":{"id":54660,"nodeType":"ParameterList","parameters":[],"src":"439:2:81"},"returnParameters":{"id":54664,"nodeType":"ParameterList","parameters":[{"constant":false,"id":54663,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":54672,"src":"482:7:81","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":54662,"name":"address","nodeType":"ElementaryTypeName","src":"482:7:81","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"481:9:81"},"scope":54673,"stateMutability":"view","virtual":true,"visibility":"internal"}],"abstract":false,"baseContracts":[{"baseName":{"id":54644,"name":"IMirrorProxy","nameLocations":["283:12:81"],"nodeType":"IdentifierPath","referencedDeclaration":53699,"src":"283:12:81"},"id":54645,"nodeType":"InheritanceSpecifier","src":"283:12:81"},{"baseName":{"id":54646,"name":"Proxy","nameLocations":["297:5:81"],"nodeType":"IdentifierPath","referencedDeclaration":41489,"src":"297:5:81"},"id":54647,"nodeType":"InheritanceSpecifier","src":"297:5:81"}],"canonicalName":"MirrorProxy","contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"linearizedBaseContracts":[54673,41489,53699],"name":"MirrorProxy","nameLocation":"268:11:81","scope":54674,"usedErrors":[],"usedEvents":[]}],"license":"UNLICENSED"},"id":81} \ No newline at end of file diff --git a/ethexe/ethereum/Router.json b/ethexe/ethereum/Router.json index 9d9d69004ea..01bd835d34a 100644 --- a/ethexe/ethereum/Router.json +++ b/ethexe/ethereum/Router.json @@ -1 +1 @@ -{"abi":[{"type":"constructor","inputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"baseFee","inputs":[],"outputs":[{"name":"","type":"uint128","internalType":"uint128"}],"stateMutability":"view"},{"type":"function","name":"baseWeight","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"codeState","inputs":[{"name":"codeId","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"uint8","internalType":"enum IRouter.CodeState"}],"stateMutability":"view"},{"type":"function","name":"commitBlocks","inputs":[{"name":"blockCommitmentsArray","type":"tuple[]","internalType":"struct IRouter.BlockCommitment[]","components":[{"name":"blockHash","type":"bytes32","internalType":"bytes32"},{"name":"prevCommitmentHash","type":"bytes32","internalType":"bytes32"},{"name":"predBlockHash","type":"bytes32","internalType":"bytes32"},{"name":"transitions","type":"tuple[]","internalType":"struct IRouter.StateTransition[]","components":[{"name":"actorId","type":"address","internalType":"address"},{"name":"newStateHash","type":"bytes32","internalType":"bytes32"},{"name":"valueToReceive","type":"uint128","internalType":"uint128"},{"name":"valueClaims","type":"tuple[]","internalType":"struct IRouter.ValueClaim[]","components":[{"name":"messageId","type":"bytes32","internalType":"bytes32"},{"name":"destination","type":"address","internalType":"address"},{"name":"value","type":"uint128","internalType":"uint128"}]},{"name":"messages","type":"tuple[]","internalType":"struct IRouter.OutgoingMessage[]","components":[{"name":"id","type":"bytes32","internalType":"bytes32"},{"name":"destination","type":"address","internalType":"address"},{"name":"payload","type":"bytes","internalType":"bytes"},{"name":"value","type":"uint128","internalType":"uint128"},{"name":"replyDetails","type":"tuple","internalType":"struct IRouter.ReplyDetails","components":[{"name":"to","type":"bytes32","internalType":"bytes32"},{"name":"code","type":"bytes4","internalType":"bytes4"}]}]}]}]},{"name":"signatures","type":"bytes[]","internalType":"bytes[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"commitCodes","inputs":[{"name":"codeCommitmentsArray","type":"tuple[]","internalType":"struct IRouter.CodeCommitment[]","components":[{"name":"id","type":"bytes32","internalType":"bytes32"},{"name":"valid","type":"bool","internalType":"bool"}]},{"name":"signatures","type":"bytes[]","internalType":"bytes[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"createProgram","inputs":[{"name":"codeId","type":"bytes32","internalType":"bytes32"},{"name":"salt","type":"bytes32","internalType":"bytes32"},{"name":"payload","type":"bytes","internalType":"bytes"},{"name":"_value","type":"uint128","internalType":"uint128"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"payable"},{"type":"function","name":"createProgramWithDecoder","inputs":[{"name":"decoderImplementation","type":"address","internalType":"address"},{"name":"codeId","type":"bytes32","internalType":"bytes32"},{"name":"salt","type":"bytes32","internalType":"bytes32"},{"name":"payload","type":"bytes","internalType":"bytes"},{"name":"_value","type":"uint128","internalType":"uint128"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"payable"},{"type":"function","name":"genesisBlockHash","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"getStorageSlot","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"initialize","inputs":[{"name":"initialOwner","type":"address","internalType":"address"},{"name":"_mirror","type":"address","internalType":"address"},{"name":"_mirrorProxy","type":"address","internalType":"address"},{"name":"_wrappedVara","type":"address","internalType":"address"},{"name":"_validatorsKeys","type":"address[]","internalType":"address[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"lastBlockCommitmentHash","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"mirror","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"mirrorProxy","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"owner","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"programCodeId","inputs":[{"name":"program","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"programsCount","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"reinitialize","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"renounceOwnership","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"requestCodeValidation","inputs":[{"name":"codeId","type":"bytes32","internalType":"bytes32"},{"name":"blobTxHash","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setBaseWeight","inputs":[{"name":"_baseWeight","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setMirror","inputs":[{"name":"_mirror","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setStorageSlot","inputs":[{"name":"namespace","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setValuePerWeight","inputs":[{"name":"_valuePerWeight","type":"uint128","internalType":"uint128"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"signingThresholdPercentage","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"transferOwnership","inputs":[{"name":"newOwner","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"updateValidators","inputs":[{"name":"validatorsAddressArray","type":"address[]","internalType":"address[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"validatedCodesCount","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"validatorExists","inputs":[{"name":"validator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"validators","inputs":[],"outputs":[{"name":"","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"validatorsCount","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"validatorsThreshold","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"valuePerWeight","inputs":[],"outputs":[{"name":"","type":"uint128","internalType":"uint128"}],"stateMutability":"view"},{"type":"function","name":"wrappedVara","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"event","name":"BaseWeightChanged","inputs":[{"name":"baseWeight","type":"uint64","indexed":false,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"BlockCommitted","inputs":[{"name":"blockHash","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"CodeGotValidated","inputs":[{"name":"id","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"valid","type":"bool","indexed":true,"internalType":"bool"}],"anonymous":false},{"type":"event","name":"CodeValidationRequested","inputs":[{"name":"codeId","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"blobTxHash","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"Initialized","inputs":[{"name":"version","type":"uint64","indexed":false,"internalType":"uint64"}],"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":"ProgramCreated","inputs":[{"name":"actorId","type":"address","indexed":false,"internalType":"address"},{"name":"codeId","type":"bytes32","indexed":true,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"StorageSlotChanged","inputs":[],"anonymous":false},{"type":"event","name":"ValidatorsSetChanged","inputs":[],"anonymous":false},{"type":"event","name":"ValuePerWeightChanged","inputs":[{"name":"valuePerWeight","type":"uint128","indexed":false,"internalType":"uint128"}],"anonymous":false},{"type":"error","name":"ECDSAInvalidSignature","inputs":[]},{"type":"error","name":"ECDSAInvalidSignatureLength","inputs":[{"name":"length","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ECDSAInvalidSignatureS","inputs":[{"name":"s","type":"bytes32","internalType":"bytes32"}]},{"type":"error","name":"FailedDeployment","inputs":[]},{"type":"error","name":"InsufficientBalance","inputs":[{"name":"balance","type":"uint256","internalType":"uint256"},{"name":"needed","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InvalidInitialization","inputs":[]},{"type":"error","name":"NotInitializing","inputs":[]},{"type":"error","name":"OwnableInvalidOwner","inputs":[{"name":"owner","type":"address","internalType":"address"}]},{"type":"error","name":"OwnableUnauthorizedAccount","inputs":[{"name":"account","type":"address","internalType":"address"}]},{"type":"error","name":"ReentrancyGuardReentrantCall","inputs":[]}],"bytecode":{"object":"0x6080806040523460d0577ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005460ff8160401c1660c1576002600160401b03196001600160401b03821601605c575b604051612a5d90816100d58239f35b6001600160401b0319166001600160401b039081177ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005581527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602090a15f80604d565b63f92ee8a960e01b5f5260045ffd5b5f80fdfe6101a0806040526004361015610013575f80fd5b5f610180525f3560e01c9081627a32e714611e5b575080630834fecc14611e245780631c149d8a14611cc857806328e24b3d14611c9e5780632dacfb6914611c715780633d43b41814611c1f578063444d917214611be75780635686cad514611b21578063666d124c14611a0b5780636c2eb350146117f55780636ef25c3a146117c7578063715018a61461175557806378ee5dec1461171a5780638028861a146116985780638074b455146115d557806388f50cf01461159a5780638da5cb5b146115635780638febbd59146115165780639067088e146114ce57806396708226146114a257806396a2ddfa14611472578063a6bbbe1c146113c2578063c13911e814611376578063ca1e7819146112f9578063d3fd6364146112c0578063e71731e4146111ae578063e97d3eb314610f5f578063ed612f8c14610f2f578063edc8722514610f0a578063efd81abc14610eda578063f2fde38b14610eb6578063f8453e7c14610ba75763fa97ed6d1461018c575f80fd5b34610580576040366003190112610580576004356001600160401b038111610580576101bc903690600401611f42565b6024356001600160401b038111610580576101db903690600401611f42565b907f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005c610b9257838360017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005d610180516080526060915b816080511015610b535760805160051b8101359136829003607e19018312156105805760045f805160206129e8833981519152540180546020858501013503610b0f57610285604085850101356127f6565b15610abe5782840180359091556101805161016052606096919590870194915b6102b18686860161277e565b9050610160511015610a36576102c98686860161277e565b9060c052610160511015610595576101605160051b60c051013560a052609e1960c05136030160a0511215610580575f805160206129e88339815191525461031660a05160c05101612839565b6001600160a01b03165f908152600b82016020526040902054156109d95760206001600160801b0391600360018060a01b0391015416604461035d60a05160c05101612839565b61036f604060a05160c051010161284d565b60405163a9059cbb60e01b81526001600160a01b0390921660048301529490941660248501526101805184928391905af18015610587576109ad575b5060a05160c0519297926001600160a01b03916103c89101612839565b166101205261018051606061010081905260a05160c051010197905b6103f48960a05160c05101612861565b90508110156105af5761040d8960a05160c05101612861565b90610140528110156105955761042d602060608302610140510101612839565b6104ce61044460406060850261014051010161284d565b6040519060208201936060860261014051013585526001600160601b03199060601b1660408301526001600160801b03199060801b1660548201526044815261048e606482611e9b565b60206040519384926101005151808461010051018587015e84019083820190610180518252519283915e010161018051815203601f198101835282611e9b565b610100526104e6602060608302610140510101612839565b6104fa60406060840261014051010161284d565b610120513b15610580576040516314503e5160e01b81526101405160608502013560048201526001600160a01b0390921660248301526001600160801b0316604482015261018051610120518290606490829084905af1801561058757610565575b506001016103e4565b6101805161057291611e9b565b61018051610580578a61055c565b6101805180fd5b6040513d61018051823e3d90fd5b634e487b7160e01b61018051526032600452602461018051fd5b509190929496509492946101805160e052606060e052610180515b60a05160c0516105df9101608081019061277e565b90508110156108925760a05160c0516105fd9101608081019061277e565b821015610595578160051b81013560be1982360301811215610580576106d48261062b602084830101612839565b6106c96034605461064285880160408101906125c7565b61065360608a89989498010161284d565b9061066260a08b8a0101612896565b90806040519889958d602088019c01358c526001600160601b03199060601b166040870152868601378301916001600160801b03199060801b168483015260808a8c010135606483015263ffffffff60e01b16608482015203016014810184520182611e9b565b51902060e0516120c8565b60e052818101608001356107ab576106f0602082840101612839565b61070083830160408101906125c7565b929061071060608387010161284d565b93610120513b156105805760405163c2df600960e01b8152959092013560048601526001600160a01b039092166024850152608060448501526001600160801b0391610760916084860191611fd6565b9116606483015281806101805192038161018051610120515af1801561058757610790575b506001905b016105ca565b6101805161079d91611e9b565b610180516105805789610785565b906107ba602083830101612839565b916107cb82820160408101906125c7565b90916107db60608286010161284d565b936107ea60a083830101612896565b93610120513b156105805760405163c78bde7760e01b81526001600160a01b03909716600488015260a060248801526080936001600160801b03916108339160a48a0191611fd6565b95166044870152010135606484015263ffffffff60e01b16608483015281806101805192038161018051610120515af1801561058757610877575b5060019061078a565b6101805161088491611e9b565b61018051610580578961086e565b509190969593949295610120513b1561058057604051638ea59e1d60e01b8152602060a05160c0510101356004820152610180518160248161018051610120515af1801561058757610992575b5061097c906108f360a05160c05101612839565b610905604060a05160c051010161284d565b6101005151602061010051012060e05151602060e0510120906040519260208401946001600160601b03199060601b168552602060a05160c05101013560348501526001600160801b03199060801b166054840152606483015260848201526084815261097360a482611e9b565b519020906120c8565b96600161016051016101605290959491956102a5565b6101805161099f91611e9b565b6101805161058057886108df565b6109cd9060203d81116109d2575b6109c58183611e9b565b8101906127b3565b6103ab565b503d6109bb565b60405162461bcd60e51b815260206004820152602f60248201527f636f756c646e277420706572666f726d207472616e736974696f6e20666f722060448201526e756e6b6e6f776e2070726f6772616d60881b6064820152608490fd5b945092610aab92967fd756eca21e02cb0dbde1e44a4d9c6921b5c8aa4668cfa0752784b3dc855bce1e6020604051848b01358152a1602081519101206040519060406020830193808b013585526020818c010135828501528a010135606083015260808201526080815261097360a082611e9b565b9260016080510160805290929193610233565b60405162461bcd60e51b815260206004820152602360248201527f616c6c6f776564207072656465636573736f7220626c6f636b206e6f7420666f6044820152621d5b9960ea1b6064820152608490fd5b606460405162461bcd60e51b815260206004820152602060248201527f696e76616c69642070726576696f757320636f6d6d69746d656e7420686173686044820152fd5b610b65858585602081519101206125f9565b610180517f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005d6101805180f35b633ee5aeb560e01b6101805152600461018051fd5b346105805760a036600319011261058057610bc0611e85565b602435906001600160a01b038216820361058057604435916001600160a01b038316830361058057606435926001600160a01b0384168403610580576084356001600160401b038111610580573660238201121561058057610c2c903690602481600401359101611f72565b905f80516020612a088339815191525460ff8160401c1615946001600160401b03821680159081610eae575b6001149081610ea4575b159081610e9b575b50610e865767ffffffffffffffff1982166001175f80516020612a0883398151915255610cad9186610e5a575b50610ca06127cb565b610ca86127cb565b61214e565b6040948551610cbc8782611e9b565b6017815260208101907f726f757465722e73746f726167652e526f7574657256310000000000000000008252610cf06121bf565b5190205f198101908111610e40578651906020820190815260208252610d168883611e9b565b60ff19915190201690815f805160206129e8833981519152557f5aa0c6c9fb33211212ffe5bef7a4b5d511b82a611e6677052d984e2bcedeaccc6101805161018051a15f19430192438411610e4057924082556001820180546001600160a01b03199081166001600160a01b03978816179091556002830180548216948716949094179093556003820180549093169416939093179055611a0a60058301556006919091018054680a000000009502f9006001600160c01b0319909116179055610ddf90612486565b610deb575b6101805180f35b60207fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29160ff60401b195f80516020612a0883398151915254165f80516020612a08833981519152555160018152a180610de4565b634e487b7160e01b61018051526011600452602461018051fd5b68ffffffffffffffffff191668010000000000000001175f80516020612a088339815191525587610c97565b63f92ee8a960e01b6101805152600461018051fd5b90501588610c6a565b303b159150610c62565b879150610c58565b3461058057602036600319011261058057610de4610ed2611e85565b610ca86121bf565b34610580576101805136600319011261058057602060055f805160206129e8833981519152540154604051908152f35b346105805761018051366003190112610580576020610f27612110565b604051908152f35b34610580576101805136600319011261058057602060085f805160206129e8833981519152540154604051908152f35b34610580576040366003190112610580576004356001600160401b0381116105805736602382011215610580578060040135906001600160401b038211610580573660248360061b83010111610580576024356001600160401b03811161058057610fcf83913690600401611f42565b5f805160206129e883398151915254610180519460098201939192909160605b8688101561119d5761018051508760061b84019761103d604460248b01359a0192611019846120f5565b60405160208101918d8352151560f81b604082015260218152610973604182611e9b565b988061018051528760205260ff60406101805120541660038110156111835760010361112e5761106e6001936120f5565b156110dc577f460119a8f69a33ed127de517d5ea464e958ce23ef19e4420a8b92bf780bbc2c9602082859361018051528a82526040610180512061018051506101805150600260ff19825416179055600a8a016110cb8154612102565b9055604051908152a25b0196610fef565b80610180515287602052604061018051208054610180515060ff191690556040519081527f460119a8f69a33ed127de517d5ea464e958ce23ef19e4420a8b92bf780bbc2c960206101805192a26110d5565b60405162461bcd60e51b815260206004820152602760248201527f636f64652073686f756c642062652072657175657374656420666f722076616c60448201526634b230ba34b7b760c91b6064820152608490fd5b634e487b7160e01b61018051526021600452602461018051fd5b610de49350602081519101206125f9565b34610580576020366003190112610580576004356001600160401b038111610580576111de903690600401611f42565b6111e66121bf565b5f805160206129e883398151915254610180516007820191600801905b8154811015611243576101808051839052516020908190208201546001600160a01b03165f9081529084905260409020805460ff19169055600101611203565b50610180518154908255915081611299575b611268611263368587611f72565b612486565b7f144bbc027dc176e94c43b7c1bcff2a8aa58ab434029eec294743cd4ab2e54f516101805161018051a16101805180f35b610180515260206101805120908101905b81811015611255576101805181556001016112aa565b3461058057610180513660031901126105805760206001600160401b0360065f805160206129e883398151915254015416604051908152f35b3461058057610180513660031901126105805761132660085f805160206129e88339815191525401612033565b604051809160208201602083528151809152602060408401920190610180515b818110611354575050500390f35b82516001600160a01b0316845285945060209384019390920191600101611346565b346105805760203660031901126105805760095f805160206129e88339815191525401600435610180515260205260ff6040610180512054166040516003821015611183576020918152f35b34610580576020366003190112610580576004356001600160801b03811690818103610580577f9f5e1796f1a0adf311f86170503308a06a16560a7679b7b6da35f4999200d740916020916114156121bf565b5f805160206129e883398151915254600601805477ffffffffffffffffffffffffffffffff00000000000000001916604092831b77ffffffffffffffffffffffffffffffff00000000000000001617905551908152a16101805180f35b346105805761018051366003190112610580576020600c5f805160206129e8833981519152540154604051908152f35b3461058057610180513660031901126105805760205f805160206129e883398151915254604051908152f35b34610580576020366003190112610580576114e7611e85565b600b5f805160206129e883398151915254019060018060a01b03165f52602052602060405f2054604051908152f35b346105805760203660031901126105805761152f611e85565b60075f805160206129e883398151915254019060018060a01b03165f52602052602060ff60405f2054166040519015158152f35b346105805761018051366003190112610580575f805160206129c8833981519152546040516001600160a01b039091168152602090f35b346105805761018051366003190112610580575f805160206129e883398151915254600301546040516001600160a01b039091168152602090f35b6080366003190112610580576044356001600160401b03811161058057611600903690600401611f15565b90606435906001600160801b03821682036105805761162482602435600435612212565b6001600160a01b0390911693909290843b156105805761165e60405194859384936306f0ee9760e51b855261018051963260048701611ff6565b038161018051865af180156105875761167d575b602082604051908152f35b6101805161168a91611e9b565b610180516105805781611672565b34610580576020366003190112610580576004356001600160401b0381168091036105805760207f01326573cfc0bc40a2550923254394ebd7529e3e3301840dfa33cf786aead0c7916116e96121bf565b5f805160206129e883398151915254600601805467ffffffffffffffff191682179055604051908152a16101805180f35b346105805761018051366003190112610580575f805160206129e883398151915254600201546040516001600160a01b039091168152602090f35b346105805761018051366003190112610580576117706121bf565b5f805160206129c883398151915280546001600160a01b0319811690915561018051906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a36101805180f35b3461058057610180513660031901126105805760206117e4612086565b6001600160801b0360405191168152f35b346105805761018051366003190112610580576118106121bf565b5f80516020612a088339815191525460ff8160401c1680156119f7575b610e865768ffffffffffffffffff191668010000000000000002175f80516020612a08833981519152555f805160206129e8833981519152546001810154600282015460038301546001600160a01b039081169391811692169061189390600801612033565b9060409182516118a38482611e9b565b6017815260208101907f726f757465722e73746f726167652e526f75746572563200000000000000000082526118d76121bf565b5190205f198101908111610e405783519060208201908152602082526118fd8583611e9b565b60ff19915190201694855f805160206129e8833981519152557f5aa0c6c9fb33211212ffe5bef7a4b5d511b82a611e6677052d984e2bcedeaccc6101805161018051a15f194301438111610e40574086556001860180546001600160a01b03199081166001600160a01b03958616179091556002870180548216968516969096179095556003909501805490941694909116939093179091557fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d291602091906119c590612486565b60ff60401b195f80516020612a0883398151915254165f80516020612a08833981519152555160028152a16101805180f35b5060026001600160401b038216101561182d565b60a0366003190112611b1d57611a1f611e85565b602435604435916064356001600160401b038111611b1d57611a45903690600401611f15565b909160843591906001600160801b0383168303611b1d57611a67838787612212565b959060018060a01b0316966040519060208201928352604082015260408152611a91606082611e9b565b519020863b15611b1d57604051635b1b84f760e01b81526001600160a01b03909216600483015260248201525f81604481838a5af18015611b1257611afd575b50843b156105805761165e60405194859384936306f0ee9760e51b855261018051963260048701611ff6565b5f611b0791611e9b565b5f6101805285611ad1565b6040513d5f823e3d90fd5b5f80fd5b34611b1d576020366003190112611b1d576004356001600160401b038111611b1d5736602382011215611b1d57611b62903690602481600401359101611ed0565b611b6a6121bf565b602081519101205f198101908111611bd357604051906020820190815260208252611b96604083611e9b565b9051902060ff19165f805160206129e8833981519152557f5aa0c6c9fb33211212ffe5bef7a4b5d511b82a611e6677052d984e2bcedeaccc5f80a1005b634e487b7160e01b5f52601160045260245ffd5b34611b1d575f366003190112611b1d575f805160206129e883398151915254600101546040516001600160a01b039091168152602090f35b34611b1d576020366003190112611b1d57611c38611e85565b611c406121bf565b5f805160206129e88339815191525460010180546001600160a01b0319166001600160a01b03909216919091179055005b34611b1d575f366003190112611b1d57602060045f805160206129e8833981519152540154604051908152f35b34611b1d575f366003190112611b1d5760205f805160206129e88339815191525454604051908152f35b34611b1d576040366003190112611b1d576024356004358115801590611e1a575b15611dd55760095f805160206129e8833981519152540190805f528160205260ff60405f2054166003811015611dc157611d63577f65672eaf4ff8b823ea29ae013fef437d1fa9ed431125263a7a1f0ac49eada39692604092825f52602052825f20600160ff1982541617905582519182526020820152a1005b60405162461bcd60e51b815260206004820152603060248201527f636f64652077697468207375636820696420616c72656164792072657175657360448201526f1d1959081bdc881d985b1a59185d195960821b6064820152608490fd5b634e487b7160e01b5f52602160045260245ffd5b60405162461bcd60e51b815260206004820152601c60248201527f626c6f6254784861736820636f756c646e277420626520666f756e64000000006044820152606490fd5b505f491515611ce9565b34611b1d575f366003190112611b1d5760206117e46001600160801b0360065f805160206129e883398151915254015460401c1690565b34611b1d575f366003190112611b1d57602090600a5f805160206129e88339815191525401548152f35b600435906001600160a01b0382168203611b1d57565b90601f801991011681019081106001600160401b03821117611ebc57604052565b634e487b7160e01b5f52604160045260245ffd5b9291926001600160401b038211611ebc5760405191611ef9601f8201601f191660200184611e9b565b829481845281830111611b1d578281602093845f960137010152565b9181601f84011215611b1d578235916001600160401b038311611b1d5760208381860195010111611b1d57565b9181601f84011215611b1d578235916001600160401b038311611b1d576020808501948460051b010111611b1d57565b9092916001600160401b038411611ebc578360051b916020604051611f9982860182611e9b565b8096815201928101918211611b1d57915b818310611fb657505050565b82356001600160a01b0381168103611b1d57815260209283019201611faa565b908060209392818452848401375f828201840152601f01601f1916010190565b939594906120266001600160801b0393606095859360018060a01b03168852608060208901526080880191611fd6565b9616604085015216910152565b90604051918281549182825260208201905f5260205f20925f5b81811061206457505061206292500383611e9b565b565b84546001600160a01b031683526001948501948794506020909301920161204d565b5f805160206129e883398151915254600601546001600160401b038116906001600160801b039060401c811616026001600160801b038116908103611bd35790565b602080612062928195946040519682889351918291018585015e8201908382015203018085520183611e9b565b358015158103611b1d5790565b5f198114611bd35760010190565b5f805160206129e8833981519152546005600882015491015490818102918183041490151715611bd35761270f8101809111611bd357612710900490565b6001600160a01b031680156121ac575f805160206129c883398151915280546001600160a01b0319811683179091556001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3565b631e4fbdf760e01b5f525f60045260245ffd5b5f805160206129c8833981519152546001600160a01b031633036121df57565b63118cdaa760e01b5f523360045260245ffd5b906001600160801b03809116911601906001600160801b038211611bd357565b9291925f805160206129e88339815191525491815f526009830160205260ff60405f2054166003811015611dc15760020361242a5761224f612086565b600a6001600160801b03821602956001600160801b038716968703611bd35761227b87612280936121f2565b6121f2565b60038401546040516323b872dd60e01b81523260048201523060248201526001600160801b03929092166044830152602090829060649082905f906001600160a01b03165af1908115611b12575f9161240b575b50156123c6576e5af43d82803e903d91602b57fd5bf3600284015491604051602081019185835260408201526040815261230f606082611e9b565b51902091763d602d80600a3d3981f3363d3d373d3d3d363d7300000062ffffff8260881c16175f526effffffffffffffffffffffffffffff199060781b1617602052603760095ff5916001600160a01b0383169081156123b7577f8008ec1d8798725ebfa0f2d128d52e8e717dcba6e0f786557eeee70614b02bf191600c602092825f52600b810184528560405f2055016123aa8154612102565b9055604051908152a29190565b63b06ebf3d60e01b5f5260045ffd5b60405162461bcd60e51b815260206004820152601860248201527f6661696c656420746f20726574726965766520575661726100000000000000006044820152606490fd5b612424915060203d6020116109d2576109c58183611e9b565b5f6122d4565b60405162461bcd60e51b815260206004820152602e60248201527f636f6465206d7573742062652076616c696461746564206265666f726520707260448201526d37b3b930b69031b932b0ba34b7b760911b6064820152608490fd5b5f805160206129e8833981519152549060088201908154612576579091600701905f5b81518110156124e857600581901b82016020908101516001600160a01b03165f9081529084905260409020805460ff19166001908117909155016124a9565b5080519291506001600160401b038311611ebc57680100000000000000008311611ebc578154838355808410612550575b50602001905f5260205f205f5b8381106125335750505050565b82516001600160a01b031681830155602090920191600101612526565b825f528360205f2091820191015b81811061256b5750612519565b5f815560010161255e565b60405162461bcd60e51b815260206004820152602360248201527f70726576696f75732076616c696461746f727320776572656e27742072656d6f6044820152621d995960ea1b6064820152608490fd5b903590601e1981360301821215611b1d57018035906001600160401b038211611b1d57602001918136038313611b1d57565b905f805160206129e88339815191525490612612612110565b9260405190602082019081526020825261262d604083611e9b565b612669603660405180936020820195601960f81b87523060601b60228401525180918484015e81015f838201520301601f198101835282611e9b565b5190205f9260070191835b86851015612772576126aa6126a161269b6126948860051b8601866125c7565b3691611ed0565b856128ab565b909291926128e5565b6001600160a01b03165f9081526020859052604090205460ff1615612737576126d290612102565b938585146126e35760010193612674565b505050509091505b106126f257565b60405162461bcd60e51b815260206004820152601b60248201527f6e6f7420656e6f7567682076616c6964207369676e61747572657300000000006044820152606490fd5b60405162461bcd60e51b8152602060048201526013602482015272696e636f7272656374207369676e617475726560681b6044820152606490fd5b949550505050506126eb565b903590601e1981360301821215611b1d57018035906001600160401b038211611b1d57602001918160051b36038313611b1d57565b90816020910312611b1d57518015158103611b1d5790565b60ff5f80516020612a088339815191525460401c16156127e757565b631afcd79f60e31b5f5260045ffd5b905f194301438111611bd357805b61280f575b505f9150565b804083810361282057506001925050565b15612834578015611bd3575f190180612804565b612809565b356001600160a01b0381168103611b1d5790565b356001600160801b0381168103611b1d5790565b903590601e1981360301821215611b1d57018035906001600160401b038211611b1d57602001916060820236038313611b1d57565b356001600160e01b031981168103611b1d5790565b81519190604183036128db576128d49250602082015190606060408401519301515f1a90612945565b9192909190565b50505f9160029190565b6004811015611dc157806128f7575050565b6001810361290e5763f645eedf60e01b5f5260045ffd5b60028103612929575063fce698f760e01b5f5260045260245ffd5b6003146129335750565b6335e2f38360e21b5f5260045260245ffd5b91907f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a084116129bc579160209360809260ff5f9560405194855216868401526040830152606082015282805260015afa15611b12575f516001600160a01b038116156129b257905f905f90565b505f906001905f90565b5050505f916003919056fe9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c1993005c09ca1b9b8127a4fd9f3c384aac59b661441e820e17733753ff5f2e86e1e000f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a2646970667358221220d56e389db8d3491feccb6cba1bcf0a15e3ddc6fbefb4c034cc36df95b2f2238264736f6c634300081a0033","sourceMap":"781:17497:82:-:0;;;;;;;8837:64:25;781:17497:82;;;;;;7896:76:25;;-1:-1:-1;;;;;;;;;;;781:17497:82;;7985:34:25;7981:146;;-1:-1:-1;781:17497:82;;;;;;;;;7981:146:25;-1:-1:-1;;;;;;781:17497:82;-1:-1:-1;;;;;781:17497:82;;;8837:64:25;781:17497:82;;;8087:29:25;;781:17497:82;;8087:29:25;7981:146;;;;7896:76;7938:23;;;-1:-1:-1;7938:23:25;;-1:-1:-1;7938:23:25;781:17497:82;;;","linkReferences":{}},"deployedBytecode":{"object":"0x6101a0806040526004361015610013575f80fd5b5f610180525f3560e01c9081627a32e714611e5b575080630834fecc14611e245780631c149d8a14611cc857806328e24b3d14611c9e5780632dacfb6914611c715780633d43b41814611c1f578063444d917214611be75780635686cad514611b21578063666d124c14611a0b5780636c2eb350146117f55780636ef25c3a146117c7578063715018a61461175557806378ee5dec1461171a5780638028861a146116985780638074b455146115d557806388f50cf01461159a5780638da5cb5b146115635780638febbd59146115165780639067088e146114ce57806396708226146114a257806396a2ddfa14611472578063a6bbbe1c146113c2578063c13911e814611376578063ca1e7819146112f9578063d3fd6364146112c0578063e71731e4146111ae578063e97d3eb314610f5f578063ed612f8c14610f2f578063edc8722514610f0a578063efd81abc14610eda578063f2fde38b14610eb6578063f8453e7c14610ba75763fa97ed6d1461018c575f80fd5b34610580576040366003190112610580576004356001600160401b038111610580576101bc903690600401611f42565b6024356001600160401b038111610580576101db903690600401611f42565b907f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005c610b9257838360017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005d610180516080526060915b816080511015610b535760805160051b8101359136829003607e19018312156105805760045f805160206129e8833981519152540180546020858501013503610b0f57610285604085850101356127f6565b15610abe5782840180359091556101805161016052606096919590870194915b6102b18686860161277e565b9050610160511015610a36576102c98686860161277e565b9060c052610160511015610595576101605160051b60c051013560a052609e1960c05136030160a0511215610580575f805160206129e88339815191525461031660a05160c05101612839565b6001600160a01b03165f908152600b82016020526040902054156109d95760206001600160801b0391600360018060a01b0391015416604461035d60a05160c05101612839565b61036f604060a05160c051010161284d565b60405163a9059cbb60e01b81526001600160a01b0390921660048301529490941660248501526101805184928391905af18015610587576109ad575b5060a05160c0519297926001600160a01b03916103c89101612839565b166101205261018051606061010081905260a05160c051010197905b6103f48960a05160c05101612861565b90508110156105af5761040d8960a05160c05101612861565b90610140528110156105955761042d602060608302610140510101612839565b6104ce61044460406060850261014051010161284d565b6040519060208201936060860261014051013585526001600160601b03199060601b1660408301526001600160801b03199060801b1660548201526044815261048e606482611e9b565b60206040519384926101005151808461010051018587015e84019083820190610180518252519283915e010161018051815203601f198101835282611e9b565b610100526104e6602060608302610140510101612839565b6104fa60406060840261014051010161284d565b610120513b15610580576040516314503e5160e01b81526101405160608502013560048201526001600160a01b0390921660248301526001600160801b0316604482015261018051610120518290606490829084905af1801561058757610565575b506001016103e4565b6101805161057291611e9b565b61018051610580578a61055c565b6101805180fd5b6040513d61018051823e3d90fd5b634e487b7160e01b61018051526032600452602461018051fd5b509190929496509492946101805160e052606060e052610180515b60a05160c0516105df9101608081019061277e565b90508110156108925760a05160c0516105fd9101608081019061277e565b821015610595578160051b81013560be1982360301811215610580576106d48261062b602084830101612839565b6106c96034605461064285880160408101906125c7565b61065360608a89989498010161284d565b9061066260a08b8a0101612896565b90806040519889958d602088019c01358c526001600160601b03199060601b166040870152868601378301916001600160801b03199060801b168483015260808a8c010135606483015263ffffffff60e01b16608482015203016014810184520182611e9b565b51902060e0516120c8565b60e052818101608001356107ab576106f0602082840101612839565b61070083830160408101906125c7565b929061071060608387010161284d565b93610120513b156105805760405163c2df600960e01b8152959092013560048601526001600160a01b039092166024850152608060448501526001600160801b0391610760916084860191611fd6565b9116606483015281806101805192038161018051610120515af1801561058757610790575b506001905b016105ca565b6101805161079d91611e9b565b610180516105805789610785565b906107ba602083830101612839565b916107cb82820160408101906125c7565b90916107db60608286010161284d565b936107ea60a083830101612896565b93610120513b156105805760405163c78bde7760e01b81526001600160a01b03909716600488015260a060248801526080936001600160801b03916108339160a48a0191611fd6565b95166044870152010135606484015263ffffffff60e01b16608483015281806101805192038161018051610120515af1801561058757610877575b5060019061078a565b6101805161088491611e9b565b61018051610580578961086e565b509190969593949295610120513b1561058057604051638ea59e1d60e01b8152602060a05160c0510101356004820152610180518160248161018051610120515af1801561058757610992575b5061097c906108f360a05160c05101612839565b610905604060a05160c051010161284d565b6101005151602061010051012060e05151602060e0510120906040519260208401946001600160601b03199060601b168552602060a05160c05101013560348501526001600160801b03199060801b166054840152606483015260848201526084815261097360a482611e9b565b519020906120c8565b96600161016051016101605290959491956102a5565b6101805161099f91611e9b565b6101805161058057886108df565b6109cd9060203d81116109d2575b6109c58183611e9b565b8101906127b3565b6103ab565b503d6109bb565b60405162461bcd60e51b815260206004820152602f60248201527f636f756c646e277420706572666f726d207472616e736974696f6e20666f722060448201526e756e6b6e6f776e2070726f6772616d60881b6064820152608490fd5b945092610aab92967fd756eca21e02cb0dbde1e44a4d9c6921b5c8aa4668cfa0752784b3dc855bce1e6020604051848b01358152a1602081519101206040519060406020830193808b013585526020818c010135828501528a010135606083015260808201526080815261097360a082611e9b565b9260016080510160805290929193610233565b60405162461bcd60e51b815260206004820152602360248201527f616c6c6f776564207072656465636573736f7220626c6f636b206e6f7420666f6044820152621d5b9960ea1b6064820152608490fd5b606460405162461bcd60e51b815260206004820152602060248201527f696e76616c69642070726576696f757320636f6d6d69746d656e7420686173686044820152fd5b610b65858585602081519101206125f9565b610180517f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005d6101805180f35b633ee5aeb560e01b6101805152600461018051fd5b346105805760a036600319011261058057610bc0611e85565b602435906001600160a01b038216820361058057604435916001600160a01b038316830361058057606435926001600160a01b0384168403610580576084356001600160401b038111610580573660238201121561058057610c2c903690602481600401359101611f72565b905f80516020612a088339815191525460ff8160401c1615946001600160401b03821680159081610eae575b6001149081610ea4575b159081610e9b575b50610e865767ffffffffffffffff1982166001175f80516020612a0883398151915255610cad9186610e5a575b50610ca06127cb565b610ca86127cb565b61214e565b6040948551610cbc8782611e9b565b6017815260208101907f726f757465722e73746f726167652e526f7574657256310000000000000000008252610cf06121bf565b5190205f198101908111610e40578651906020820190815260208252610d168883611e9b565b60ff19915190201690815f805160206129e8833981519152557f5aa0c6c9fb33211212ffe5bef7a4b5d511b82a611e6677052d984e2bcedeaccc6101805161018051a15f19430192438411610e4057924082556001820180546001600160a01b03199081166001600160a01b03978816179091556002830180548216948716949094179093556003820180549093169416939093179055611a0a60058301556006919091018054680a000000009502f9006001600160c01b0319909116179055610ddf90612486565b610deb575b6101805180f35b60207fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29160ff60401b195f80516020612a0883398151915254165f80516020612a08833981519152555160018152a180610de4565b634e487b7160e01b61018051526011600452602461018051fd5b68ffffffffffffffffff191668010000000000000001175f80516020612a088339815191525587610c97565b63f92ee8a960e01b6101805152600461018051fd5b90501588610c6a565b303b159150610c62565b879150610c58565b3461058057602036600319011261058057610de4610ed2611e85565b610ca86121bf565b34610580576101805136600319011261058057602060055f805160206129e8833981519152540154604051908152f35b346105805761018051366003190112610580576020610f27612110565b604051908152f35b34610580576101805136600319011261058057602060085f805160206129e8833981519152540154604051908152f35b34610580576040366003190112610580576004356001600160401b0381116105805736602382011215610580578060040135906001600160401b038211610580573660248360061b83010111610580576024356001600160401b03811161058057610fcf83913690600401611f42565b5f805160206129e883398151915254610180519460098201939192909160605b8688101561119d5761018051508760061b84019761103d604460248b01359a0192611019846120f5565b60405160208101918d8352151560f81b604082015260218152610973604182611e9b565b988061018051528760205260ff60406101805120541660038110156111835760010361112e5761106e6001936120f5565b156110dc577f460119a8f69a33ed127de517d5ea464e958ce23ef19e4420a8b92bf780bbc2c9602082859361018051528a82526040610180512061018051506101805150600260ff19825416179055600a8a016110cb8154612102565b9055604051908152a25b0196610fef565b80610180515287602052604061018051208054610180515060ff191690556040519081527f460119a8f69a33ed127de517d5ea464e958ce23ef19e4420a8b92bf780bbc2c960206101805192a26110d5565b60405162461bcd60e51b815260206004820152602760248201527f636f64652073686f756c642062652072657175657374656420666f722076616c60448201526634b230ba34b7b760c91b6064820152608490fd5b634e487b7160e01b61018051526021600452602461018051fd5b610de49350602081519101206125f9565b34610580576020366003190112610580576004356001600160401b038111610580576111de903690600401611f42565b6111e66121bf565b5f805160206129e883398151915254610180516007820191600801905b8154811015611243576101808051839052516020908190208201546001600160a01b03165f9081529084905260409020805460ff19169055600101611203565b50610180518154908255915081611299575b611268611263368587611f72565b612486565b7f144bbc027dc176e94c43b7c1bcff2a8aa58ab434029eec294743cd4ab2e54f516101805161018051a16101805180f35b610180515260206101805120908101905b81811015611255576101805181556001016112aa565b3461058057610180513660031901126105805760206001600160401b0360065f805160206129e883398151915254015416604051908152f35b3461058057610180513660031901126105805761132660085f805160206129e88339815191525401612033565b604051809160208201602083528151809152602060408401920190610180515b818110611354575050500390f35b82516001600160a01b0316845285945060209384019390920191600101611346565b346105805760203660031901126105805760095f805160206129e88339815191525401600435610180515260205260ff6040610180512054166040516003821015611183576020918152f35b34610580576020366003190112610580576004356001600160801b03811690818103610580577f9f5e1796f1a0adf311f86170503308a06a16560a7679b7b6da35f4999200d740916020916114156121bf565b5f805160206129e883398151915254600601805477ffffffffffffffffffffffffffffffff00000000000000001916604092831b77ffffffffffffffffffffffffffffffff00000000000000001617905551908152a16101805180f35b346105805761018051366003190112610580576020600c5f805160206129e8833981519152540154604051908152f35b3461058057610180513660031901126105805760205f805160206129e883398151915254604051908152f35b34610580576020366003190112610580576114e7611e85565b600b5f805160206129e883398151915254019060018060a01b03165f52602052602060405f2054604051908152f35b346105805760203660031901126105805761152f611e85565b60075f805160206129e883398151915254019060018060a01b03165f52602052602060ff60405f2054166040519015158152f35b346105805761018051366003190112610580575f805160206129c8833981519152546040516001600160a01b039091168152602090f35b346105805761018051366003190112610580575f805160206129e883398151915254600301546040516001600160a01b039091168152602090f35b6080366003190112610580576044356001600160401b03811161058057611600903690600401611f15565b90606435906001600160801b03821682036105805761162482602435600435612212565b6001600160a01b0390911693909290843b156105805761165e60405194859384936306f0ee9760e51b855261018051963260048701611ff6565b038161018051865af180156105875761167d575b602082604051908152f35b6101805161168a91611e9b565b610180516105805781611672565b34610580576020366003190112610580576004356001600160401b0381168091036105805760207f01326573cfc0bc40a2550923254394ebd7529e3e3301840dfa33cf786aead0c7916116e96121bf565b5f805160206129e883398151915254600601805467ffffffffffffffff191682179055604051908152a16101805180f35b346105805761018051366003190112610580575f805160206129e883398151915254600201546040516001600160a01b039091168152602090f35b346105805761018051366003190112610580576117706121bf565b5f805160206129c883398151915280546001600160a01b0319811690915561018051906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a36101805180f35b3461058057610180513660031901126105805760206117e4612086565b6001600160801b0360405191168152f35b346105805761018051366003190112610580576118106121bf565b5f80516020612a088339815191525460ff8160401c1680156119f7575b610e865768ffffffffffffffffff191668010000000000000002175f80516020612a08833981519152555f805160206129e8833981519152546001810154600282015460038301546001600160a01b039081169391811692169061189390600801612033565b9060409182516118a38482611e9b565b6017815260208101907f726f757465722e73746f726167652e526f75746572563200000000000000000082526118d76121bf565b5190205f198101908111610e405783519060208201908152602082526118fd8583611e9b565b60ff19915190201694855f805160206129e8833981519152557f5aa0c6c9fb33211212ffe5bef7a4b5d511b82a611e6677052d984e2bcedeaccc6101805161018051a15f194301438111610e40574086556001860180546001600160a01b03199081166001600160a01b03958616179091556002870180548216968516969096179095556003909501805490941694909116939093179091557fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d291602091906119c590612486565b60ff60401b195f80516020612a0883398151915254165f80516020612a08833981519152555160028152a16101805180f35b5060026001600160401b038216101561182d565b60a0366003190112611b1d57611a1f611e85565b602435604435916064356001600160401b038111611b1d57611a45903690600401611f15565b909160843591906001600160801b0383168303611b1d57611a67838787612212565b959060018060a01b0316966040519060208201928352604082015260408152611a91606082611e9b565b519020863b15611b1d57604051635b1b84f760e01b81526001600160a01b03909216600483015260248201525f81604481838a5af18015611b1257611afd575b50843b156105805761165e60405194859384936306f0ee9760e51b855261018051963260048701611ff6565b5f611b0791611e9b565b5f6101805285611ad1565b6040513d5f823e3d90fd5b5f80fd5b34611b1d576020366003190112611b1d576004356001600160401b038111611b1d5736602382011215611b1d57611b62903690602481600401359101611ed0565b611b6a6121bf565b602081519101205f198101908111611bd357604051906020820190815260208252611b96604083611e9b565b9051902060ff19165f805160206129e8833981519152557f5aa0c6c9fb33211212ffe5bef7a4b5d511b82a611e6677052d984e2bcedeaccc5f80a1005b634e487b7160e01b5f52601160045260245ffd5b34611b1d575f366003190112611b1d575f805160206129e883398151915254600101546040516001600160a01b039091168152602090f35b34611b1d576020366003190112611b1d57611c38611e85565b611c406121bf565b5f805160206129e88339815191525460010180546001600160a01b0319166001600160a01b03909216919091179055005b34611b1d575f366003190112611b1d57602060045f805160206129e8833981519152540154604051908152f35b34611b1d575f366003190112611b1d5760205f805160206129e88339815191525454604051908152f35b34611b1d576040366003190112611b1d576024356004358115801590611e1a575b15611dd55760095f805160206129e8833981519152540190805f528160205260ff60405f2054166003811015611dc157611d63577f65672eaf4ff8b823ea29ae013fef437d1fa9ed431125263a7a1f0ac49eada39692604092825f52602052825f20600160ff1982541617905582519182526020820152a1005b60405162461bcd60e51b815260206004820152603060248201527f636f64652077697468207375636820696420616c72656164792072657175657360448201526f1d1959081bdc881d985b1a59185d195960821b6064820152608490fd5b634e487b7160e01b5f52602160045260245ffd5b60405162461bcd60e51b815260206004820152601c60248201527f626c6f6254784861736820636f756c646e277420626520666f756e64000000006044820152606490fd5b505f491515611ce9565b34611b1d575f366003190112611b1d5760206117e46001600160801b0360065f805160206129e883398151915254015460401c1690565b34611b1d575f366003190112611b1d57602090600a5f805160206129e88339815191525401548152f35b600435906001600160a01b0382168203611b1d57565b90601f801991011681019081106001600160401b03821117611ebc57604052565b634e487b7160e01b5f52604160045260245ffd5b9291926001600160401b038211611ebc5760405191611ef9601f8201601f191660200184611e9b565b829481845281830111611b1d578281602093845f960137010152565b9181601f84011215611b1d578235916001600160401b038311611b1d5760208381860195010111611b1d57565b9181601f84011215611b1d578235916001600160401b038311611b1d576020808501948460051b010111611b1d57565b9092916001600160401b038411611ebc578360051b916020604051611f9982860182611e9b565b8096815201928101918211611b1d57915b818310611fb657505050565b82356001600160a01b0381168103611b1d57815260209283019201611faa565b908060209392818452848401375f828201840152601f01601f1916010190565b939594906120266001600160801b0393606095859360018060a01b03168852608060208901526080880191611fd6565b9616604085015216910152565b90604051918281549182825260208201905f5260205f20925f5b81811061206457505061206292500383611e9b565b565b84546001600160a01b031683526001948501948794506020909301920161204d565b5f805160206129e883398151915254600601546001600160401b038116906001600160801b039060401c811616026001600160801b038116908103611bd35790565b602080612062928195946040519682889351918291018585015e8201908382015203018085520183611e9b565b358015158103611b1d5790565b5f198114611bd35760010190565b5f805160206129e8833981519152546005600882015491015490818102918183041490151715611bd35761270f8101809111611bd357612710900490565b6001600160a01b031680156121ac575f805160206129c883398151915280546001600160a01b0319811683179091556001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3565b631e4fbdf760e01b5f525f60045260245ffd5b5f805160206129c8833981519152546001600160a01b031633036121df57565b63118cdaa760e01b5f523360045260245ffd5b906001600160801b03809116911601906001600160801b038211611bd357565b9291925f805160206129e88339815191525491815f526009830160205260ff60405f2054166003811015611dc15760020361242a5761224f612086565b600a6001600160801b03821602956001600160801b038716968703611bd35761227b87612280936121f2565b6121f2565b60038401546040516323b872dd60e01b81523260048201523060248201526001600160801b03929092166044830152602090829060649082905f906001600160a01b03165af1908115611b12575f9161240b575b50156123c6576e5af43d82803e903d91602b57fd5bf3600284015491604051602081019185835260408201526040815261230f606082611e9b565b51902091763d602d80600a3d3981f3363d3d373d3d3d363d7300000062ffffff8260881c16175f526effffffffffffffffffffffffffffff199060781b1617602052603760095ff5916001600160a01b0383169081156123b7577f8008ec1d8798725ebfa0f2d128d52e8e717dcba6e0f786557eeee70614b02bf191600c602092825f52600b810184528560405f2055016123aa8154612102565b9055604051908152a29190565b63b06ebf3d60e01b5f5260045ffd5b60405162461bcd60e51b815260206004820152601860248201527f6661696c656420746f20726574726965766520575661726100000000000000006044820152606490fd5b612424915060203d6020116109d2576109c58183611e9b565b5f6122d4565b60405162461bcd60e51b815260206004820152602e60248201527f636f6465206d7573742062652076616c696461746564206265666f726520707260448201526d37b3b930b69031b932b0ba34b7b760911b6064820152608490fd5b5f805160206129e8833981519152549060088201908154612576579091600701905f5b81518110156124e857600581901b82016020908101516001600160a01b03165f9081529084905260409020805460ff19166001908117909155016124a9565b5080519291506001600160401b038311611ebc57680100000000000000008311611ebc578154838355808410612550575b50602001905f5260205f205f5b8381106125335750505050565b82516001600160a01b031681830155602090920191600101612526565b825f528360205f2091820191015b81811061256b5750612519565b5f815560010161255e565b60405162461bcd60e51b815260206004820152602360248201527f70726576696f75732076616c696461746f727320776572656e27742072656d6f6044820152621d995960ea1b6064820152608490fd5b903590601e1981360301821215611b1d57018035906001600160401b038211611b1d57602001918136038313611b1d57565b905f805160206129e88339815191525490612612612110565b9260405190602082019081526020825261262d604083611e9b565b612669603660405180936020820195601960f81b87523060601b60228401525180918484015e81015f838201520301601f198101835282611e9b565b5190205f9260070191835b86851015612772576126aa6126a161269b6126948860051b8601866125c7565b3691611ed0565b856128ab565b909291926128e5565b6001600160a01b03165f9081526020859052604090205460ff1615612737576126d290612102565b938585146126e35760010193612674565b505050509091505b106126f257565b60405162461bcd60e51b815260206004820152601b60248201527f6e6f7420656e6f7567682076616c6964207369676e61747572657300000000006044820152606490fd5b60405162461bcd60e51b8152602060048201526013602482015272696e636f7272656374207369676e617475726560681b6044820152606490fd5b949550505050506126eb565b903590601e1981360301821215611b1d57018035906001600160401b038211611b1d57602001918160051b36038313611b1d57565b90816020910312611b1d57518015158103611b1d5790565b60ff5f80516020612a088339815191525460401c16156127e757565b631afcd79f60e31b5f5260045ffd5b905f194301438111611bd357805b61280f575b505f9150565b804083810361282057506001925050565b15612834578015611bd3575f190180612804565b612809565b356001600160a01b0381168103611b1d5790565b356001600160801b0381168103611b1d5790565b903590601e1981360301821215611b1d57018035906001600160401b038211611b1d57602001916060820236038313611b1d57565b356001600160e01b031981168103611b1d5790565b81519190604183036128db576128d49250602082015190606060408401519301515f1a90612945565b9192909190565b50505f9160029190565b6004811015611dc157806128f7575050565b6001810361290e5763f645eedf60e01b5f5260045ffd5b60028103612929575063fce698f760e01b5f5260045260245ffd5b6003146129335750565b6335e2f38360e21b5f5260045260245ffd5b91907f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a084116129bc579160209360809260ff5f9560405194855216868401526040830152606082015282805260015afa15611b12575f516001600160a01b038116156129b257905f905f90565b505f906001905f90565b5050505f916003919056fe9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c1993005c09ca1b9b8127a4fd9f3c384aac59b661441e820e17733753ff5f2e86e1e000f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a2646970667358221220d56e389db8d3491feccb6cba1bcf0a15e3ddc6fbefb4c034cc36df95b2f2238264736f6c634300081a0033","sourceMap":"781:17497:82:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;781:17497:82;;;;;;-1:-1:-1;;;;;781:17497:82;;;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;781:17497:82;;;;;;;;;;;:::i;:::-;7368:53:53;516:66:52;7368:53:53;1292:93:52;;7628:52:53;;1503:4:52;516:66;7628:52:53;781:17497:82;;9664:13;;781:17497;;9713:3;9679:32;;;;;;;781:17497;;;;;;;;;;;;-1:-1:-1;;781:17497:82;;;;;;;-1:-1:-1;;;;;;;;;;;781:17497:82;12083:30;781:17497;;;;;;12117:34;781:17497;12083:68;781:17497;;12215:49;781:17497;;;;12234:29;781:17497;12215:49;:::i;:::-;781:17497;;;;;;;;1072:66;;;781:17497;;12559:13;;781:17497;;;;12578:27;;;;781:17497;12614:3;12578:27;781:17497;;;;12578:27;:::i;:::-;12574:38;;;;;;;;12676:27;781:17497;;;;12676:27;:::i;:::-;;;;781:17497;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;781:17497:82;13686:23;781:17497;;;;;13686:23;:::i;:::-;-1:-1:-1;;;;;781:17497:82;-1:-1:-1;781:17497:82;;;13670:15;;;781:17497;;;;;;13670:45;781:17497;;;-1:-1:-1;;;;;781:17497:82;13823:18;781:17497;;;;;13823:18;;781:17497;;;13878:23;781:17497;;;;;13878:23;:::i;:::-;13903:30;781:17497;;;;;;13903:30;;:::i;:::-;781:17497;;-1:-1:-1;;;13852:82:82;;-1:-1:-1;;;;;781:17497:82;;;;13852:82;;781:17497;;;;;;;;;;;;;;;;13852:82;;;;;;;;12614:3;-1:-1:-1;781:17497:82;;;;;;;-1:-1:-1;;;;;781:17497:82;13975:23;;781:17497;13975:23;:::i;:::-;781:17497;;;;;;14010:29;;;;781:17497;;;;;14074:27;;781:17497;14110:3;14074:27;781:17497;;;;;;14074:27;:::i;:::-;14070:38;;;;;;;14162:27;781:17497;;;;;;14162:27;:::i;:::-;;;;781:17497;;;;;14313:22;781:17497;;;;;;;14313:22;;:::i;:::-;781:17497;14337:16;781:17497;;;;;;;14337:16;;:::i;:::-;781:17497;;14274:80;781:17497;14274:80;;781:17497;;;;;;;;;;-1:-1:-1;;;;;781:17497:82;;;;;;;;;-1:-1:-1;;;;;781:17497:82;;;;;;;;;;14274:80;;;781:17497;14274:80;;:::i;:::-;781:17497;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14274:80;;781:17497;;;;;;:::i;:::-;14207:161;;14430:22;781:17497;;;;;;;14313:22;14430;:::i;:::-;14454:16;781:17497;;;;;;;14337:16;14454;:::i;:::-;14383:88;;;;;;781:17497;;-1:-1:-1;;;14383:88:82;;781:17497;;;;;;;;14383:88;;781:17497;-1:-1:-1;;;;;781:17497:82;;;;;;;-1:-1:-1;;;;;781:17497:82;;;;;;;14383:88;;781:17497;;;;;;;;14383:88;;;;;;;;14110:3;;1503:4:52;781:17497:82;14055:13;;14383:88;781:17497;;14383:88;;;:::i;:::-;781:17497;;;;14383:88;;;781:17497;;;;;14383:88;781:17497;;;;;;;;;;;;;;;;;;;;;;;;14070:38;;;;;;;;;;;781:17497;;14492:27;;781:17497;14492:27;;781:17497;;14587:3;781:17497;;;;14554:24;;781:17497;;14554:24;;;;:::i;:::-;14550:35;;;;;;;781:17497;;;;14649:24;;781:17497;;14554:24;;;14649;:::i;:::-;781:17497;;;;;;;;;;;;;;;;;;;;;;14708:67;781:17497;16578:27;781:17497;;;;16578:27;;:::i;:::-;16508:291;781:17497;;16623:23;781:17497;;;;16623:23;;;;:::i;:::-;16664:21;781:17497;;;;;;;16664:21;;:::i;:::-;781:17497;16752:33;15910:85;781:17497;;;16752:33;;:::i;:::-;781:17497;;;;16508:291;;;;781:17497;16508:291;;781:17497;;;;;-1:-1:-1;;;;;781:17497:82;;;;;;;;;;;;;;;;-1:-1:-1;;;;;781:17497:82;;;;;;;;;;;;;16703:28;781:17497;;;;;;;;;;;;;16508:291;;;;;;;;;;:::i;:::-;781:17497;16485:324;;14708:67;;;:::i;:::-;14691:84;;781:17497;;;;16703:28;781:17497;;;14915:27;781:17497;;;;16578:27;14915;:::i;:::-;14944:23;781:17497;;;;16623:23;;;14944;:::i;:::-;781:17497;;14969:21;781:17497;;;;16664:21;14969;:::i;:::-;14850:158;;;;;;;781:17497;;-1:-1:-1;;;14850:158:82;;781:17497;;;;;;14850:158;;781:17497;-1:-1:-1;;;;;781:17497:82;;;;;;;;;;;;-1:-1:-1;;;;;781:17497:82;;;;;;;;:::i;:::-;;;;;;;;;;;14850:158;;781:17497;;;14850:158;;;;;;;;;;14790:556;;1503:4:52;14790:556:82;;781:17497;14535:13;;14850:158;781:17497;;14850:158;;;:::i;:::-;781:17497;;;;14850:158;;;14790:556;781:17497;15090:27;781:17497;;;;16578:27;15090;:::i;:::-;781:17497;15139:23;781:17497;;;;16623:23;;;15139;:::i;:::-;781:17497;;15184:21;781:17497;;;;16664:21;15184;:::i;:::-;781:17497;15280:33;15910:85;781:17497;;;16752:33;15280;:::i;:::-;15047:284;;;;;;;781:17497;;-1:-1:-1;;;15047:284:82;;-1:-1:-1;;;;;781:17497:82;;;;15047:284;;781:17497;;;;;;;;-1:-1:-1;;;;;781:17497:82;;;16259:92;781:17497;;;;:::i;:::-;;;;;;;;16703:28;781:17497;;;;;;;;;;;;;;;;;15047:284;;781:17497;;;15047:284;;;;;;;;;;14790:556;;1503:4:52;14790:556:82;;;15047:284;781:17497;;15047:284;;;:::i;:::-;781:17497;;;;15047:284;;;14550:35;;;;;;;;;;15366:53;;;;;;781:17497;;;;;15366:53;;781:17497;;;;;;15390:28;781:17497;;15366:53;;781:17497;;;;;;;;15366:53;;;;;;;;;;14530:826;781:17497;12816:47;781:17497;15471:23;781:17497;;;;;15471:23;:::i;:::-;15550:30;781:17497;;;;;;13903:30;15550;:::i;:::-;15594:27;;781:17497;;15594:27;;781:17497;15594:27;15635:25;;781:17497;;15635:25;;781:17497;15635:25;781:17497;;;16259:92;781:17497;16259:92;;781:17497;-1:-1:-1;;;;;781:17497:82;;;;;;;;;;;;;15390:28;781:17497;;;;;-1:-1:-1;;;;;781:17497:82;;;;;;;;;;;;;;;;;;16259:92;;;;;;:::i;:::-;781:17497;16249:103;;12816:47;;:::i;:::-;12614:3;1503:4:52;12614:3:82;;781:17497;12614:3;;12559:13;;;;;;;15366:53;781:17497;;15366:53;;;:::i;:::-;781:17497;;;;15366:53;;;13852:82;;;781:17497;13852:82;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;781:17497;;;-1:-1:-1;;;781:17497:82;;;;;;;;;;;;;;;;;-1:-1:-1;;;781:17497:82;;;;;;;12574:38;;;;9913:57;12574:38;;12889:41;781:17497;;;;;;;;;12889:41;781:17497;;;;;13112:28;781:17497;;15910:85;781:17497;;15910:85;;781:17497;;;;;;;;;;;12117:34;781:17497;;;;;;;12234:29;781:17497;;;;;;;;;;15910:85;;;;;;:::i;9913:57::-;9713:3;1503:4:52;9713:3:82;;781:17497;9713:3;;9664:13;;;;;;781:17497;;;-1:-1:-1;;;781:17497:82;;;;;;;;;;;;;;;;;-1:-1:-1;;;781:17497:82;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9679:32;10046:10;9679:32;;;781:17497;;;;;10011:33;10046:10;:::i;:::-;781:17497;;516:66:52;7628:52:53;781:17497:82;;;;1292:93:52;1344:30;;;781:17497:82;;1344:30:52;781:17497:82;;;1344:30:52;781:17497:82;;;;;;-1:-1:-1;;781:17497:82;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;781:17497:82;;;;;;;;;-1:-1:-1;;;;;781:17497:82;;;;;;;;;-1:-1:-1;;;;;781:17497:82;;;;;;;;-1:-1:-1;;;;;781:17497:82;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;-1:-1:-1;;;;;;;;;;;781:17497:82;;;;;;4301:16:25;781:17497:82;-1:-1:-1;;;;;781:17497:82;;4726:16:25;;:34;;;;781:17497:82;4805:1:25;4790:16;:50;;;;781:17497:82;4855:13:25;:30;;;;781:17497:82;4851:91:25;;;-1:-1:-1;;781:17497:82;;4805:1:25;781:17497:82;-1:-1:-1;;;;;;;;;;;781:17497:82;6961:1:25;;781:17497:82;4979:67:25;;781:17497:82;6893:76:25;;;:::i;:::-;;;:::i;:::-;6961:1;:::i;:::-;781:17497:82;;;;;;;;:::i;:::-;;;;;;;;;;;2303:62:24;;:::i;:::-;781:17497:82;2944:27;;-1:-1:-1;;781:17497:82;;;;;;;;;2925:52;781:17497;2925:52;;781:17497;;;;2925:52;;;;;;:::i;:::-;781:17497;;;;2915:63;;:89;1072:66;;-1:-1:-1;;;;;;;;;;;1072:66:82;3084:20;781:17497;;;;3084:20;781:17497;;1644:12;781:17497;1644:12;;781:17497;;;;1634:27;;1072:66;;4805:1:25;1671:13:82;;781:17497;;-1:-1:-1;;;;;;781:17497:82;;;-1:-1:-1;;;;;781:17497:82;;;;;;;1704:18;;;781:17497;;;;;;;;;;;;;;1747:18;;;781:17497;;;;;;;;;;;;;1826:4;1790:33;;;1072:66;1868:17;;;;;781:17497;;;-1:-1:-1;;;;;;781:17497:82;;;;;;1962:15;;;:::i;:::-;5066:101:25;;781:17497:82;;;;;5066:101:25;781:17497:82;5142:14:25;781:17497:82;-1:-1:-1;;;781:17497:82;-1:-1:-1;;;;;;;;;;;781:17497:82;;-1:-1:-1;;;;;;;;;;;781:17497:82;;4805:1:25;781:17497:82;;5142:14:25;5066:101;;;781:17497:82;;;;;;;;;;;;;;4979:67:25;-1:-1:-1;;781:17497:82;;;-1:-1:-1;;;;;;;;;;;781:17497:82;4979:67:25;;;4851:91;6498:23;;;781:17497:82;;4908:23:25;781:17497:82;;;4908:23:25;4855:30;4872:13;;;4855:30;;;4790:50;4818:4;4810:25;:30;;-1:-1:-1;4790:50:25;;4726:34;;;-1:-1:-1;4726:34:25;;781:17497:82;;;;;;-1:-1:-1;;781:17497:82;;;;2357:1:24;781:17497:82;;:::i;:::-;2303:62:24;;:::i;781:17497:82:-;;;;;;;-1:-1:-1;;781:17497:82;;;;;4918:33;-1:-1:-1;;;;;;;;;;;781:17497:82;4918:33;781:17497;;;;;;;;;;;;;;-1:-1:-1;;781:17497:82;;;;;;;:::i;:::-;;;;;;;;;;;;;;-1:-1:-1;;781:17497:82;;;;;5296:21;-1:-1:-1;;;;;;;;;;;781:17497:82;5296:21;781:17497;;;;;;;;;;;;;-1:-1:-1;;781:17497:82;;;;;;-1:-1:-1;;;;;781:17497:82;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;781:17497:82;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;781:17497:82;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;;;;;;781:17497:82;;;;8928:12;;;;781:17497;;;;;8601:3;8568:31;;;;;;-1:-1:-1;;781:17497:82;;;;;;;8802:55;16985:20;781:17497;;;;16985:20;;;;;;:::i;:::-;781:17497;;;16949:57;;781:17497;;;;;;;;;;;;;16949:57;;;;;;:::i;8802:55::-;781:17497;;;;;;;;;;;;;;;;;;;;;;8928:53;781:17497;;9044:20;781:17497;9044:20;;:::i;:::-;;;;9196:30;781:17497;;;;;;;;;;;;;;-1:-1:-1;;;;;781:17497:82;9107:19;781:17497;;;;;;;;9144:26;;;:28;781:17497;;9144:28;:::i;:::-;1072:66;;781:17497;;;;;9196:30;9040:322;781:17497;8553:13;;;9040:322;781:17497;;;;;;;;;;;;;-1:-1:-1;;781:17497:82;;;;;;;;;;;9316:31;781:17497;;;9316:31;;9040:322;;781:17497;;;-1:-1:-1;;;781:17497:82;;;;;;;;;;;;;;;;;-1:-1:-1;;;781:17497:82;;;;;;;;;;;;;;;;;;;;;8568:31;9436:10;8568:31;;781:17497;;;;;9402:32;9436:10;:::i;781:17497::-;;;;;;-1:-1:-1;;781:17497:82;;;;;;-1:-1:-1;;;;;781:17497:82;;;;;;;;;;;:::i;:::-;2303:62:24;;:::i;:::-;-1:-1:-1;;;;;;;;;;;781:17497:82;;;17516:17;;;;17402:21;;;17432:3;781:17497;;17398:32;;;;;-1:-1:-1;;;781:17497:82;;;;;;;;;;;;-1:-1:-1;;;;;781:17497:82;-1:-1:-1;781:17497:82;;;;;;;;;;;;-1:-1:-1;;781:17497:82;;;;;17383:13;;17398:32;-1:-1:-1;781:17497:82;;;;;;;;-1:-1:-1;781:17497:82;;;17378:177;5857:38;781:17497;;;;;:::i;:::-;5857:38;:::i;:::-;5911:22;781:17497;;;;5911:22;781:17497;;;;;-1:-1:-1;;781:17497:82;;-1:-1:-1;;781:17497:82;;;;;;;;;;;;-1:-1:-1;;781:17497:82;;;;;;;;;;;;;-1:-1:-1;;781:17497:82;;;;;-1:-1:-1;;;;;6110:17:82;-1:-1:-1;;;;;;;;;;;781:17497:82;6110:17;781:17497;;;;;;;;;;;;;;;-1:-1:-1;;781:17497:82;;;;;5640:21;-1:-1:-1;;;;;;;;;;;781:17497:82;5640:21;781:17497;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;781:17497:82;;;;;-1:-1:-1;781:17497:82;;;;;;;;;;;;;;;;;;;-1:-1:-1;;781:17497:82;;;;4382:12;-1:-1:-1;;;;;;;;;;;781:17497:82;4382:12;781:17497;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;781:17497:82;;;;;;-1:-1:-1;;;;;781:17497:82;;;;;;;;6689:38;2303:62:24;781:17497:82;2303:62:24;;;:::i;:::-;-1:-1:-1;;;;;;;;;;;781:17497:82;6634:21;;781:17497;;-1:-1:-1;;781:17497:82;;;;;;;;;;;;;;6689:38;781:17497;;;;;;;;;;;-1:-1:-1;;781:17497:82;;;;;4535:20;-1:-1:-1;;;;;;;;;;;781:17497:82;4535:20;781:17497;;;;;;;;;;;;;;-1:-1:-1;;781:17497:82;;;;;-1:-1:-1;;;;;;;;;;;781:17497:82;;;;;;;;;;;;;-1:-1:-1;;781:17497:82;;;;;;:::i;:::-;4703:15;-1:-1:-1;;;;;;;;;;;781:17497:82;4703:15;:24;781:17497;;;;;;-1:-1:-1;781:17497:82;;;;;-1:-1:-1;781:17497:82;;;;;;;;;;;;;;-1:-1:-1;;781:17497:82;;;;;;:::i;:::-;5473:17;-1:-1:-1;;;;;;;;;;;781:17497:82;5473:17;:28;781:17497;;;;;;-1:-1:-1;781:17497:82;;;;;;-1:-1:-1;781:17497:82;;;;;;;;;;;;;;;;;;-1:-1:-1;;781:17497:82;;;;-1:-1:-1;;;;;;;;;;;781:17497:82;;;-1:-1:-1;;;;;781:17497:82;;;;;;;;;;;;;;;-1:-1:-1;;781:17497:82;;;;-1:-1:-1;;;;;;;;;;;781:17497:82;3567:18;;781:17497;;;-1:-1:-1;;;;;781:17497:82;;;;;;;;;;;-1:-1:-1;;781:17497:82;;;;;;-1:-1:-1;;;;;781:17497:82;;;;;;;;;;;:::i;:::-;-1:-1:-1;781:17497:82;;;-1:-1:-1;;;;;781:17497:82;;;;;;7561:50;781:17497;;;;;7561:50;:::i;:::-;-1:-1:-1;;;;;781:17497:82;;;;;;;7622:75;;;;;;781:17497;;;;;;;;;;7622:75;;781:17497;;7651:9;;781:17497;7622:75;;;:::i;:::-;;781:17497;;;7622:75;;;;;;;;;781:17497;;;;;;;;;7622:75;781:17497;;7622:75;;;:::i;:::-;781:17497;;;;7622:75;;;781:17497;;;;;;-1:-1:-1;;781:17497:82;;;;;;-1:-1:-1;;;;;781:17497:82;;;;;;;;6307:30;2303:62:24;;;:::i;:::-;-1:-1:-1;;;;;;;;;;;781:17497:82;6260:17;;781:17497;;-1:-1:-1;;781:17497:82;;;;;;;;;;6307:30;781:17497;;;;;;;;;;;-1:-1:-1;;781:17497:82;;;;-1:-1:-1;;;;;;;;;;;781:17497:82;3716:18;;781:17497;;;-1:-1:-1;;;;;781:17497:82;;;;;;;;;;;;;;;-1:-1:-1;;781:17497:82;;;;2303:62:24;;:::i;:::-;-1:-1:-1;;;;;;;;;;;781:17497:82;;-1:-1:-1;;;;;;781:17497:82;;;;;;;;-1:-1:-1;;;;;781:17497:82;3975:40:24;781:17497:82;;3975:40:24;781:17497:82;;;;;;;;;;;-1:-1:-1;;781:17497:82;;;;;;;:::i;:::-;-1:-1:-1;;;;;781:17497:82;;;;;;;;;;;;;;-1:-1:-1;;781:17497:82;;;;2303:62:24;;:::i;:::-;-1:-1:-1;;;;;;;;;;;781:17497:82;;;;;;6431:44:25;;;;781:17497:82;6427:105:25;;-1:-1:-1;;781:17497:82;;;-1:-1:-1;;;;;;;;;;;781:17497:82;-1:-1:-1;;;;;;;;;;;781:17497:82;;2129:16;;781:17497;2046:1;2178:21;;781:17497;2232:21;;;781:17497;-1:-1:-1;;;;;781:17497:82;;;;;;;;;;;;2298:24;;781:17497;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;2303:62:24;;:::i;:::-;781:17497:82;2944:27;;-1:-1:-1;;781:17497:82;;;;;;;;;2925:52;781:17497;2925:52;;781:17497;;;;2925:52;;;;;;:::i;:::-;781:17497;;;;2915:63;;:89;1072:66;;-1:-1:-1;;;;;;;;;;;1072:66:82;3084:20;781:17497;;;;3084:20;781:17497;;2469:12;781:17497;2469:12;781:17497;;;;2459:27;1072:66;;6593:4:25;2496:13:82;;781:17497;;-1:-1:-1;;;;;;781:17497:82;;;-1:-1:-1;;;;;781:17497:82;;;;;;;2046:1;2529:18;;781:17497;;;;;;;;;;;;;;2232:21;2572:18;;;781:17497;;;;;;;;;;;;;;;;6656:20:25;;781:17497:82;;-1:-1:-1;2630:15:82;;;:::i;:::-;-1:-1:-1;;;781:17497:82;-1:-1:-1;;;;;;;;;;;781:17497:82;;-1:-1:-1;;;;;;;;;;;781:17497:82;;2046:1;781:17497;;6656:20:25;781:17497:82;;;;6431:44:25;781:17497:82;2046:1;-1:-1:-1;;;;;781:17497:82;;6450:25:25;;6431:44;;781:17497:82;;;-1:-1:-1;;781:17497:82;;;;;;:::i;:::-;;;;;;;;-1:-1:-1;;;;;781:17497:82;;;;;;;;;;;:::i;:::-;;;;;;-1:-1:-1;;;;;;781:17497:82;;;;;;8008:50;;;;;:::i;:::-;781:17497;;;;;;;;;;;8183:30;781:17497;8183:30;;781:17497;;;;;;;;8183:30;;;781:17497;8183:30;;:::i;:::-;781:17497;8173:41;;8121:94;;;;;781:17497;;-1:-1:-1;;;8121:94:82;;-1:-1:-1;;;;;781:17497:82;;;;8121:94;;781:17497;;;;;-1:-1:-1;781:17497:82;;;-1:-1:-1;8121:94:82;;;;;;;;;781:17497;8226:73;;;;;;;781:17497;;;;;;;;;;8226:73;;781:17497;;8253:9;;781:17497;8226:73;;;:::i;8121:94::-;781:17497;8121:94;;;:::i;:::-;781:17497;;;8121:94;;;;781:17497;;;;;;;;;8121:94;781:17497;;;;;;;;;-1:-1:-1;;781:17497:82;;;;;;-1:-1:-1;;;;;781:17497:82;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2303:62:24;;:::i;:::-;781:17497:82;;;;;2944:27;781:17497;;;;;;;;;;;2925:52;781:17497;2925:52;;781:17497;;;;2925:52;;;781:17497;2925:52;;:::i;:::-;781:17497;;2915:63;;-1:-1:-1;;2915:89:82;-1:-1:-1;;;;;;;;;;;1072:66:82;3084:20;781:17497;;3084:20;781:17497;;;;;;;;;;;;;;;;;;;-1:-1:-1;;781:17497:82;;;;-1:-1:-1;;;;;;;;;;;781:17497:82;;3860:13;781:17497;;;-1:-1:-1;;;;;781:17497:82;;;;;;;;;;;;;;-1:-1:-1;;781:17497:82;;;;;;:::i;:::-;2303:62:24;;:::i;:::-;-1:-1:-1;;;;;;;;;;;781:17497:82;3999:13;;781:17497;;-1:-1:-1;;;;;;781:17497:82;-1:-1:-1;;;;;781:17497:82;;;;;;;;;;;;;;;;-1:-1:-1;;781:17497:82;;;;;;-1:-1:-1;;;;;;;;;;;781:17497:82;3406:30;781:17497;;;;;;;;;;;;;-1:-1:-1;;781:17497:82;;;;;-1:-1:-1;;;;;;;;;;;781:17497:82;;;;;;;;;;;;;;-1:-1:-1;;781:17497:82;;;;;;;;6983:15;;;;;:35;;781:17497;;;;7119:12;-1:-1:-1;;;;;;;;;;;781:17497:82;7119:12;781:17497;;;;;;;;;;;;;;;;;;;;;7292:43;781:17497;;;;;;;;;;;7247:29;781:17497;;;;;;;;;;;;;;;;;7292:43;781:17497;;;;-1:-1:-1;;;781:17497:82;;;;;;;;;;;;;;;;;-1:-1:-1;;;781:17497:82;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;781:17497:82;;;;;;;;;;;;;;;;;;;;6983:35;7002:11;781:17497;7002:11;:16;;6983:35;;781:17497;;;;;;-1:-1:-1;;781:17497:82;;;;;;-1:-1:-1;;;;;6471:21:82;-1:-1:-1;;;;;;;;;;;781:17497:82;6471:21;781:17497;;;;6350:149;;781:17497;;;;;;-1:-1:-1;;781:17497:82;;;;;;4211:26;-1:-1:-1;;;;;;;;;;;781:17497:82;4211:26;781:17497;;;;;;;;-1:-1:-1;;;;;781:17497:82;;;;;;:::o;:::-;;;14274:80;;781:17497;;;;;;;;-1:-1:-1;;;;;781:17497:82;;;;;;;:::o;:::-;;;;-1:-1:-1;781:17497:82;;;;;-1:-1:-1;781:17497:82;;;;;-1:-1:-1;;;;;781:17497:82;;;;;;;;14274:80;781:17497;;-1:-1:-1;;781:17497:82;;;;;:::i;:::-;;;;;;;;;;;;;;;;;-1:-1:-1;781:17497:82;;;;;;:::o;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;781:17497:82;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;781:17497:82;;;;;;;;;;;;;;;;;:::o;:::-;;;;-1:-1:-1;;;;;781:17497:82;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;-1:-1:-1;;;;;781:17497:82;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;781:17497:82;;;;;;;;-1:-1:-1;;781:17497:82;;;;:::o;:::-;;;;;;-1:-1:-1;;;;;781:17497:82;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;-1:-1:-1;781:17497:82;;-1:-1:-1;781:17497:82;;-1:-1:-1;781:17497:82;;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;-1:-1:-1;;;;;781:17497:82;;;;;;;;;;-1:-1:-1;781:17497:82;;;;;;;;6740:113;-1:-1:-1;;;;;;;;;;;781:17497:82;6110:17;;781:17497;-1:-1:-1;;;;;781:17497:82;;;-1:-1:-1;;;;;781:17497:82;;;;;;;-1:-1:-1;;;;;781:17497:82;;;;;;;6740:113;:::o;781:17497::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::o;:::-;-1:-1:-1;;781:17497:82;;;;;;;:::o;4964:204::-;-1:-1:-1;;;;;;;;;;;781:17497:82;4918:33;5296:21;;;781:17497;4918:33;;781:17497;;;;;;;;;;;;;;;;5148:4;781:17497;;;;;;;5156:5;781:17497;;4964:204;:::o;3405:215:24:-;-1:-1:-1;;;;;781:17497:82;3489:22:24;;3485:91;;-1:-1:-1;;;;;;;;;;;781:17497:82;;-1:-1:-1;;;;;;781:17497:82;;;;;;;-1:-1:-1;;;;;781:17497:82;3975:40:24;-1:-1:-1;;3975:40:24;3405:215::o;3485:91::-;3534:31;;;3509:1;3534:31;3509:1;3534:31;781:17497:82;;3509:1:24;3534:31;2658:162;-1:-1:-1;;;;;;;;;;;781:17497:82;-1:-1:-1;;;;;781:17497:82;966:10:29;2717:23:24;2713:101;;2658:162::o;2713:101::-;2763:40;;;-1:-1:-1;2763:40:24;966:10:29;2763:40:24;781:17497:82;;-1:-1:-1;2763:40:24;781:17497:82;;-1:-1:-1;;;;;781:17497:82;;;;;;;-1:-1:-1;;;;;781:17497:82;;;;:::o;10106:951::-;;;;-1:-1:-1;;;;;;;;;;;781:17497:82;;;-1:-1:-1;781:17497:82;10312:12;;;781:17497;;;;-1:-1:-1;781:17497:82;;;;;;;;;10336:19;10312:43;781:17497;;10440:9;;:::i;:::-;781:17497;-1:-1:-1;;;;;781:17497:82;;;;-1:-1:-1;;;;;781:17497:82;;;;;;;10536:32;;:41;:32;;:::i;:::-;:41;:::i;:::-;781:17497;17149:18;;781:17497;;;-1:-1:-1;;;17142:73:82;;17182:9;17142:73;;;781:17497;17201:4;781:17497;;;;-1:-1:-1;;;;;781:17497:82;;;;;;;;;;;;17142:73;;781:17497;;-1:-1:-1;;;;;;;781:17497:82;17142:73;;;;;;;-1:-1:-1;17142:73:82;;;10106:951;781:17497;;;;3743:569:36;10336:19:82;10819:18;;781:17497;;;;;10849:30;;781:17497;;;;;;;;;10849:30;;;781:17497;10849:30;;:::i;:::-;781:17497;10839:41;;3743:569:36;;;;;;;;-1:-1:-1;3743:569:36;;;;;;;;781:17497:82;3743:569:36;;10312:12:82;-1:-1:-1;3743:569:36;781:17497:82;-1:-1:-1;;;;;781:17497:82;;;4325:22:36;;4321:85;;10973:31:82;10892:24;10935:20;781:17497;10892:24;781:17497;-1:-1:-1;781:17497:82;10892:15;;;781:17497;;;;-1:-1:-1;781:17497:82;1072:66;10935:20;:22;781:17497;;10935:22;:::i;:::-;1072:66;;781:17497;;;;;10973:31;11015:35;10106:951;:::o;4321:85:36:-;4370:25;;;-1:-1:-1;4370:25:36;17142:73:82;-1:-1:-1;4370:25:36;781:17497:82;;;-1:-1:-1;;;781:17497:82;;;17142:73;781:17497;;;;;;;;;;;;;17142:73;;781:17497;17142:73;;;;781:17497;17142:73;781:17497;17142:73;;;;;;;:::i;:::-;;;;781:17497;;;-1:-1:-1;;;781:17497:82;;;;;;;;;;;;;;;;;-1:-1:-1;;;781:17497:82;;;;;;;17606:442;-1:-1:-1;;;;;;;;;;;781:17497:82;17740:21;;;;781:17497;;;;;17829:13;;17945:17;;;-1:-1:-1;17873:3:82;781:17497;;17844:27;;;;;781:17497;;;;;;;;;;;-1:-1:-1;;;;;781:17497:82;-1:-1:-1;781:17497:82;;;;;;;;;;;;-1:-1:-1;;781:17497:82;;;;;;;;;17829:13;;17844:27;-1:-1:-1;781:17497:82;;;17844:27;-1:-1:-1;;;;;;781:17497:82;;;;;;;;;;;;;;;;;;;17824:167;781:17497;;;;-1:-1:-1;781:17497:82;;-1:-1:-1;781:17497:82;-1:-1:-1;781:17497:82;;;;;;17606:442;;;;:::o;781:17497::-;;;-1:-1:-1;;;;;781:17497:82;;;;;;;;;;;;;;;;-1:-1:-1;781:17497:82;;;-1:-1:-1;781:17497:82;;;;;;;;;;;;;;;;-1:-1:-1;781:17497:82;;;;;;;;;-1:-1:-1;;;781:17497:82;;;;;;;;;;;;;;;;;-1:-1:-1;;;781:17497:82;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;781:17497:82;;;;;;;;;;;;;;:::o;11063:844::-;;-1:-1:-1;;;;;;;;;;;781:17497:82;11231:21;;;:::i;:::-;781:17497;;;11331:26;;;;781:17497;;;11331:26;;;;781:17497;11331:26;;:::i;:::-;2858:45:56;781:17497:82;;;2858:45:56;;11331:26:82;2858:45:56;;781:17497:82;;;;;;11293:4;781:17497;;;;;;;;;;;;;;;-1:-1:-1;781:17497:82;;;;2858:45:56;;14274:80:82;;2858:45:56;;;;;;:::i;:::-;781:17497:82;2848:56:56;;-1:-1:-1;;11592:17:82;;;-1:-1:-1;11449:3:82;11426:21;;;;;;3915:8:55;3859:27;781:17497:82;;;;;;;;;:::i;:::-;;;;:::i;:::-;3859:27:55;;:::i;:::-;3915:8;;;;;:::i;:::-;-1:-1:-1;;;;;781:17497:82;-1:-1:-1;781:17497:82;;;;;;;;;;;;;;;;11644:17;;;:::i;:::-;:30;;;;11640:82;;781:17497;;11411:13;;;11640:82;11698:5;;;;;;;11406:416;11840:28;781:17497;;11063:844::o;781:17497::-;;;-1:-1:-1;;;781:17497:82;;11331:26;781:17497;;;;;;;;;;;;;;;;;11588:224;781:17497;;-1:-1:-1;;;781:17497:82;;11331:26;781:17497;;;;;;;;;-1:-1:-1;;;781:17497:82;;;;;;;11426:21;;;;;;;;;;781:17497;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;781:17497:82;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;:::o;7084:141:25:-;781:17497:82;-1:-1:-1;;;;;;;;;;;781:17497:82;;;;7150:18:25;7146:73;;7084:141::o;7146:73::-;7191:17;;;-1:-1:-1;7191:17:25;;-1:-1:-1;7191:17:25;13163:338:82;;781:17497;;13260:12;781:17497;13260:12;781:17497;;;;13243:230;13278:5;;;13243:230;-1:-1:-1;781:17497:82;;-1:-1:-1;13163:338:82:o;13285:3::-;13318:12;;13348:11;;;;;-1:-1:-1;13275:1:82;;-1:-1:-1;;13379:11:82:o;13344:119::-;13415:8;13411:52;;781:17497;;;;-1:-1:-1;;781:17497:82;;13248:28;;13411:52;13443:5;;781:17497;;-1:-1:-1;;;;;781:17497:82;;;;;;;:::o;:::-;;-1:-1:-1;;;;;781:17497:82;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;781:17497:82;;;;;;;;;;;;;;;;:::o;:::-;;-1:-1:-1;;;;;;781:17497:82;;;;;;;:::o;2129:766:55:-;781:17497:82;;;2129:766:55;2276:2;2256:22;;2276:2;;2739:25;2539:180;;;;;;;;;;;;;;;-1:-1:-1;2539:180:55;2739:25;;:::i;:::-;2732:32;;;;;:::o;2252:637::-;2795:83;;2811:1;2795:83;2815:35;2795:83;;:::o;7196:532::-;781:17497:82;;;;;;7282:29:55;;;7327:7;;:::o;7278:444::-;781:17497:82;7378:38:55;;781:17497:82;;7439:23:55;;;7291:20;7439:23;781:17497:82;7291:20:55;7439:23;7374:348;7492:35;7483:44;;7492:35;;7550:46;;;;7291:20;7550:46;781:17497:82;;;7291:20:55;7550:46;7479:243;7626:30;7617:39;7613:109;;7479:243;7196:532::o;7613:109::-;7679:32;;;7291:20;7679:32;781:17497:82;;;7291:20:55;7679:32;5140:1530;;;6199:66;6186:79;;6182:164;;781:17497:82;;;;;;-1:-1:-1;781:17497:82;;;;;;;;;;;;;;;;;;;6457:24:55;;;;;;;;;-1:-1:-1;6457:24:55;-1:-1:-1;;;;;781:17497:82;;6495:20:55;6491:113;;6614:49;-1:-1:-1;6614:49:55;-1:-1:-1;5140:1530:55;:::o;6491:113::-;6531:62;-1:-1:-1;6531:62:55;6457:24;6531:62;-1:-1:-1;6531:62:55;:::o;6182:164::-;6281:54;;;6297:1;6281:54;6301:30;6281:54;;:::o","linkReferences":{}},"methodIdentifiers":{"baseFee()":"6ef25c3a","baseWeight()":"d3fd6364","codeState(bytes32)":"c13911e8","commitBlocks((bytes32,bytes32,bytes32,(address,bytes32,uint128,(bytes32,address,uint128)[],(bytes32,address,bytes,uint128,(bytes32,bytes4))[])[])[],bytes[])":"fa97ed6d","commitCodes((bytes32,bool)[],bytes[])":"e97d3eb3","createProgram(bytes32,bytes32,bytes,uint128)":"8074b455","createProgramWithDecoder(address,bytes32,bytes32,bytes,uint128)":"666d124c","genesisBlockHash()":"28e24b3d","getStorageSlot()":"96708226","initialize(address,address,address,address,address[])":"f8453e7c","lastBlockCommitmentHash()":"2dacfb69","mirror()":"444d9172","mirrorProxy()":"78ee5dec","owner()":"8da5cb5b","programCodeId(address)":"9067088e","programsCount()":"96a2ddfa","reinitialize()":"6c2eb350","renounceOwnership()":"715018a6","requestCodeValidation(bytes32,bytes32)":"1c149d8a","setBaseWeight(uint64)":"8028861a","setMirror(address)":"3d43b418","setStorageSlot(string)":"5686cad5","setValuePerWeight(uint128)":"a6bbbe1c","signingThresholdPercentage()":"efd81abc","transferOwnership(address)":"f2fde38b","updateValidators(address[])":"e71731e4","validatedCodesCount()":"007a32e7","validatorExists(address)":"8febbd59","validators()":"ca1e7819","validatorsCount()":"ed612f8c","validatorsThreshold()":"edc87225","valuePerWeight()":"0834fecc","wrappedVara()":"88f50cf0"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"ECDSAInvalidSignature\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"length\",\"type\":\"uint256\"}],\"name\":\"ECDSAInvalidSignatureLength\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"ECDSAInvalidSignatureS\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedDeployment\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"OwnableInvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"OwnableUnauthorizedAccount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ReentrancyGuardReentrantCall\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"baseWeight\",\"type\":\"uint64\"}],\"name\":\"BaseWeightChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"}],\"name\":\"BlockCommitted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"id\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bool\",\"name\":\"valid\",\"type\":\"bool\"}],\"name\":\"CodeGotValidated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"codeId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"blobTxHash\",\"type\":\"bytes32\"}],\"name\":\"CodeValidationRequested\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"actorId\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"codeId\",\"type\":\"bytes32\"}],\"name\":\"ProgramCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"StorageSlotChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"ValidatorsSetChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"valuePerWeight\",\"type\":\"uint128\"}],\"name\":\"ValuePerWeightChanged\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"baseFee\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"baseWeight\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"codeId\",\"type\":\"bytes32\"}],\"name\":\"codeState\",\"outputs\":[{\"internalType\":\"enum IRouter.CodeState\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"prevCommitmentHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"predBlockHash\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"actorId\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"newStateHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint128\",\"name\":\"valueToReceive\",\"type\":\"uint128\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"messageId\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"destination\",\"type\":\"address\"},{\"internalType\":\"uint128\",\"name\":\"value\",\"type\":\"uint128\"}],\"internalType\":\"struct IRouter.ValueClaim[]\",\"name\":\"valueClaims\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"id\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"destination\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"payload\",\"type\":\"bytes\"},{\"internalType\":\"uint128\",\"name\":\"value\",\"type\":\"uint128\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"to\",\"type\":\"bytes32\"},{\"internalType\":\"bytes4\",\"name\":\"code\",\"type\":\"bytes4\"}],\"internalType\":\"struct IRouter.ReplyDetails\",\"name\":\"replyDetails\",\"type\":\"tuple\"}],\"internalType\":\"struct IRouter.OutgoingMessage[]\",\"name\":\"messages\",\"type\":\"tuple[]\"}],\"internalType\":\"struct IRouter.StateTransition[]\",\"name\":\"transitions\",\"type\":\"tuple[]\"}],\"internalType\":\"struct IRouter.BlockCommitment[]\",\"name\":\"blockCommitmentsArray\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes[]\",\"name\":\"signatures\",\"type\":\"bytes[]\"}],\"name\":\"commitBlocks\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"id\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"valid\",\"type\":\"bool\"}],\"internalType\":\"struct IRouter.CodeCommitment[]\",\"name\":\"codeCommitmentsArray\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes[]\",\"name\":\"signatures\",\"type\":\"bytes[]\"}],\"name\":\"commitCodes\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"codeId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"payload\",\"type\":\"bytes\"},{\"internalType\":\"uint128\",\"name\":\"_value\",\"type\":\"uint128\"}],\"name\":\"createProgram\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"decoderImplementation\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"codeId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"payload\",\"type\":\"bytes\"},{\"internalType\":\"uint128\",\"name\":\"_value\",\"type\":\"uint128\"}],\"name\":\"createProgramWithDecoder\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"genesisBlockHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getStorageSlot\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"initialOwner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_mirror\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_mirrorProxy\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_wrappedVara\",\"type\":\"address\"},{\"internalType\":\"address[]\",\"name\":\"_validatorsKeys\",\"type\":\"address[]\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"lastBlockCommitmentHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"mirror\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"mirrorProxy\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"program\",\"type\":\"address\"}],\"name\":\"programCodeId\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"programsCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"reinitialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"codeId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"blobTxHash\",\"type\":\"bytes32\"}],\"name\":\"requestCodeValidation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"_baseWeight\",\"type\":\"uint64\"}],\"name\":\"setBaseWeight\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_mirror\",\"type\":\"address\"}],\"name\":\"setMirror\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"namespace\",\"type\":\"string\"}],\"name\":\"setStorageSlot\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint128\",\"name\":\"_valuePerWeight\",\"type\":\"uint128\"}],\"name\":\"setValuePerWeight\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"signingThresholdPercentage\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"validatorsAddressArray\",\"type\":\"address[]\"}],\"name\":\"updateValidators\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"validatedCodesCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"validator\",\"type\":\"address\"}],\"name\":\"validatorExists\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"validators\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"validatorsCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"validatorsThreshold\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"valuePerWeight\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"wrappedVara\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"errors\":{\"ECDSAInvalidSignature()\":[{\"details\":\"The signature derives the `address(0)`.\"}],\"ECDSAInvalidSignatureLength(uint256)\":[{\"details\":\"The signature has an invalid length.\"}],\"ECDSAInvalidSignatureS(bytes32)\":[{\"details\":\"The signature has an S value that is in the upper half order.\"}],\"FailedDeployment()\":[{\"details\":\"The deployment failed.\"}],\"InsufficientBalance(uint256,uint256)\":[{\"details\":\"The ETH balance of the account is not enough to perform the operation.\"}],\"InvalidInitialization()\":[{\"details\":\"The contract is already initialized.\"}],\"NotInitializing()\":[{\"details\":\"The contract is not initializing.\"}],\"OwnableInvalidOwner(address)\":[{\"details\":\"The owner is not a valid owner account. (eg. `address(0)`)\"}],\"OwnableUnauthorizedAccount(address)\":[{\"details\":\"The caller account is not authorized to perform an operation.\"}],\"ReentrancyGuardReentrantCall()\":[{\"details\":\"Unauthorized reentrant call.\"}]},\"events\":{\"BaseWeightChanged(uint64)\":{\"details\":\"Emitted when the tx's base weight is changed. NOTE: It's event for USERS: it informs about new value of commission for each message sending. NOTE: It's event for NODES: it requires to update commission in programs execution parameters.\"},\"BlockCommitted(bytes32)\":{\"details\":\"Emitted when a new state transitions are applied. NOTE: It's event for USERS: it informs about new block outcome committed.\"},\"CodeGotValidated(bytes32,bool)\":{\"details\":\"Emitted when a code, previously requested to be validated, gets validated. NOTE: It's event for USERS: it informs about validation results of previously requested code.\"},\"CodeValidationRequested(bytes32,bytes32)\":{\"details\":\"Emitted when a new code validation request submitted. NOTE: It's event for NODES: it requires to download and validate code from blob.\"},\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"},\"ProgramCreated(address,bytes32)\":{\"details\":\"Emitted when a new program created. NOTE: It's event for USERS: it informs about new program creation and it's availability on Ethereum. NOTE: It's event for NODES: it requires to create associated gear program in local storage.\"},\"StorageSlotChanged()\":{\"details\":\"Emitted when the storage slot is changed. NOTE: It's event for USERS: it informs about router being wiped and all programs and codes deletion. NOTE: It's event for NODES: it requires to clean the local storage.\"},\"ValidatorsSetChanged()\":{\"details\":\"Emitted when the validators set is changed. NOTE: It's event for USERS: it informs about validators rotation. NOTE: It's event for NODES: it requires to update authorities that sign outcomes.\"},\"ValuePerWeightChanged(uint128)\":{\"details\":\"Emitted when the value per executable weight is changed. NOTE: It's event for USERS: it informs about new conversion rate between weight and it's WVara price. NOTE: It's event for NODES: it requires to update conversion rate in programs execution parameters.\"}},\"kind\":\"dev\",\"methods\":{\"constructor\":{\"custom:oz-upgrades-unsafe-allow\":\"constructor\"},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"programCodeId(address)\":{\"details\":\"Returns bytes32(0) in case of inexistent program.\"},\"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.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/Router.sol\":\"Router\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/openzeppelin-contracts-upgradeable/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts-upgradeable/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin-foundry-upgrades/=lib/openzeppelin-foundry-upgrades/src/\",\":solidity-stringutils/=lib/openzeppelin-foundry-upgrades/lib/solidity-stringutils/\"],\"viaIR\":true},\"sources\":{\"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":{\"keccak256\":\"0xc163fcf9bb10138631a9ba5564df1fa25db9adff73bd9ee868a8ae1858fe093a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9706d43a0124053d9880f6e31a59f31bc0a6a3dc1acd66ce0a16e1111658c5f6\",\"dweb:/ipfs/QmUFmfowzkRwGtDu36cXV9SPTBHJ3n7dG9xQiK5B28jTf2\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609\",\"dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://08e39f23d5b4692f9a40803e53a8156b72b4c1f9902a88cd65ba964db103dab9\",\"dweb:/ipfs/QmPKn6EYDgpga7KtpkA8wV2yJCYGMtc9K4LkJfhKX2RVSV\"]},\"lib/openzeppelin-contracts/contracts/proxy/Clones.sol\":{\"keccak256\":\"0x4cc853b89072428e406c60c6e8d5280b31f9d99d6caf7b041650e649746513a6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://38a1bbdb89a8f5d1820a2dcc34b5086a6e199c7a8965007345975b5db8997a64\",\"dweb:/ipfs/QmcN6yJBkoserTqAMpue55HmMCMf7dGJYUbGi8p366HqZq\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009\",\"dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x88f7b6f070ad1de2bf899da6978ed74b5038eac78c01b7359b92b60c3d965c28\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c436edb6733a036607c6f17cc590e8ee351363a8cb4c564a98d9a66392c89323\",\"dweb:/ipfs/QmcJvJR2K3EtYcKEXVpQ1WqT6TvAbVem5HR1FirAsqEXFR\"]},\"lib/openzeppelin-contracts/contracts/utils/Errors.sol\":{\"keccak256\":\"0xc452b8c0ab5a57e6ca49c4fbe6aead2460c2f8d60d58bc60af68e559b7ca1179\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0980b3b9e8cd9d9a0f2ae848f0f36a85158887e6fd961142a13b11299ae7f30a\",\"dweb:/ipfs/QmUrmDji3NR2V3YezV8xHSS3wjeBKq16FL7cHdBCnwLjKd\"]},\"lib/openzeppelin-contracts/contracts/utils/Panic.sol\":{\"keccak256\":\"0x29074fe5a74bb024c57b3570abf6c74d8bceed3438694d470fd0166a3ecd196a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f4f8435ccbc56e384f4cc9ac9ff491cf30a82f2beac00e33ccc2cf8af3f77cc3\",\"dweb:/ipfs/QmUKJXxTe6nn1qfgnX8xbnboNNAPUuEmJyGqMZCKNiFBgn\"]},\"lib/openzeppelin-contracts/contracts/utils/ReentrancyGuardTransient.sol\":{\"keccak256\":\"0x629828db7f6354641b2bc42f6f6742b07bed39959361f92b781224fd33cfb0c9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a2654b69b5d9b42ad4c981875add283a06db8bd02e01c614d4f0d498860d0c58\",\"dweb:/ipfs/QmWE3oD4Ti4UKrZTiA4cxAwprkFTpBYsLRrc62w5Lg16Q8\"]},\"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0xfd29ed7a01e9ef109cc31542ca0f51ba3e793740570b69172ec3d8bfbb1643b4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://99379e0649be8106d2708a2bde73b5cdaba4505f1001f1586b53788bf971d097\",\"dweb:/ipfs/QmV9cCnvFoVzV2cVDW4Zbs3JQ3ehxBcooQS52taVxR637S\"]},\"lib/openzeppelin-contracts/contracts/utils/Strings.sol\":{\"keccak256\":\"0x686a21b9be2594ccfda3a855270dd8ebc4288b8a9ed84ecd4ef1bca2ea3fc46b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7c0bbc37f4d1aaae086d73f13f41b8043a9ad5b07f30a2fd7b8a74ead99b1ef6\",\"dweb:/ipfs/QmZpFyfCCFpbrkNtfHTn18qV7VvptPdoLN82Qu5XtMCci6\"]},\"lib/openzeppelin-contracts/contracts/utils/cryptography/ECDSA.sol\":{\"keccak256\":\"0xa548dd62e9e17616ae80a1e7ac7b1447ae377efc27fb9f7b4f4fbf5c0b0a1dfb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d27e9ae3e67eb229444cd43d49db5be57c586155fd1d363b3b1f9bb1b7bb0087\",\"dweb:/ipfs/QmT2GFnpXsTWBs8bkeVJtQ4VNX7f3igxwB77JBCr4mDXb3\"]},\"lib/openzeppelin-contracts/contracts/utils/cryptography/MessageHashUtils.sol\":{\"keccak256\":\"0x3f1998a2904792ff2a576827876638b4917573186537f878d30b23277a3b8d38\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a8dfb08ed617c9d874de901e44ac8af7af7b13e7c84000a1da3cdaf6004593e8\",\"dweb:/ipfs/QmPX2hZAvCZJCQNSXcWqhxh3xp6UitwESrw3K2u3aYNqiu\"]},\"lib/openzeppelin-contracts/contracts/utils/math/Math.sol\":{\"keccak256\":\"0x2be34e47fc07baed68c4878618a6e13c13243753c3f656ca1b6e05287c5df4ee\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e0bc7f3ae934c76aae959cf061b9764a6dbb2313c4281944dde278cd418599da\",\"dweb:/ipfs/QmYtYLrwC1nPJd86kVrQFQAGeS3XGmhXjCj25LQGfGkugi\"]},\"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0x8cd59334ed58b8884cd1f775afc9400db702e674e5d6a7a438c655b9de788d7e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://99e62c7de7318f413b6352e3f2704ca23e7725ff144e43c8bd574d12dbf29047\",\"dweb:/ipfs/QmSEXG2rBx1VxU2uFTWdiChjDvA4osEY2mesjmoVeVhHko\"]},\"lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol\":{\"keccak256\":\"0x5c8d4114f077f6803bb89b8b07bfa26dfbf8f2001708e4e7fdf1e8d9ddd42f44\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b66c74efa1f994e3ea467b4165da1575857b29d81bec36e94678fe494ce5c615\",\"dweb:/ipfs/QmeXQFdzSJFmN8UdhxMqQwwUh1U2WEha5NoVLbSg3pCJc5\"]},\"src/IMirror.sol\":{\"keccak256\":\"0x82d8c114d8e994851d5fb8b21ce02fb48907eec690df5f3af4111451a3390f89\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://3c08f1764a6263ea9bc4a8c4afe14cdc2f9486157ceafc9fa6f0a5ca6c58ba37\",\"dweb:/ipfs/QmWNZJmyp6M7JrdLE1cNKC8sGdZ3YdeHvujgyVqnQp7ubC\"]},\"src/IRouter.sol\":{\"keccak256\":\"0x4eea409058588f3e4d88b1687bfe367c6a6407b905e5af2df693327ab443fa7a\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://fc93c4fdb632d11e8cbfea97f2bf10d9e40fedd38649fdc020d65fd52d122421\",\"dweb:/ipfs/QmVsGD6aQ8oZqTAZJNrdQotWynFLGpfWD7zrfDSNumx87s\"]},\"src/IWrappedVara.sol\":{\"keccak256\":\"0xfc2f9955b1d8f74a98a087b490a03b86933c423eb58b840f1e3eb4cd58eac175\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://5942f66657786636ddb832587404810bf65fc757e12ddaa07393a0b3f885840f\",\"dweb:/ipfs/QmTEP15EF9zrA7bCj8cesNd8QyUPHM3XgtKJecCUjsA5Jf\"]},\"src/Router.sol\":{\"keccak256\":\"0x27ed0744c7feb1e69a78ed56fe5902d5b41f2c3b84ff3ed6ea1e0aab6673eaeb\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://3a0eb6b4ce45e9adb4136713f2d706d6bdc6472e191ca6f7bcb1d239a112e16c\",\"dweb:/ipfs/QmNh1qhFQESAb5Jzb2Lk41v2x1zoLLdioqxtMm23ouhko5\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.26+commit.8a97fa7a"},"language":"Solidity","output":{"abi":[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"type":"error","name":"ECDSAInvalidSignature"},{"inputs":[{"internalType":"uint256","name":"length","type":"uint256"}],"type":"error","name":"ECDSAInvalidSignatureLength"},{"inputs":[{"internalType":"bytes32","name":"s","type":"bytes32"}],"type":"error","name":"ECDSAInvalidSignatureS"},{"inputs":[],"type":"error","name":"FailedDeployment"},{"inputs":[{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"type":"error","name":"InsufficientBalance"},{"inputs":[],"type":"error","name":"InvalidInitialization"},{"inputs":[],"type":"error","name":"NotInitializing"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"type":"error","name":"OwnableInvalidOwner"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"type":"error","name":"OwnableUnauthorizedAccount"},{"inputs":[],"type":"error","name":"ReentrancyGuardReentrantCall"},{"inputs":[{"internalType":"uint64","name":"baseWeight","type":"uint64","indexed":false}],"type":"event","name":"BaseWeightChanged","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"blockHash","type":"bytes32","indexed":false}],"type":"event","name":"BlockCommitted","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"id","type":"bytes32","indexed":false},{"internalType":"bool","name":"valid","type":"bool","indexed":true}],"type":"event","name":"CodeGotValidated","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"codeId","type":"bytes32","indexed":false},{"internalType":"bytes32","name":"blobTxHash","type":"bytes32","indexed":false}],"type":"event","name":"CodeValidationRequested","anonymous":false},{"inputs":[{"internalType":"uint64","name":"version","type":"uint64","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":"OwnershipTransferred","anonymous":false},{"inputs":[{"internalType":"address","name":"actorId","type":"address","indexed":false},{"internalType":"bytes32","name":"codeId","type":"bytes32","indexed":true}],"type":"event","name":"ProgramCreated","anonymous":false},{"inputs":[],"type":"event","name":"StorageSlotChanged","anonymous":false},{"inputs":[],"type":"event","name":"ValidatorsSetChanged","anonymous":false},{"inputs":[{"internalType":"uint128","name":"valuePerWeight","type":"uint128","indexed":false}],"type":"event","name":"ValuePerWeightChanged","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"baseFee","outputs":[{"internalType":"uint128","name":"","type":"uint128"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"baseWeight","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[{"internalType":"bytes32","name":"codeId","type":"bytes32"}],"stateMutability":"view","type":"function","name":"codeState","outputs":[{"internalType":"enum IRouter.CodeState","name":"","type":"uint8"}]},{"inputs":[{"internalType":"struct IRouter.BlockCommitment[]","name":"blockCommitmentsArray","type":"tuple[]","components":[{"internalType":"bytes32","name":"blockHash","type":"bytes32"},{"internalType":"bytes32","name":"prevCommitmentHash","type":"bytes32"},{"internalType":"bytes32","name":"predBlockHash","type":"bytes32"},{"internalType":"struct IRouter.StateTransition[]","name":"transitions","type":"tuple[]","components":[{"internalType":"address","name":"actorId","type":"address"},{"internalType":"bytes32","name":"newStateHash","type":"bytes32"},{"internalType":"uint128","name":"valueToReceive","type":"uint128"},{"internalType":"struct IRouter.ValueClaim[]","name":"valueClaims","type":"tuple[]","components":[{"internalType":"bytes32","name":"messageId","type":"bytes32"},{"internalType":"address","name":"destination","type":"address"},{"internalType":"uint128","name":"value","type":"uint128"}]},{"internalType":"struct IRouter.OutgoingMessage[]","name":"messages","type":"tuple[]","components":[{"internalType":"bytes32","name":"id","type":"bytes32"},{"internalType":"address","name":"destination","type":"address"},{"internalType":"bytes","name":"payload","type":"bytes"},{"internalType":"uint128","name":"value","type":"uint128"},{"internalType":"struct IRouter.ReplyDetails","name":"replyDetails","type":"tuple","components":[{"internalType":"bytes32","name":"to","type":"bytes32"},{"internalType":"bytes4","name":"code","type":"bytes4"}]}]}]}]},{"internalType":"bytes[]","name":"signatures","type":"bytes[]"}],"stateMutability":"nonpayable","type":"function","name":"commitBlocks"},{"inputs":[{"internalType":"struct IRouter.CodeCommitment[]","name":"codeCommitmentsArray","type":"tuple[]","components":[{"internalType":"bytes32","name":"id","type":"bytes32"},{"internalType":"bool","name":"valid","type":"bool"}]},{"internalType":"bytes[]","name":"signatures","type":"bytes[]"}],"stateMutability":"nonpayable","type":"function","name":"commitCodes"},{"inputs":[{"internalType":"bytes32","name":"codeId","type":"bytes32"},{"internalType":"bytes32","name":"salt","type":"bytes32"},{"internalType":"bytes","name":"payload","type":"bytes"},{"internalType":"uint128","name":"_value","type":"uint128"}],"stateMutability":"payable","type":"function","name":"createProgram","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"decoderImplementation","type":"address"},{"internalType":"bytes32","name":"codeId","type":"bytes32"},{"internalType":"bytes32","name":"salt","type":"bytes32"},{"internalType":"bytes","name":"payload","type":"bytes"},{"internalType":"uint128","name":"_value","type":"uint128"}],"stateMutability":"payable","type":"function","name":"createProgramWithDecoder","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"genesisBlockHash","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getStorageSlot","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"address","name":"initialOwner","type":"address"},{"internalType":"address","name":"_mirror","type":"address"},{"internalType":"address","name":"_mirrorProxy","type":"address"},{"internalType":"address","name":"_wrappedVara","type":"address"},{"internalType":"address[]","name":"_validatorsKeys","type":"address[]"}],"stateMutability":"nonpayable","type":"function","name":"initialize"},{"inputs":[],"stateMutability":"view","type":"function","name":"lastBlockCommitmentHash","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"mirror","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"mirrorProxy","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"program","type":"address"}],"stateMutability":"view","type":"function","name":"programCodeId","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"programsCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"reinitialize"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"renounceOwnership"},{"inputs":[{"internalType":"bytes32","name":"codeId","type":"bytes32"},{"internalType":"bytes32","name":"blobTxHash","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"requestCodeValidation"},{"inputs":[{"internalType":"uint64","name":"_baseWeight","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"setBaseWeight"},{"inputs":[{"internalType":"address","name":"_mirror","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setMirror"},{"inputs":[{"internalType":"string","name":"namespace","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"setStorageSlot"},{"inputs":[{"internalType":"uint128","name":"_valuePerWeight","type":"uint128"}],"stateMutability":"nonpayable","type":"function","name":"setValuePerWeight"},{"inputs":[],"stateMutability":"view","type":"function","name":"signingThresholdPercentage","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"transferOwnership"},{"inputs":[{"internalType":"address[]","name":"validatorsAddressArray","type":"address[]"}],"stateMutability":"nonpayable","type":"function","name":"updateValidators"},{"inputs":[],"stateMutability":"view","type":"function","name":"validatedCodesCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"validator","type":"address"}],"stateMutability":"view","type":"function","name":"validatorExists","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"validators","outputs":[{"internalType":"address[]","name":"","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"validatorsCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"validatorsThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"valuePerWeight","outputs":[{"internalType":"uint128","name":"","type":"uint128"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"wrappedVara","outputs":[{"internalType":"address","name":"","type":"address"}]}],"devdoc":{"kind":"dev","methods":{"constructor":{"custom:oz-upgrades-unsafe-allow":"constructor"},"owner()":{"details":"Returns the address of the current owner."},"programCodeId(address)":{"details":"Returns bytes32(0) in case of inexistent program."},"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."},"transferOwnership(address)":{"details":"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."}},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/openzeppelin-contracts-upgradeable/lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","halmos-cheatcodes/=lib/openzeppelin-contracts-upgradeable/lib/halmos-cheatcodes/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/","openzeppelin-foundry-upgrades/=lib/openzeppelin-foundry-upgrades/src/","solidity-stringutils/=lib/openzeppelin-foundry-upgrades/lib/solidity-stringutils/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/Router.sol":"Router"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol":{"keccak256":"0xc163fcf9bb10138631a9ba5564df1fa25db9adff73bd9ee868a8ae1858fe093a","urls":["bzz-raw://9706d43a0124053d9880f6e31a59f31bc0a6a3dc1acd66ce0a16e1111658c5f6","dweb:/ipfs/QmUFmfowzkRwGtDu36cXV9SPTBHJ3n7dG9xQiK5B28jTf2"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol":{"keccak256":"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b","urls":["bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609","dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol":{"keccak256":"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397","urls":["bzz-raw://08e39f23d5b4692f9a40803e53a8156b72b4c1f9902a88cd65ba964db103dab9","dweb:/ipfs/QmPKn6EYDgpga7KtpkA8wV2yJCYGMtc9K4LkJfhKX2RVSV"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/proxy/Clones.sol":{"keccak256":"0x4cc853b89072428e406c60c6e8d5280b31f9d99d6caf7b041650e649746513a6","urls":["bzz-raw://38a1bbdb89a8f5d1820a2dcc34b5086a6e199c7a8965007345975b5db8997a64","dweb:/ipfs/QmcN6yJBkoserTqAMpue55HmMCMf7dGJYUbGi8p366HqZq"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4","urls":["bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009","dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"keccak256":"0x88f7b6f070ad1de2bf899da6978ed74b5038eac78c01b7359b92b60c3d965c28","urls":["bzz-raw://c436edb6733a036607c6f17cc590e8ee351363a8cb4c564a98d9a66392c89323","dweb:/ipfs/QmcJvJR2K3EtYcKEXVpQ1WqT6TvAbVem5HR1FirAsqEXFR"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Errors.sol":{"keccak256":"0xc452b8c0ab5a57e6ca49c4fbe6aead2460c2f8d60d58bc60af68e559b7ca1179","urls":["bzz-raw://0980b3b9e8cd9d9a0f2ae848f0f36a85158887e6fd961142a13b11299ae7f30a","dweb:/ipfs/QmUrmDji3NR2V3YezV8xHSS3wjeBKq16FL7cHdBCnwLjKd"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Panic.sol":{"keccak256":"0x29074fe5a74bb024c57b3570abf6c74d8bceed3438694d470fd0166a3ecd196a","urls":["bzz-raw://f4f8435ccbc56e384f4cc9ac9ff491cf30a82f2beac00e33ccc2cf8af3f77cc3","dweb:/ipfs/QmUKJXxTe6nn1qfgnX8xbnboNNAPUuEmJyGqMZCKNiFBgn"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/ReentrancyGuardTransient.sol":{"keccak256":"0x629828db7f6354641b2bc42f6f6742b07bed39959361f92b781224fd33cfb0c9","urls":["bzz-raw://a2654b69b5d9b42ad4c981875add283a06db8bd02e01c614d4f0d498860d0c58","dweb:/ipfs/QmWE3oD4Ti4UKrZTiA4cxAwprkFTpBYsLRrc62w5Lg16Q8"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol":{"keccak256":"0xfd29ed7a01e9ef109cc31542ca0f51ba3e793740570b69172ec3d8bfbb1643b4","urls":["bzz-raw://99379e0649be8106d2708a2bde73b5cdaba4505f1001f1586b53788bf971d097","dweb:/ipfs/QmV9cCnvFoVzV2cVDW4Zbs3JQ3ehxBcooQS52taVxR637S"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Strings.sol":{"keccak256":"0x686a21b9be2594ccfda3a855270dd8ebc4288b8a9ed84ecd4ef1bca2ea3fc46b","urls":["bzz-raw://7c0bbc37f4d1aaae086d73f13f41b8043a9ad5b07f30a2fd7b8a74ead99b1ef6","dweb:/ipfs/QmZpFyfCCFpbrkNtfHTn18qV7VvptPdoLN82Qu5XtMCci6"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/cryptography/ECDSA.sol":{"keccak256":"0xa548dd62e9e17616ae80a1e7ac7b1447ae377efc27fb9f7b4f4fbf5c0b0a1dfb","urls":["bzz-raw://d27e9ae3e67eb229444cd43d49db5be57c586155fd1d363b3b1f9bb1b7bb0087","dweb:/ipfs/QmT2GFnpXsTWBs8bkeVJtQ4VNX7f3igxwB77JBCr4mDXb3"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/cryptography/MessageHashUtils.sol":{"keccak256":"0x3f1998a2904792ff2a576827876638b4917573186537f878d30b23277a3b8d38","urls":["bzz-raw://a8dfb08ed617c9d874de901e44ac8af7af7b13e7c84000a1da3cdaf6004593e8","dweb:/ipfs/QmPX2hZAvCZJCQNSXcWqhxh3xp6UitwESrw3K2u3aYNqiu"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/Math.sol":{"keccak256":"0x2be34e47fc07baed68c4878618a6e13c13243753c3f656ca1b6e05287c5df4ee","urls":["bzz-raw://e0bc7f3ae934c76aae959cf061b9764a6dbb2313c4281944dde278cd418599da","dweb:/ipfs/QmYtYLrwC1nPJd86kVrQFQAGeS3XGmhXjCj25LQGfGkugi"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol":{"keccak256":"0x8cd59334ed58b8884cd1f775afc9400db702e674e5d6a7a438c655b9de788d7e","urls":["bzz-raw://99e62c7de7318f413b6352e3f2704ca23e7725ff144e43c8bd574d12dbf29047","dweb:/ipfs/QmSEXG2rBx1VxU2uFTWdiChjDvA4osEY2mesjmoVeVhHko"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol":{"keccak256":"0x5c8d4114f077f6803bb89b8b07bfa26dfbf8f2001708e4e7fdf1e8d9ddd42f44","urls":["bzz-raw://b66c74efa1f994e3ea467b4165da1575857b29d81bec36e94678fe494ce5c615","dweb:/ipfs/QmeXQFdzSJFmN8UdhxMqQwwUh1U2WEha5NoVLbSg3pCJc5"],"license":"MIT"},"src/IMirror.sol":{"keccak256":"0x82d8c114d8e994851d5fb8b21ce02fb48907eec690df5f3af4111451a3390f89","urls":["bzz-raw://3c08f1764a6263ea9bc4a8c4afe14cdc2f9486157ceafc9fa6f0a5ca6c58ba37","dweb:/ipfs/QmWNZJmyp6M7JrdLE1cNKC8sGdZ3YdeHvujgyVqnQp7ubC"],"license":"UNLICENSED"},"src/IRouter.sol":{"keccak256":"0x4eea409058588f3e4d88b1687bfe367c6a6407b905e5af2df693327ab443fa7a","urls":["bzz-raw://fc93c4fdb632d11e8cbfea97f2bf10d9e40fedd38649fdc020d65fd52d122421","dweb:/ipfs/QmVsGD6aQ8oZqTAZJNrdQotWynFLGpfWD7zrfDSNumx87s"],"license":"UNLICENSED"},"src/IWrappedVara.sol":{"keccak256":"0xfc2f9955b1d8f74a98a087b490a03b86933c423eb58b840f1e3eb4cd58eac175","urls":["bzz-raw://5942f66657786636ddb832587404810bf65fc757e12ddaa07393a0b3f885840f","dweb:/ipfs/QmTEP15EF9zrA7bCj8cesNd8QyUPHM3XgtKJecCUjsA5Jf"],"license":"UNLICENSED"},"src/Router.sol":{"keccak256":"0x27ed0744c7feb1e69a78ed56fe5902d5b41f2c3b84ff3ed6ea1e0aab6673eaeb","urls":["bzz-raw://3a0eb6b4ce45e9adb4136713f2d706d6bdc6472e191ca6f7bcb1d239a112e16c","dweb:/ipfs/QmNh1qhFQESAb5Jzb2Lk41v2x1zoLLdioqxtMm23ouhko5"],"license":"UNLICENSED"}},"version":1},"storageLayout":{"storage":[],"types":{}},"ast":{"absolutePath":"src/Router.sol","id":56296,"exportedSymbols":{"Clones":[41121],"ECDSA":[43387],"IERC20":[41906],"IMirror":[53648],"IRouter":[54013],"IWrappedVara":[54024],"MessageHashUtils":[43461],"OwnableUpgradeable":[39024],"ReentrancyGuardTransient":[42400],"Router":[56295],"StorageSlot":[42719]},"nodeType":"SourceUnit","src":"39:18240:82","nodes":[{"id":54590,"nodeType":"PragmaDirective","src":"39:24:82","nodes":[],"literals":["solidity","^","0.8",".26"]},{"id":54592,"nodeType":"ImportDirective","src":"65:74:82","nodes":[],"absolutePath":"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol","file":"@openzeppelin/contracts/utils/StorageSlot.sol","nameLocation":"-1:-1:-1","scope":56296,"sourceUnit":42720,"symbolAliases":[{"foreign":{"id":54591,"name":"StorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42719,"src":"73:11:82","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":54594,"nodeType":"ImportDirective","src":"140:101:82","nodes":[],"absolutePath":"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol","file":"@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol","nameLocation":"-1:-1:-1","scope":56296,"sourceUnit":39025,"symbolAliases":[{"foreign":{"id":54593,"name":"OwnableUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39024,"src":"148:18:82","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":54596,"nodeType":"ImportDirective","src":"242:64:82","nodes":[],"absolutePath":"lib/openzeppelin-contracts/contracts/proxy/Clones.sol","file":"@openzeppelin/contracts/proxy/Clones.sol","nameLocation":"-1:-1:-1","scope":56296,"sourceUnit":41122,"symbolAliases":[{"foreign":{"id":54595,"name":"Clones","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41121,"src":"250:6:82","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":54598,"nodeType":"ImportDirective","src":"307:75:82","nodes":[],"absolutePath":"lib/openzeppelin-contracts/contracts/utils/cryptography/ECDSA.sol","file":"@openzeppelin/contracts/utils/cryptography/ECDSA.sol","nameLocation":"-1:-1:-1","scope":56296,"sourceUnit":43388,"symbolAliases":[{"foreign":{"id":54597,"name":"ECDSA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43387,"src":"315:5:82","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":54600,"nodeType":"ImportDirective","src":"383:97:82","nodes":[],"absolutePath":"lib/openzeppelin-contracts/contracts/utils/cryptography/MessageHashUtils.sol","file":"@openzeppelin/contracts/utils/cryptography/MessageHashUtils.sol","nameLocation":"-1:-1:-1","scope":56296,"sourceUnit":43462,"symbolAliases":[{"foreign":{"id":54599,"name":"MessageHashUtils","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43461,"src":"391:16:82","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":54602,"nodeType":"ImportDirective","src":"481:100:82","nodes":[],"absolutePath":"lib/openzeppelin-contracts/contracts/utils/ReentrancyGuardTransient.sol","file":"@openzeppelin/contracts/utils/ReentrancyGuardTransient.sol","nameLocation":"-1:-1:-1","scope":56296,"sourceUnit":42401,"symbolAliases":[{"foreign":{"id":54601,"name":"ReentrancyGuardTransient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42400,"src":"489:24:82","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":54604,"nodeType":"ImportDirective","src":"582:38:82","nodes":[],"absolutePath":"src/IRouter.sol","file":"./IRouter.sol","nameLocation":"-1:-1:-1","scope":56296,"sourceUnit":54014,"symbolAliases":[{"foreign":{"id":54603,"name":"IRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54013,"src":"590:7:82","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":54606,"nodeType":"ImportDirective","src":"621:38:82","nodes":[],"absolutePath":"src/IMirror.sol","file":"./IMirror.sol","nameLocation":"-1:-1:-1","scope":56296,"sourceUnit":53649,"symbolAliases":[{"foreign":{"id":54605,"name":"IMirror","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53648,"src":"629:7:82","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":54608,"nodeType":"ImportDirective","src":"660:48:82","nodes":[],"absolutePath":"src/IWrappedVara.sol","file":"./IWrappedVara.sol","nameLocation":"-1:-1:-1","scope":56296,"sourceUnit":54025,"symbolAliases":[{"foreign":{"id":54607,"name":"IWrappedVara","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54024,"src":"668:12:82","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":54610,"nodeType":"ImportDirective","src":"709:70:82","nodes":[],"absolutePath":"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol","file":"@openzeppelin/contracts/token/ERC20/IERC20.sol","nameLocation":"-1:-1:-1","scope":56296,"sourceUnit":41907,"symbolAliases":[{"foreign":{"id":54609,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41906,"src":"717:6:82","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":56295,"nodeType":"ContractDefinition","src":"781:17497:82","nodes":[{"id":54619,"nodeType":"UsingForDirective","src":"860:24:82","nodes":[],"global":false,"libraryName":{"id":54617,"name":"ECDSA","nameLocations":["866:5:82"],"nodeType":"IdentifierPath","referencedDeclaration":43387,"src":"866:5:82"},"typeName":{"id":54618,"name":"bytes32","nodeType":"ElementaryTypeName","src":"876:7:82","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}},{"id":54622,"nodeType":"UsingForDirective","src":"889:35:82","nodes":[],"global":false,"libraryName":{"id":54620,"name":"MessageHashUtils","nameLocations":["895:16:82"],"nodeType":"IdentifierPath","referencedDeclaration":43461,"src":"895:16:82"},"typeName":{"id":54621,"name":"address","nodeType":"ElementaryTypeName","src":"916:7:82","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}},{"id":54625,"nodeType":"VariableDeclaration","src":"1032:106:82","nodes":[],"constant":true,"mutability":"constant","name":"SLOT_STORAGE","nameLocation":"1057:12:82","scope":56295,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":54623,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1032:7:82","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"hexValue":"307835633039636131623962383132376134666439663363333834616163353962363631343431653832306531373733333735336666356632653836653165303030","id":54624,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1072:66:82","typeDescriptions":{"typeIdentifier":"t_rational_41630078590300661333111585883568696735413380457407274925697692750148467286016_by_1","typeString":"int_const 4163...(69 digits omitted)...6016"},"value":"0x5c09ca1b9b8127a4fd9f3c384aac59b661441e820e17733753ff5f2e86e1e000"},"visibility":"private"},{"id":54633,"nodeType":"FunctionDefinition","src":"1198:53:82","nodes":[],"body":{"id":54632,"nodeType":"Block","src":"1212:39:82","nodes":[],"statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":54629,"name":"_disableInitializers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39246,"src":"1222:20:82","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":54630,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1222:22:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":54631,"nodeType":"ExpressionStatement","src":"1222:22:82"}]},"documentation":{"id":54626,"nodeType":"StructuredDocumentation","src":"1145:48:82","text":"@custom:oz-upgrades-unsafe-allow constructor"},"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":54627,"nodeType":"ParameterList","parameters":[],"src":"1209:2:82"},"returnParameters":{"id":54628,"nodeType":"ParameterList","parameters":[],"src":"1212:0:82"},"scope":56295,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":54715,"nodeType":"FunctionDefinition","src":"1257:728:82","nodes":[],"body":{"id":54714,"nodeType":"Block","src":"1459:526:82","nodes":[],"statements":[{"expression":{"arguments":[{"id":54650,"name":"initialOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54635,"src":"1484:12:82","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":54649,"name":"__Ownable_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38884,"src":"1469:14:82","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":54651,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1469:28:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":54652,"nodeType":"ExpressionStatement","src":"1469:28:82"},{"expression":{"arguments":[{"hexValue":"726f757465722e73746f726167652e526f757465725631","id":54654,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1523:25:82","typeDescriptions":{"typeIdentifier":"t_stringliteral_ebe34d7458caf9bba83b85ded6e7716871c7d6d7b9aa651344a78a4d0d1eb88b","typeString":"literal_string \"router.storage.RouterV1\""},"value":"router.storage.RouterV1"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_ebe34d7458caf9bba83b85ded6e7716871c7d6d7b9aa651344a78a4d0d1eb88b","typeString":"literal_string \"router.storage.RouterV1\""}],"id":54653,"name":"setStorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54856,"src":"1508:14:82","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory)"}},"id":54655,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1508:41:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":54656,"nodeType":"ExpressionStatement","src":"1508:41:82"},{"assignments":[54659],"declarations":[{"constant":false,"id":54659,"mutability":"mutable","name":"router","nameLocation":"1575:6:82","nodeType":"VariableDeclaration","scope":54714,"src":"1559:22:82","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53731_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":54658,"nodeType":"UserDefinedTypeName","pathNode":{"id":54657,"name":"Storage","nameLocations":["1559:7:82"],"nodeType":"IdentifierPath","referencedDeclaration":53731,"src":"1559:7:82"},"referencedDeclaration":53731,"src":"1559:7:82","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53731_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"}],"id":54662,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":54660,"name":"_getStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56294,"src":"1584:11:82","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$53731_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":54661,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1584:13:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53731_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"1559:38:82"},{"expression":{"id":54672,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":54663,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54659,"src":"1608:6:82","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53731_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":54665,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"1615:16:82","memberName":"genesisBlockHash","nodeType":"MemberAccess","referencedDeclaration":53696,"src":"1608:23:82","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":54670,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":54667,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"1644:5:82","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":54668,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1650:6:82","memberName":"number","nodeType":"MemberAccess","src":"1644:12:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":54669,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1659:1:82","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"1644:16:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":54666,"name":"blockhash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-5,"src":"1634:9:82","typeDescriptions":{"typeIdentifier":"t_function_blockhash_view$_t_uint256_$returns$_t_bytes32_$","typeString":"function (uint256) view returns (bytes32)"}},"id":54671,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1634:27:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"1608:53:82","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":54673,"nodeType":"ExpressionStatement","src":"1608:53:82"},{"expression":{"id":54678,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":54674,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54659,"src":"1671:6:82","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53731_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":54676,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"1678:6:82","memberName":"mirror","nodeType":"MemberAccess","referencedDeclaration":53698,"src":"1671:13:82","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":54677,"name":"_mirror","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54637,"src":"1687:7:82","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1671:23:82","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":54679,"nodeType":"ExpressionStatement","src":"1671:23:82"},{"expression":{"id":54684,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":54680,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54659,"src":"1704:6:82","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53731_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":54682,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"1711:11:82","memberName":"mirrorProxy","nodeType":"MemberAccess","referencedDeclaration":53700,"src":"1704:18:82","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":54683,"name":"_mirrorProxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54639,"src":"1725:12:82","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1704:33:82","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":54685,"nodeType":"ExpressionStatement","src":"1704:33:82"},{"expression":{"id":54690,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":54686,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54659,"src":"1747:6:82","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53731_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":54688,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"1754:11:82","memberName":"wrappedVara","nodeType":"MemberAccess","referencedDeclaration":53702,"src":"1747:18:82","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":54689,"name":"_wrappedVara","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54641,"src":"1768:12:82","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1747:33:82","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":54691,"nodeType":"ExpressionStatement","src":"1747:33:82"},{"expression":{"id":54696,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":54692,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54659,"src":"1790:6:82","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53731_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":54694,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"1797:26:82","memberName":"signingThresholdPercentage","nodeType":"MemberAccess","referencedDeclaration":53706,"src":"1790:33:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"36363636","id":54695,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1826:4:82","typeDescriptions":{"typeIdentifier":"t_rational_6666_by_1","typeString":"int_const 6666"},"value":"6666"},"src":"1790:40:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":54697,"nodeType":"ExpressionStatement","src":"1790:40:82"},{"expression":{"id":54702,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":54698,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54659,"src":"1868:6:82","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53731_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":54700,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"1875:10:82","memberName":"baseWeight","nodeType":"MemberAccess","referencedDeclaration":53708,"src":"1868:17:82","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"325f3530305f3030305f303030","id":54701,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1888:13:82","typeDescriptions":{"typeIdentifier":"t_rational_2500000000_by_1","typeString":"int_const 2500000000"},"value":"2_500_000_000"},"src":"1868:33:82","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"id":54703,"nodeType":"ExpressionStatement","src":"1868:33:82"},{"expression":{"id":54708,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":54704,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54659,"src":"1911:6:82","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53731_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":54706,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"1918:14:82","memberName":"valuePerWeight","nodeType":"MemberAccess","referencedDeclaration":53710,"src":"1911:21:82","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"3130","id":54707,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1935:2:82","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"src":"1911:26:82","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"id":54709,"nodeType":"ExpressionStatement","src":"1911:26:82"},{"expression":{"arguments":[{"id":54711,"name":"_validatorsKeys","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54644,"src":"1962:15:82","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}],"id":54710,"name":"_setValidators","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56281,"src":"1947:14:82","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_array$_t_address_$dyn_memory_ptr_$returns$__$","typeString":"function (address[] memory)"}},"id":54712,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1947:31:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":54713,"nodeType":"ExpressionStatement","src":"1947:31:82"}]},"functionSelector":"f8453e7c","implemented":true,"kind":"function","modifiers":[{"id":54647,"kind":"modifierInvocation","modifierName":{"id":54646,"name":"initializer","nameLocations":["1447:11:82"],"nodeType":"IdentifierPath","referencedDeclaration":39132,"src":"1447:11:82"},"nodeType":"ModifierInvocation","src":"1447:11:82"}],"name":"initialize","nameLocation":"1266:10:82","parameters":{"id":54645,"nodeType":"ParameterList","parameters":[{"constant":false,"id":54635,"mutability":"mutable","name":"initialOwner","nameLocation":"1294:12:82","nodeType":"VariableDeclaration","scope":54715,"src":"1286:20:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":54634,"name":"address","nodeType":"ElementaryTypeName","src":"1286:7:82","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":54637,"mutability":"mutable","name":"_mirror","nameLocation":"1324:7:82","nodeType":"VariableDeclaration","scope":54715,"src":"1316:15:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":54636,"name":"address","nodeType":"ElementaryTypeName","src":"1316:7:82","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":54639,"mutability":"mutable","name":"_mirrorProxy","nameLocation":"1349:12:82","nodeType":"VariableDeclaration","scope":54715,"src":"1341:20:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":54638,"name":"address","nodeType":"ElementaryTypeName","src":"1341:7:82","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":54641,"mutability":"mutable","name":"_wrappedVara","nameLocation":"1379:12:82","nodeType":"VariableDeclaration","scope":54715,"src":"1371:20:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":54640,"name":"address","nodeType":"ElementaryTypeName","src":"1371:7:82","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":54644,"mutability":"mutable","name":"_validatorsKeys","nameLocation":"1418:15:82","nodeType":"VariableDeclaration","scope":54715,"src":"1401:32:82","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":54642,"name":"address","nodeType":"ElementaryTypeName","src":"1401:7:82","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":54643,"nodeType":"ArrayTypeName","src":"1401:9:82","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"src":"1276:163:82"},"returnParameters":{"id":54648,"nodeType":"ParameterList","parameters":[],"src":"1459:0:82"},"scope":56295,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":54796,"nodeType":"FunctionDefinition","src":"1991:662:82","nodes":[],"body":{"id":54795,"nodeType":"Block","src":"2049:604:82","nodes":[],"statements":[{"assignments":[54725],"declarations":[{"constant":false,"id":54725,"mutability":"mutable","name":"oldRouter","nameLocation":"2075:9:82","nodeType":"VariableDeclaration","scope":54795,"src":"2059:25:82","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53731_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":54724,"nodeType":"UserDefinedTypeName","pathNode":{"id":54723,"name":"Storage","nameLocations":["2059:7:82"],"nodeType":"IdentifierPath","referencedDeclaration":53731,"src":"2059:7:82"},"referencedDeclaration":53731,"src":"2059:7:82","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53731_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"}],"id":54728,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":54726,"name":"_getStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56294,"src":"2087:11:82","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$53731_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":54727,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2087:13:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53731_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"2059:41:82"},{"assignments":[54730],"declarations":[{"constant":false,"id":54730,"mutability":"mutable","name":"_mirror","nameLocation":"2119:7:82","nodeType":"VariableDeclaration","scope":54795,"src":"2111:15:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":54729,"name":"address","nodeType":"ElementaryTypeName","src":"2111:7:82","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":54733,"initialValue":{"expression":{"id":54731,"name":"oldRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54725,"src":"2129:9:82","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53731_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":54732,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2139:6:82","memberName":"mirror","nodeType":"MemberAccess","referencedDeclaration":53698,"src":"2129:16:82","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"2111:34:82"},{"assignments":[54735],"declarations":[{"constant":false,"id":54735,"mutability":"mutable","name":"_mirrorProxy","nameLocation":"2163:12:82","nodeType":"VariableDeclaration","scope":54795,"src":"2155:20:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":54734,"name":"address","nodeType":"ElementaryTypeName","src":"2155:7:82","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":54738,"initialValue":{"expression":{"id":54736,"name":"oldRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54725,"src":"2178:9:82","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53731_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":54737,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2188:11:82","memberName":"mirrorProxy","nodeType":"MemberAccess","referencedDeclaration":53700,"src":"2178:21:82","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"2155:44:82"},{"assignments":[54740],"declarations":[{"constant":false,"id":54740,"mutability":"mutable","name":"_wrappedVara","nameLocation":"2217:12:82","nodeType":"VariableDeclaration","scope":54795,"src":"2209:20:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":54739,"name":"address","nodeType":"ElementaryTypeName","src":"2209:7:82","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":54743,"initialValue":{"expression":{"id":54741,"name":"oldRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54725,"src":"2232:9:82","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53731_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":54742,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2242:11:82","memberName":"wrappedVara","nodeType":"MemberAccess","referencedDeclaration":53702,"src":"2232:21:82","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"2209:44:82"},{"assignments":[54748],"declarations":[{"constant":false,"id":54748,"mutability":"mutable","name":"_validatorsKeys","nameLocation":"2280:15:82","nodeType":"VariableDeclaration","scope":54795,"src":"2263:32:82","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":54746,"name":"address","nodeType":"ElementaryTypeName","src":"2263:7:82","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":54747,"nodeType":"ArrayTypeName","src":"2263:9:82","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"id":54751,"initialValue":{"expression":{"id":54749,"name":"oldRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54725,"src":"2298:9:82","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53731_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":54750,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2308:14:82","memberName":"validatorsKeys","nodeType":"MemberAccess","referencedDeclaration":53717,"src":"2298:24:82","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"nodeType":"VariableDeclarationStatement","src":"2263:59:82"},{"expression":{"arguments":[{"hexValue":"726f757465722e73746f726167652e526f757465725632","id":54753,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2348:25:82","typeDescriptions":{"typeIdentifier":"t_stringliteral_07554b5a957f065078e703cffe06326f3995e4f57feb37a649312406c8f4f44a","typeString":"literal_string \"router.storage.RouterV2\""},"value":"router.storage.RouterV2"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_07554b5a957f065078e703cffe06326f3995e4f57feb37a649312406c8f4f44a","typeString":"literal_string \"router.storage.RouterV2\""}],"id":54752,"name":"setStorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54856,"src":"2333:14:82","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory)"}},"id":54754,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2333:41:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":54755,"nodeType":"ExpressionStatement","src":"2333:41:82"},{"assignments":[54758],"declarations":[{"constant":false,"id":54758,"mutability":"mutable","name":"router","nameLocation":"2400:6:82","nodeType":"VariableDeclaration","scope":54795,"src":"2384:22:82","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53731_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":54757,"nodeType":"UserDefinedTypeName","pathNode":{"id":54756,"name":"Storage","nameLocations":["2384:7:82"],"nodeType":"IdentifierPath","referencedDeclaration":53731,"src":"2384:7:82"},"referencedDeclaration":53731,"src":"2384:7:82","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53731_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"}],"id":54761,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":54759,"name":"_getStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56294,"src":"2409:11:82","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$53731_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":54760,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2409:13:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53731_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"2384:38:82"},{"expression":{"id":54771,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":54762,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54758,"src":"2433:6:82","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53731_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":54764,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"2440:16:82","memberName":"genesisBlockHash","nodeType":"MemberAccess","referencedDeclaration":53696,"src":"2433:23:82","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":54769,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":54766,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"2469:5:82","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":54767,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2475:6:82","memberName":"number","nodeType":"MemberAccess","src":"2469:12:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":54768,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2484:1:82","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"2469:16:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":54765,"name":"blockhash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-5,"src":"2459:9:82","typeDescriptions":{"typeIdentifier":"t_function_blockhash_view$_t_uint256_$returns$_t_bytes32_$","typeString":"function (uint256) view returns (bytes32)"}},"id":54770,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2459:27:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"2433:53:82","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":54772,"nodeType":"ExpressionStatement","src":"2433:53:82"},{"expression":{"id":54777,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":54773,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54758,"src":"2496:6:82","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53731_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":54775,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"2503:6:82","memberName":"mirror","nodeType":"MemberAccess","referencedDeclaration":53698,"src":"2496:13:82","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":54776,"name":"_mirror","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54730,"src":"2512:7:82","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2496:23:82","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":54778,"nodeType":"ExpressionStatement","src":"2496:23:82"},{"expression":{"id":54783,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":54779,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54758,"src":"2529:6:82","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53731_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":54781,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"2536:11:82","memberName":"mirrorProxy","nodeType":"MemberAccess","referencedDeclaration":53700,"src":"2529:18:82","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":54782,"name":"_mirrorProxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54735,"src":"2550:12:82","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2529:33:82","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":54784,"nodeType":"ExpressionStatement","src":"2529:33:82"},{"expression":{"id":54789,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":54785,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54758,"src":"2572:6:82","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53731_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":54787,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"2579:11:82","memberName":"wrappedVara","nodeType":"MemberAccess","referencedDeclaration":53702,"src":"2572:18:82","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":54788,"name":"_wrappedVara","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54740,"src":"2593:12:82","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2572:33:82","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":54790,"nodeType":"ExpressionStatement","src":"2572:33:82"},{"expression":{"arguments":[{"id":54792,"name":"_validatorsKeys","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54748,"src":"2630:15:82","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}],"id":54791,"name":"_setValidators","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56281,"src":"2615:14:82","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_array$_t_address_$dyn_memory_ptr_$returns$__$","typeString":"function (address[] memory)"}},"id":54793,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2615:31:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":54794,"nodeType":"ExpressionStatement","src":"2615:31:82"}]},"functionSelector":"6c2eb350","implemented":true,"kind":"function","modifiers":[{"id":54718,"kind":"modifierInvocation","modifierName":{"id":54717,"name":"onlyOwner","nameLocations":["2022:9:82"],"nodeType":"IdentifierPath","referencedDeclaration":38919,"src":"2022:9:82"},"nodeType":"ModifierInvocation","src":"2022:9:82"},{"arguments":[{"hexValue":"32","id":54720,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2046:1:82","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"}],"id":54721,"kind":"modifierInvocation","modifierName":{"id":54719,"name":"reinitializer","nameLocations":["2032:13:82"],"nodeType":"IdentifierPath","referencedDeclaration":39179,"src":"2032:13:82"},"nodeType":"ModifierInvocation","src":"2032:16:82"}],"name":"reinitialize","nameLocation":"2000:12:82","parameters":{"id":54716,"nodeType":"ParameterList","parameters":[],"src":"2012:2:82"},"returnParameters":{"id":54722,"nodeType":"ParameterList","parameters":[],"src":"2049:0:82"},"scope":56295,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":54808,"nodeType":"FunctionDefinition","src":"2692:126:82","nodes":[],"body":{"id":54807,"nodeType":"Block","src":"2748:70:82","nodes":[],"statements":[{"expression":{"expression":{"arguments":[{"id":54803,"name":"SLOT_STORAGE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54625,"src":"2792:12:82","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":54801,"name":"StorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42719,"src":"2765:11:82","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_StorageSlot_$42719_$","typeString":"type(library StorageSlot)"}},"id":54802,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2777:14:82","memberName":"getBytes32Slot","nodeType":"MemberAccess","referencedDeclaration":42457,"src":"2765:26:82","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_struct$_Bytes32Slot_$42412_storage_ptr_$","typeString":"function (bytes32) pure returns (struct StorageSlot.Bytes32Slot storage pointer)"}},"id":54804,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2765:40:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Slot_$42412_storage_ptr","typeString":"struct StorageSlot.Bytes32Slot storage pointer"}},"id":54805,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2806:5:82","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":42411,"src":"2765:46:82","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":54800,"id":54806,"nodeType":"Return","src":"2758:53:82"}]},"baseFunctions":[53837],"functionSelector":"96708226","implemented":true,"kind":"function","modifiers":[],"name":"getStorageSlot","nameLocation":"2701:14:82","parameters":{"id":54797,"nodeType":"ParameterList","parameters":[],"src":"2715:2:82"},"returnParameters":{"id":54800,"nodeType":"ParameterList","parameters":[{"constant":false,"id":54799,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":54808,"src":"2739:7:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":54798,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2739:7:82","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2738:9:82"},"scope":56295,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":54856,"nodeType":"FunctionDefinition","src":"2824:287:82","nodes":[],"body":{"id":54855,"nodeType":"Block","src":"2890:221:82","nodes":[],"statements":[{"assignments":[54816],"declarations":[{"constant":false,"id":54816,"mutability":"mutable","name":"slot","nameLocation":"2908:4:82","nodeType":"VariableDeclaration","scope":54855,"src":"2900:12:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":54815,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2900:7:82","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":54842,"initialValue":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":54841,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":54830,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"arguments":[{"arguments":[{"id":54825,"name":"namespace","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54810,"src":"2960:9:82","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":54824,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2954:5:82","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":54823,"name":"bytes","nodeType":"ElementaryTypeName","src":"2954:5:82","typeDescriptions":{}}},"id":54826,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2954:16:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":54822,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"2944:9:82","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":54827,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2944:27:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":54821,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2936:7:82","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":54820,"name":"uint256","nodeType":"ElementaryTypeName","src":"2936:7:82","typeDescriptions":{}}},"id":54828,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2936:36:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":54829,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2975:1:82","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"2936:40:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":54818,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"2925:3:82","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":54819,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2929:6:82","memberName":"encode","nodeType":"MemberAccess","src":"2925:10:82","typeDescriptions":{"typeIdentifier":"t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":54831,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2925:52:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":54817,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"2915:9:82","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":54832,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2915:63:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"id":54840,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"~","prefix":true,"src":"2981:23:82","subExpression":{"arguments":[{"arguments":[{"hexValue":"30786666","id":54837,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2998:4:82","typeDescriptions":{"typeIdentifier":"t_rational_255_by_1","typeString":"int_const 255"},"value":"0xff"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_255_by_1","typeString":"int_const 255"}],"id":54836,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2990:7:82","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":54835,"name":"uint256","nodeType":"ElementaryTypeName","src":"2990:7:82","typeDescriptions":{}}},"id":54838,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2990:13:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":54834,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2982:7:82","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":54833,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2982:7:82","typeDescriptions":{}}},"id":54839,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2982:22:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"2915:89:82","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"2900:104:82"},{"expression":{"id":54850,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"arguments":[{"id":54846,"name":"SLOT_STORAGE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54625,"src":"3042:12:82","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":54843,"name":"StorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42719,"src":"3015:11:82","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_StorageSlot_$42719_$","typeString":"type(library StorageSlot)"}},"id":54845,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3027:14:82","memberName":"getBytes32Slot","nodeType":"MemberAccess","referencedDeclaration":42457,"src":"3015:26:82","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_struct$_Bytes32Slot_$42412_storage_ptr_$","typeString":"function (bytes32) pure returns (struct StorageSlot.Bytes32Slot storage pointer)"}},"id":54847,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3015:40:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Slot_$42412_storage_ptr","typeString":"struct StorageSlot.Bytes32Slot storage pointer"}},"id":54848,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"3056:5:82","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":42411,"src":"3015:46:82","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":54849,"name":"slot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54816,"src":"3064:4:82","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"3015:53:82","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":54851,"nodeType":"ExpressionStatement","src":"3015:53:82"},{"eventCall":{"arguments":[],"expression":{"argumentTypes":[],"id":54852,"name":"StorageSlotChanged","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53822,"src":"3084:18:82","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$__$returns$__$","typeString":"function ()"}},"id":54853,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3084:20:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":54854,"nodeType":"EmitStatement","src":"3079:25:82"}]},"baseFunctions":[53842],"functionSelector":"5686cad5","implemented":true,"kind":"function","modifiers":[{"id":54813,"kind":"modifierInvocation","modifierName":{"id":54812,"name":"onlyOwner","nameLocations":["2880:9:82"],"nodeType":"IdentifierPath","referencedDeclaration":38919,"src":"2880:9:82"},"nodeType":"ModifierInvocation","src":"2880:9:82"}],"name":"setStorageSlot","nameLocation":"2833:14:82","parameters":{"id":54811,"nodeType":"ParameterList","parameters":[{"constant":false,"id":54810,"mutability":"mutable","name":"namespace","nameLocation":"2862:9:82","nodeType":"VariableDeclaration","scope":54856,"src":"2848:23:82","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":54809,"name":"string","nodeType":"ElementaryTypeName","src":"2848:6:82","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"2847:25:82"},"returnParameters":{"id":54814,"nodeType":"ParameterList","parameters":[],"src":"2890:0:82"},"scope":56295,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":54871,"nodeType":"FunctionDefinition","src":"3117:153:82","nodes":[],"body":{"id":54870,"nodeType":"Block","src":"3175:95:82","nodes":[],"statements":[{"assignments":[54863],"declarations":[{"constant":false,"id":54863,"mutability":"mutable","name":"router","nameLocation":"3201:6:82","nodeType":"VariableDeclaration","scope":54870,"src":"3185:22:82","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53731_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":54862,"nodeType":"UserDefinedTypeName","pathNode":{"id":54861,"name":"Storage","nameLocations":["3185:7:82"],"nodeType":"IdentifierPath","referencedDeclaration":53731,"src":"3185:7:82"},"referencedDeclaration":53731,"src":"3185:7:82","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53731_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"}],"id":54866,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":54864,"name":"_getStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56294,"src":"3210:11:82","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$53731_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":54865,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3210:13:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53731_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"3185:38:82"},{"expression":{"expression":{"id":54867,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54863,"src":"3240:6:82","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53731_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":54868,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3247:16:82","memberName":"genesisBlockHash","nodeType":"MemberAccess","referencedDeclaration":53696,"src":"3240:23:82","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":54860,"id":54869,"nodeType":"Return","src":"3233:30:82"}]},"baseFunctions":[53847],"functionSelector":"28e24b3d","implemented":true,"kind":"function","modifiers":[],"name":"genesisBlockHash","nameLocation":"3126:16:82","parameters":{"id":54857,"nodeType":"ParameterList","parameters":[],"src":"3142:2:82"},"returnParameters":{"id":54860,"nodeType":"ParameterList","parameters":[{"constant":false,"id":54859,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":54871,"src":"3166:7:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":54858,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3166:7:82","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"3165:9:82"},"scope":56295,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":54886,"nodeType":"FunctionDefinition","src":"3276:167:82","nodes":[],"body":{"id":54885,"nodeType":"Block","src":"3341:102:82","nodes":[],"statements":[{"assignments":[54878],"declarations":[{"constant":false,"id":54878,"mutability":"mutable","name":"router","nameLocation":"3367:6:82","nodeType":"VariableDeclaration","scope":54885,"src":"3351:22:82","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53731_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":54877,"nodeType":"UserDefinedTypeName","pathNode":{"id":54876,"name":"Storage","nameLocations":["3351:7:82"],"nodeType":"IdentifierPath","referencedDeclaration":53731,"src":"3351:7:82"},"referencedDeclaration":53731,"src":"3351:7:82","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53731_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"}],"id":54881,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":54879,"name":"_getStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56294,"src":"3376:11:82","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$53731_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":54880,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3376:13:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53731_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"3351:38:82"},{"expression":{"expression":{"id":54882,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54878,"src":"3406:6:82","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53731_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":54883,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3413:23:82","memberName":"lastBlockCommitmentHash","nodeType":"MemberAccess","referencedDeclaration":53704,"src":"3406:30:82","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":54875,"id":54884,"nodeType":"Return","src":"3399:37:82"}]},"baseFunctions":[53852],"functionSelector":"2dacfb69","implemented":true,"kind":"function","modifiers":[],"name":"lastBlockCommitmentHash","nameLocation":"3285:23:82","parameters":{"id":54872,"nodeType":"ParameterList","parameters":[],"src":"3308:2:82"},"returnParameters":{"id":54875,"nodeType":"ParameterList","parameters":[{"constant":false,"id":54874,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":54886,"src":"3332:7:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":54873,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3332:7:82","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"3331:9:82"},"scope":56295,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":54901,"nodeType":"FunctionDefinition","src":"3449:143:82","nodes":[],"body":{"id":54900,"nodeType":"Block","src":"3502:90:82","nodes":[],"statements":[{"assignments":[54893],"declarations":[{"constant":false,"id":54893,"mutability":"mutable","name":"router","nameLocation":"3528:6:82","nodeType":"VariableDeclaration","scope":54900,"src":"3512:22:82","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53731_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":54892,"nodeType":"UserDefinedTypeName","pathNode":{"id":54891,"name":"Storage","nameLocations":["3512:7:82"],"nodeType":"IdentifierPath","referencedDeclaration":53731,"src":"3512:7:82"},"referencedDeclaration":53731,"src":"3512:7:82","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53731_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"}],"id":54896,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":54894,"name":"_getStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56294,"src":"3537:11:82","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$53731_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":54895,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3537:13:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53731_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"3512:38:82"},{"expression":{"expression":{"id":54897,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54893,"src":"3567:6:82","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53731_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":54898,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3574:11:82","memberName":"wrappedVara","nodeType":"MemberAccess","referencedDeclaration":53702,"src":"3567:18:82","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":54890,"id":54899,"nodeType":"Return","src":"3560:25:82"}]},"baseFunctions":[53857],"functionSelector":"88f50cf0","implemented":true,"kind":"function","modifiers":[],"name":"wrappedVara","nameLocation":"3458:11:82","parameters":{"id":54887,"nodeType":"ParameterList","parameters":[],"src":"3469:2:82"},"returnParameters":{"id":54890,"nodeType":"ParameterList","parameters":[{"constant":false,"id":54889,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":54901,"src":"3493:7:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":54888,"name":"address","nodeType":"ElementaryTypeName","src":"3493:7:82","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3492:9:82"},"scope":56295,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":54916,"nodeType":"FunctionDefinition","src":"3598:143:82","nodes":[],"body":{"id":54915,"nodeType":"Block","src":"3651:90:82","nodes":[],"statements":[{"assignments":[54908],"declarations":[{"constant":false,"id":54908,"mutability":"mutable","name":"router","nameLocation":"3677:6:82","nodeType":"VariableDeclaration","scope":54915,"src":"3661:22:82","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53731_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":54907,"nodeType":"UserDefinedTypeName","pathNode":{"id":54906,"name":"Storage","nameLocations":["3661:7:82"],"nodeType":"IdentifierPath","referencedDeclaration":53731,"src":"3661:7:82"},"referencedDeclaration":53731,"src":"3661:7:82","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53731_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"}],"id":54911,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":54909,"name":"_getStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56294,"src":"3686:11:82","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$53731_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":54910,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3686:13:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53731_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"3661:38:82"},{"expression":{"expression":{"id":54912,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54908,"src":"3716:6:82","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53731_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":54913,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3723:11:82","memberName":"mirrorProxy","nodeType":"MemberAccess","referencedDeclaration":53700,"src":"3716:18:82","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":54905,"id":54914,"nodeType":"Return","src":"3709:25:82"}]},"baseFunctions":[53862],"functionSelector":"78ee5dec","implemented":true,"kind":"function","modifiers":[],"name":"mirrorProxy","nameLocation":"3607:11:82","parameters":{"id":54902,"nodeType":"ParameterList","parameters":[],"src":"3618:2:82"},"returnParameters":{"id":54905,"nodeType":"ParameterList","parameters":[{"constant":false,"id":54904,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":54916,"src":"3642:7:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":54903,"name":"address","nodeType":"ElementaryTypeName","src":"3642:7:82","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3641:9:82"},"scope":56295,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":54931,"nodeType":"FunctionDefinition","src":"3747:133:82","nodes":[],"body":{"id":54930,"nodeType":"Block","src":"3795:85:82","nodes":[],"statements":[{"assignments":[54923],"declarations":[{"constant":false,"id":54923,"mutability":"mutable","name":"router","nameLocation":"3821:6:82","nodeType":"VariableDeclaration","scope":54930,"src":"3805:22:82","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53731_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":54922,"nodeType":"UserDefinedTypeName","pathNode":{"id":54921,"name":"Storage","nameLocations":["3805:7:82"],"nodeType":"IdentifierPath","referencedDeclaration":53731,"src":"3805:7:82"},"referencedDeclaration":53731,"src":"3805:7:82","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53731_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"}],"id":54926,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":54924,"name":"_getStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56294,"src":"3830:11:82","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$53731_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":54925,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3830:13:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53731_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"3805:38:82"},{"expression":{"expression":{"id":54927,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54923,"src":"3860:6:82","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53731_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":54928,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3867:6:82","memberName":"mirror","nodeType":"MemberAccess","referencedDeclaration":53698,"src":"3860:13:82","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":54920,"id":54929,"nodeType":"Return","src":"3853:20:82"}]},"baseFunctions":[53867],"functionSelector":"444d9172","implemented":true,"kind":"function","modifiers":[],"name":"mirror","nameLocation":"3756:6:82","parameters":{"id":54917,"nodeType":"ParameterList","parameters":[],"src":"3762:2:82"},"returnParameters":{"id":54920,"nodeType":"ParameterList","parameters":[{"constant":false,"id":54919,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":54931,"src":"3786:7:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":54918,"name":"address","nodeType":"ElementaryTypeName","src":"3786:7:82","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3785:9:82"},"scope":56295,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":54951,"nodeType":"FunctionDefinition","src":"3886:143:82","nodes":[],"body":{"id":54950,"nodeType":"Block","src":"3941:88:82","nodes":[],"statements":[{"assignments":[54940],"declarations":[{"constant":false,"id":54940,"mutability":"mutable","name":"router","nameLocation":"3967:6:82","nodeType":"VariableDeclaration","scope":54950,"src":"3951:22:82","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53731_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":54939,"nodeType":"UserDefinedTypeName","pathNode":{"id":54938,"name":"Storage","nameLocations":["3951:7:82"],"nodeType":"IdentifierPath","referencedDeclaration":53731,"src":"3951:7:82"},"referencedDeclaration":53731,"src":"3951:7:82","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53731_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"}],"id":54943,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":54941,"name":"_getStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56294,"src":"3976:11:82","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$53731_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":54942,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3976:13:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53731_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"3951:38:82"},{"expression":{"id":54948,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":54944,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54940,"src":"3999:6:82","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53731_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":54946,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"4006:6:82","memberName":"mirror","nodeType":"MemberAccess","referencedDeclaration":53698,"src":"3999:13:82","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":54947,"name":"_mirror","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54933,"src":"4015:7:82","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3999:23:82","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":54949,"nodeType":"ExpressionStatement","src":"3999:23:82"}]},"baseFunctions":[53872],"functionSelector":"3d43b418","implemented":true,"kind":"function","modifiers":[{"id":54936,"kind":"modifierInvocation","modifierName":{"id":54935,"name":"onlyOwner","nameLocations":["3931:9:82"],"nodeType":"IdentifierPath","referencedDeclaration":38919,"src":"3931:9:82"},"nodeType":"ModifierInvocation","src":"3931:9:82"}],"name":"setMirror","nameLocation":"3895:9:82","parameters":{"id":54934,"nodeType":"ParameterList","parameters":[{"constant":false,"id":54933,"mutability":"mutable","name":"_mirror","nameLocation":"3913:7:82","nodeType":"VariableDeclaration","scope":54951,"src":"3905:15:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":54932,"name":"address","nodeType":"ElementaryTypeName","src":"3905:7:82","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3904:17:82"},"returnParameters":{"id":54937,"nodeType":"ParameterList","parameters":[],"src":"3941:0:82"},"scope":56295,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":54966,"nodeType":"FunctionDefinition","src":"4085:159:82","nodes":[],"body":{"id":54965,"nodeType":"Block","src":"4146:98:82","nodes":[],"statements":[{"assignments":[54958],"declarations":[{"constant":false,"id":54958,"mutability":"mutable","name":"router","nameLocation":"4172:6:82","nodeType":"VariableDeclaration","scope":54965,"src":"4156:22:82","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53731_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":54957,"nodeType":"UserDefinedTypeName","pathNode":{"id":54956,"name":"Storage","nameLocations":["4156:7:82"],"nodeType":"IdentifierPath","referencedDeclaration":53731,"src":"4156:7:82"},"referencedDeclaration":53731,"src":"4156:7:82","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53731_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"}],"id":54961,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":54959,"name":"_getStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56294,"src":"4181:11:82","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$53731_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":54960,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4181:13:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53731_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"4156:38:82"},{"expression":{"expression":{"id":54962,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54958,"src":"4211:6:82","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53731_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":54963,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4218:19:82","memberName":"validatedCodesCount","nodeType":"MemberAccess","referencedDeclaration":53724,"src":"4211:26:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":54955,"id":54964,"nodeType":"Return","src":"4204:33:82"}]},"baseFunctions":[53877],"functionSelector":"007a32e7","implemented":true,"kind":"function","modifiers":[],"name":"validatedCodesCount","nameLocation":"4094:19:82","parameters":{"id":54952,"nodeType":"ParameterList","parameters":[],"src":"4113:2:82"},"returnParameters":{"id":54955,"nodeType":"ParameterList","parameters":[{"constant":false,"id":54954,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":54966,"src":"4137:7:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":54953,"name":"uint256","nodeType":"ElementaryTypeName","src":"4137:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4136:9:82"},"scope":56295,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":54986,"nodeType":"FunctionDefinition","src":"4250:159:82","nodes":[],"body":{"id":54985,"nodeType":"Block","src":"4317:92:82","nodes":[],"statements":[{"assignments":[54976],"declarations":[{"constant":false,"id":54976,"mutability":"mutable","name":"router","nameLocation":"4343:6:82","nodeType":"VariableDeclaration","scope":54985,"src":"4327:22:82","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53731_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":54975,"nodeType":"UserDefinedTypeName","pathNode":{"id":54974,"name":"Storage","nameLocations":["4327:7:82"],"nodeType":"IdentifierPath","referencedDeclaration":53731,"src":"4327:7:82"},"referencedDeclaration":53731,"src":"4327:7:82","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53731_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"}],"id":54979,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":54977,"name":"_getStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56294,"src":"4352:11:82","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$53731_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":54978,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4352:13:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53731_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"4327:38:82"},{"expression":{"baseExpression":{"expression":{"id":54980,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54976,"src":"4382:6:82","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53731_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":54981,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4389:5:82","memberName":"codes","nodeType":"MemberAccess","referencedDeclaration":53722,"src":"4382:12:82","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_enum$_CodeState_$53735_$","typeString":"mapping(bytes32 => enum IRouter.CodeState)"}},"id":54983,"indexExpression":{"id":54982,"name":"codeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54968,"src":"4395:6:82","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4382:20:82","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$53735","typeString":"enum IRouter.CodeState"}},"functionReturnParameters":54973,"id":54984,"nodeType":"Return","src":"4375:27:82"}]},"baseFunctions":[53885],"functionSelector":"c13911e8","implemented":true,"kind":"function","modifiers":[],"name":"codeState","nameLocation":"4259:9:82","parameters":{"id":54969,"nodeType":"ParameterList","parameters":[{"constant":false,"id":54968,"mutability":"mutable","name":"codeId","nameLocation":"4277:6:82","nodeType":"VariableDeclaration","scope":54986,"src":"4269:14:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":54967,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4269:7:82","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"4268:16:82"},"returnParameters":{"id":54973,"nodeType":"ParameterList","parameters":[{"constant":false,"id":54972,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":54986,"src":"4306:9:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$53735","typeString":"enum IRouter.CodeState"},"typeName":{"id":54971,"nodeType":"UserDefinedTypeName","pathNode":{"id":54970,"name":"CodeState","nameLocations":["4306:9:82"],"nodeType":"IdentifierPath","referencedDeclaration":53735,"src":"4306:9:82"},"referencedDeclaration":53735,"src":"4306:9:82","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$53735","typeString":"enum IRouter.CodeState"}},"visibility":"internal"}],"src":"4305:11:82"},"scope":56295,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":55001,"nodeType":"FunctionDefinition","src":"4415:147:82","nodes":[],"body":{"id":55000,"nodeType":"Block","src":"4470:92:82","nodes":[],"statements":[{"assignments":[54993],"declarations":[{"constant":false,"id":54993,"mutability":"mutable","name":"router","nameLocation":"4496:6:82","nodeType":"VariableDeclaration","scope":55000,"src":"4480:22:82","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53731_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":54992,"nodeType":"UserDefinedTypeName","pathNode":{"id":54991,"name":"Storage","nameLocations":["4480:7:82"],"nodeType":"IdentifierPath","referencedDeclaration":53731,"src":"4480:7:82"},"referencedDeclaration":53731,"src":"4480:7:82","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53731_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"}],"id":54996,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":54994,"name":"_getStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56294,"src":"4505:11:82","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$53731_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":54995,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4505:13:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53731_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"4480:38:82"},{"expression":{"expression":{"id":54997,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54993,"src":"4535:6:82","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53731_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":54998,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4542:13:82","memberName":"programsCount","nodeType":"MemberAccess","referencedDeclaration":53730,"src":"4535:20:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":54990,"id":54999,"nodeType":"Return","src":"4528:27:82"}]},"baseFunctions":[53890],"functionSelector":"96a2ddfa","implemented":true,"kind":"function","modifiers":[],"name":"programsCount","nameLocation":"4424:13:82","parameters":{"id":54987,"nodeType":"ParameterList","parameters":[],"src":"4437:2:82"},"returnParameters":{"id":54990,"nodeType":"ParameterList","parameters":[{"constant":false,"id":54989,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":55001,"src":"4461:7:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":54988,"name":"uint256","nodeType":"ElementaryTypeName","src":"4461:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4460:9:82"},"scope":56295,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":55020,"nodeType":"FunctionDefinition","src":"4568:166:82","nodes":[],"body":{"id":55019,"nodeType":"Block","src":"4638:96:82","nodes":[],"statements":[{"assignments":[55010],"declarations":[{"constant":false,"id":55010,"mutability":"mutable","name":"router","nameLocation":"4664:6:82","nodeType":"VariableDeclaration","scope":55019,"src":"4648:22:82","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53731_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":55009,"nodeType":"UserDefinedTypeName","pathNode":{"id":55008,"name":"Storage","nameLocations":["4648:7:82"],"nodeType":"IdentifierPath","referencedDeclaration":53731,"src":"4648:7:82"},"referencedDeclaration":53731,"src":"4648:7:82","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53731_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"}],"id":55013,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":55011,"name":"_getStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56294,"src":"4673:11:82","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$53731_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":55012,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4673:13:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53731_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"4648:38:82"},{"expression":{"baseExpression":{"expression":{"id":55014,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55010,"src":"4703:6:82","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53731_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":55015,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4710:8:82","memberName":"programs","nodeType":"MemberAccess","referencedDeclaration":53728,"src":"4703:15:82","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bytes32_$","typeString":"mapping(address => bytes32)"}},"id":55017,"indexExpression":{"id":55016,"name":"program","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55003,"src":"4719:7:82","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4703:24:82","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":55007,"id":55018,"nodeType":"Return","src":"4696:31:82"}]},"baseFunctions":[53898],"functionSelector":"9067088e","implemented":true,"kind":"function","modifiers":[],"name":"programCodeId","nameLocation":"4577:13:82","parameters":{"id":55004,"nodeType":"ParameterList","parameters":[{"constant":false,"id":55003,"mutability":"mutable","name":"program","nameLocation":"4599:7:82","nodeType":"VariableDeclaration","scope":55020,"src":"4591:15:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":55002,"name":"address","nodeType":"ElementaryTypeName","src":"4591:7:82","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4590:17:82"},"returnParameters":{"id":55007,"nodeType":"ParameterList","parameters":[{"constant":false,"id":55006,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":55020,"src":"4629:7:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":55005,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4629:7:82","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"4628:9:82"},"scope":56295,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":55035,"nodeType":"FunctionDefinition","src":"4785:173:82","nodes":[],"body":{"id":55034,"nodeType":"Block","src":"4853:105:82","nodes":[],"statements":[{"assignments":[55027],"declarations":[{"constant":false,"id":55027,"mutability":"mutable","name":"router","nameLocation":"4879:6:82","nodeType":"VariableDeclaration","scope":55034,"src":"4863:22:82","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53731_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":55026,"nodeType":"UserDefinedTypeName","pathNode":{"id":55025,"name":"Storage","nameLocations":["4863:7:82"],"nodeType":"IdentifierPath","referencedDeclaration":53731,"src":"4863:7:82"},"referencedDeclaration":53731,"src":"4863:7:82","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53731_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"}],"id":55030,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":55028,"name":"_getStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56294,"src":"4888:11:82","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$53731_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":55029,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4888:13:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53731_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"4863:38:82"},{"expression":{"expression":{"id":55031,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55027,"src":"4918:6:82","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53731_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":55032,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4925:26:82","memberName":"signingThresholdPercentage","nodeType":"MemberAccess","referencedDeclaration":53706,"src":"4918:33:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":55024,"id":55033,"nodeType":"Return","src":"4911:40:82"}]},"baseFunctions":[53903],"functionSelector":"efd81abc","implemented":true,"kind":"function","modifiers":[],"name":"signingThresholdPercentage","nameLocation":"4794:26:82","parameters":{"id":55021,"nodeType":"ParameterList","parameters":[],"src":"4820:2:82"},"returnParameters":{"id":55024,"nodeType":"ParameterList","parameters":[{"constant":false,"id":55023,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":55035,"src":"4844:7:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":55022,"name":"uint256","nodeType":"ElementaryTypeName","src":"4844:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4843:9:82"},"scope":56295,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":55052,"nodeType":"FunctionDefinition","src":"4964:204:82","nodes":[],"body":{"id":55051,"nodeType":"Block","src":"5025:143:82","nodes":[],"statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":55049,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":55046,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":55044,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":55040,"name":"validatorsCount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55068,"src":"5097:15:82","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":55041,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5097:17:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":55042,"name":"signingThresholdPercentage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55035,"src":"5117:26:82","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":55043,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5117:28:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5097:48:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"39393939","id":55045,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5148:4:82","typeDescriptions":{"typeIdentifier":"t_rational_9999_by_1","typeString":"int_const 9999"},"value":"9999"},"src":"5097:55:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":55047,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"5096:57:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"3130303030","id":55048,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5156:5:82","typeDescriptions":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"},"value":"10000"},"src":"5096:65:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":55039,"id":55050,"nodeType":"Return","src":"5089:72:82"}]},"baseFunctions":[53908],"functionSelector":"edc87225","implemented":true,"kind":"function","modifiers":[],"name":"validatorsThreshold","nameLocation":"4973:19:82","parameters":{"id":55036,"nodeType":"ParameterList","parameters":[],"src":"4992:2:82"},"returnParameters":{"id":55039,"nodeType":"ParameterList","parameters":[{"constant":false,"id":55038,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":55052,"src":"5016:7:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":55037,"name":"uint256","nodeType":"ElementaryTypeName","src":"5016:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5015:9:82"},"scope":56295,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":55068,"nodeType":"FunctionDefinition","src":"5174:157:82","nodes":[],"body":{"id":55067,"nodeType":"Block","src":"5231:100:82","nodes":[],"statements":[{"assignments":[55059],"declarations":[{"constant":false,"id":55059,"mutability":"mutable","name":"router","nameLocation":"5257:6:82","nodeType":"VariableDeclaration","scope":55067,"src":"5241:22:82","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53731_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":55058,"nodeType":"UserDefinedTypeName","pathNode":{"id":55057,"name":"Storage","nameLocations":["5241:7:82"],"nodeType":"IdentifierPath","referencedDeclaration":53731,"src":"5241:7:82"},"referencedDeclaration":53731,"src":"5241:7:82","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53731_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"}],"id":55062,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":55060,"name":"_getStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56294,"src":"5266:11:82","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$53731_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":55061,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5266:13:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53731_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"5241:38:82"},{"expression":{"expression":{"expression":{"id":55063,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55059,"src":"5296:6:82","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53731_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":55064,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5303:14:82","memberName":"validatorsKeys","nodeType":"MemberAccess","referencedDeclaration":53717,"src":"5296:21:82","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":55065,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5318:6:82","memberName":"length","nodeType":"MemberAccess","src":"5296:28:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":55056,"id":55066,"nodeType":"Return","src":"5289:35:82"}]},"baseFunctions":[53913],"functionSelector":"ed612f8c","implemented":true,"kind":"function","modifiers":[],"name":"validatorsCount","nameLocation":"5183:15:82","parameters":{"id":55053,"nodeType":"ParameterList","parameters":[],"src":"5198:2:82"},"returnParameters":{"id":55056,"nodeType":"ParameterList","parameters":[{"constant":false,"id":55055,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":55068,"src":"5222:7:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":55054,"name":"uint256","nodeType":"ElementaryTypeName","src":"5222:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5221:9:82"},"scope":56295,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":55087,"nodeType":"FunctionDefinition","src":"5337:171:82","nodes":[],"body":{"id":55086,"nodeType":"Block","src":"5408:100:82","nodes":[],"statements":[{"assignments":[55077],"declarations":[{"constant":false,"id":55077,"mutability":"mutable","name":"router","nameLocation":"5434:6:82","nodeType":"VariableDeclaration","scope":55086,"src":"5418:22:82","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53731_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":55076,"nodeType":"UserDefinedTypeName","pathNode":{"id":55075,"name":"Storage","nameLocations":["5418:7:82"],"nodeType":"IdentifierPath","referencedDeclaration":53731,"src":"5418:7:82"},"referencedDeclaration":53731,"src":"5418:7:82","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53731_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"}],"id":55080,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":55078,"name":"_getStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56294,"src":"5443:11:82","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$53731_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":55079,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5443:13:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53731_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"5418:38:82"},{"expression":{"baseExpression":{"expression":{"id":55081,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55077,"src":"5473:6:82","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53731_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":55082,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5480:10:82","memberName":"validators","nodeType":"MemberAccess","referencedDeclaration":53714,"src":"5473:17:82","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":55084,"indexExpression":{"id":55083,"name":"validator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55070,"src":"5491:9:82","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5473:28:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":55074,"id":55085,"nodeType":"Return","src":"5466:35:82"}]},"baseFunctions":[53920],"functionSelector":"8febbd59","implemented":true,"kind":"function","modifiers":[],"name":"validatorExists","nameLocation":"5346:15:82","parameters":{"id":55071,"nodeType":"ParameterList","parameters":[{"constant":false,"id":55070,"mutability":"mutable","name":"validator","nameLocation":"5370:9:82","nodeType":"VariableDeclaration","scope":55087,"src":"5362:17:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":55069,"name":"address","nodeType":"ElementaryTypeName","src":"5362:7:82","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5361:19:82"},"returnParameters":{"id":55074,"nodeType":"ParameterList","parameters":[{"constant":false,"id":55073,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":55087,"src":"5402:4:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":55072,"name":"bool","nodeType":"ElementaryTypeName","src":"5402:4:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"5401:6:82"},"scope":56295,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":55103,"nodeType":"FunctionDefinition","src":"5514:154:82","nodes":[],"body":{"id":55102,"nodeType":"Block","src":"5575:93:82","nodes":[],"statements":[{"assignments":[55095],"declarations":[{"constant":false,"id":55095,"mutability":"mutable","name":"router","nameLocation":"5601:6:82","nodeType":"VariableDeclaration","scope":55102,"src":"5585:22:82","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53731_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":55094,"nodeType":"UserDefinedTypeName","pathNode":{"id":55093,"name":"Storage","nameLocations":["5585:7:82"],"nodeType":"IdentifierPath","referencedDeclaration":53731,"src":"5585:7:82"},"referencedDeclaration":53731,"src":"5585:7:82","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53731_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"}],"id":55098,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":55096,"name":"_getStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56294,"src":"5610:11:82","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$53731_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":55097,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5610:13:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53731_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"5585:38:82"},{"expression":{"expression":{"id":55099,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55095,"src":"5640:6:82","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53731_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":55100,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5647:14:82","memberName":"validatorsKeys","nodeType":"MemberAccess","referencedDeclaration":53717,"src":"5640:21:82","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"functionReturnParameters":55092,"id":55101,"nodeType":"Return","src":"5633:28:82"}]},"baseFunctions":[53926],"functionSelector":"ca1e7819","implemented":true,"kind":"function","modifiers":[],"name":"validators","nameLocation":"5523:10:82","parameters":{"id":55088,"nodeType":"ParameterList","parameters":[],"src":"5533:2:82"},"returnParameters":{"id":55092,"nodeType":"ParameterList","parameters":[{"constant":false,"id":55091,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":55103,"src":"5557:16:82","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":55089,"name":"address","nodeType":"ElementaryTypeName","src":"5557:7:82","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":55090,"nodeType":"ArrayTypeName","src":"5557:9:82","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"src":"5556:18:82"},"scope":56295,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":55122,"nodeType":"FunctionDefinition","src":"5731:209:82","nodes":[],"body":{"id":55121,"nodeType":"Block","src":"5819:121:82","nodes":[],"statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":55111,"name":"_cleanValidators","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56226,"src":"5829:16:82","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":55112,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5829:18:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":55113,"nodeType":"ExpressionStatement","src":"5829:18:82"},{"expression":{"arguments":[{"id":55115,"name":"validatorsAddressArray","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55106,"src":"5872:22:82","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}],"id":55114,"name":"_setValidators","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56281,"src":"5857:14:82","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_array$_t_address_$dyn_memory_ptr_$returns$__$","typeString":"function (address[] memory)"}},"id":55116,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5857:38:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":55117,"nodeType":"ExpressionStatement","src":"5857:38:82"},{"eventCall":{"arguments":[],"expression":{"argumentTypes":[],"id":55118,"name":"ValidatorsSetChanged","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53819,"src":"5911:20:82","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$__$returns$__$","typeString":"function ()"}},"id":55119,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5911:22:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":55120,"nodeType":"EmitStatement","src":"5906:27:82"}]},"baseFunctions":[53932],"functionSelector":"e71731e4","implemented":true,"kind":"function","modifiers":[{"id":55109,"kind":"modifierInvocation","modifierName":{"id":55108,"name":"onlyOwner","nameLocations":["5809:9:82"],"nodeType":"IdentifierPath","referencedDeclaration":38919,"src":"5809:9:82"},"nodeType":"ModifierInvocation","src":"5809:9:82"}],"name":"updateValidators","nameLocation":"5740:16:82","parameters":{"id":55107,"nodeType":"ParameterList","parameters":[{"constant":false,"id":55106,"mutability":"mutable","name":"validatorsAddressArray","nameLocation":"5776:22:82","nodeType":"VariableDeclaration","scope":55122,"src":"5757:41:82","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":55104,"name":"address","nodeType":"ElementaryTypeName","src":"5757:7:82","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":55105,"nodeType":"ArrayTypeName","src":"5757:9:82","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"src":"5756:43:82"},"returnParameters":{"id":55110,"nodeType":"ParameterList","parameters":[],"src":"5819:0:82"},"scope":56295,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":55137,"nodeType":"FunctionDefinition","src":"5994:140:82","nodes":[],"body":{"id":55136,"nodeType":"Block","src":"6045:89:82","nodes":[],"statements":[{"assignments":[55129],"declarations":[{"constant":false,"id":55129,"mutability":"mutable","name":"router","nameLocation":"6071:6:82","nodeType":"VariableDeclaration","scope":55136,"src":"6055:22:82","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53731_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":55128,"nodeType":"UserDefinedTypeName","pathNode":{"id":55127,"name":"Storage","nameLocations":["6055:7:82"],"nodeType":"IdentifierPath","referencedDeclaration":53731,"src":"6055:7:82"},"referencedDeclaration":53731,"src":"6055:7:82","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53731_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"}],"id":55132,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":55130,"name":"_getStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56294,"src":"6080:11:82","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$53731_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":55131,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6080:13:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53731_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"6055:38:82"},{"expression":{"expression":{"id":55133,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55129,"src":"6110:6:82","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53731_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":55134,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6117:10:82","memberName":"baseWeight","nodeType":"MemberAccess","referencedDeclaration":53708,"src":"6110:17:82","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"functionReturnParameters":55126,"id":55135,"nodeType":"Return","src":"6103:24:82"}]},"baseFunctions":[53937],"functionSelector":"d3fd6364","implemented":true,"kind":"function","modifiers":[],"name":"baseWeight","nameLocation":"6003:10:82","parameters":{"id":55123,"nodeType":"ParameterList","parameters":[],"src":"6013:2:82"},"returnParameters":{"id":55126,"nodeType":"ParameterList","parameters":[{"constant":false,"id":55125,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":55137,"src":"6037:6:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":55124,"name":"uint64","nodeType":"ElementaryTypeName","src":"6037:6:82","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"src":"6036:8:82"},"scope":56295,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":55161,"nodeType":"FunctionDefinition","src":"6140:204:82","nodes":[],"body":{"id":55160,"nodeType":"Block","src":"6202:142:82","nodes":[],"statements":[{"assignments":[55146],"declarations":[{"constant":false,"id":55146,"mutability":"mutable","name":"router","nameLocation":"6228:6:82","nodeType":"VariableDeclaration","scope":55160,"src":"6212:22:82","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53731_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":55145,"nodeType":"UserDefinedTypeName","pathNode":{"id":55144,"name":"Storage","nameLocations":["6212:7:82"],"nodeType":"IdentifierPath","referencedDeclaration":53731,"src":"6212:7:82"},"referencedDeclaration":53731,"src":"6212:7:82","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53731_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"}],"id":55149,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":55147,"name":"_getStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56294,"src":"6237:11:82","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$53731_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":55148,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6237:13:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53731_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"6212:38:82"},{"expression":{"id":55154,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":55150,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55146,"src":"6260:6:82","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53731_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":55152,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"6267:10:82","memberName":"baseWeight","nodeType":"MemberAccess","referencedDeclaration":53708,"src":"6260:17:82","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":55153,"name":"_baseWeight","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55139,"src":"6280:11:82","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"src":"6260:31:82","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"id":55155,"nodeType":"ExpressionStatement","src":"6260:31:82"},{"eventCall":{"arguments":[{"id":55157,"name":"_baseWeight","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55139,"src":"6325:11:82","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint64","typeString":"uint64"}],"id":55156,"name":"BaseWeightChanged","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53827,"src":"6307:17:82","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint64_$returns$__$","typeString":"function (uint64)"}},"id":55158,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6307:30:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":55159,"nodeType":"EmitStatement","src":"6302:35:82"}]},"baseFunctions":[53942],"functionSelector":"8028861a","implemented":true,"kind":"function","modifiers":[{"id":55142,"kind":"modifierInvocation","modifierName":{"id":55141,"name":"onlyOwner","nameLocations":["6192:9:82"],"nodeType":"IdentifierPath","referencedDeclaration":38919,"src":"6192:9:82"},"nodeType":"ModifierInvocation","src":"6192:9:82"}],"name":"setBaseWeight","nameLocation":"6149:13:82","parameters":{"id":55140,"nodeType":"ParameterList","parameters":[{"constant":false,"id":55139,"mutability":"mutable","name":"_baseWeight","nameLocation":"6170:11:82","nodeType":"VariableDeclaration","scope":55161,"src":"6163:18:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":55138,"name":"uint64","nodeType":"ElementaryTypeName","src":"6163:6:82","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"src":"6162:20:82"},"returnParameters":{"id":55143,"nodeType":"ParameterList","parameters":[],"src":"6202:0:82"},"scope":56295,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":55176,"nodeType":"FunctionDefinition","src":"6350:149:82","nodes":[],"body":{"id":55175,"nodeType":"Block","src":"6406:93:82","nodes":[],"statements":[{"assignments":[55168],"declarations":[{"constant":false,"id":55168,"mutability":"mutable","name":"router","nameLocation":"6432:6:82","nodeType":"VariableDeclaration","scope":55175,"src":"6416:22:82","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53731_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":55167,"nodeType":"UserDefinedTypeName","pathNode":{"id":55166,"name":"Storage","nameLocations":["6416:7:82"],"nodeType":"IdentifierPath","referencedDeclaration":53731,"src":"6416:7:82"},"referencedDeclaration":53731,"src":"6416:7:82","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53731_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"}],"id":55171,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":55169,"name":"_getStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56294,"src":"6441:11:82","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$53731_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":55170,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6441:13:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53731_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"6416:38:82"},{"expression":{"expression":{"id":55172,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55168,"src":"6471:6:82","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53731_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":55173,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6478:14:82","memberName":"valuePerWeight","nodeType":"MemberAccess","referencedDeclaration":53710,"src":"6471:21:82","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"functionReturnParameters":55165,"id":55174,"nodeType":"Return","src":"6464:28:82"}]},"baseFunctions":[53947],"functionSelector":"0834fecc","implemented":true,"kind":"function","modifiers":[],"name":"valuePerWeight","nameLocation":"6359:14:82","parameters":{"id":55162,"nodeType":"ParameterList","parameters":[],"src":"6373:2:82"},"returnParameters":{"id":55165,"nodeType":"ParameterList","parameters":[{"constant":false,"id":55164,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":55176,"src":"6397:7:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":55163,"name":"uint128","nodeType":"ElementaryTypeName","src":"6397:7:82","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"6396:9:82"},"scope":56295,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":55200,"nodeType":"FunctionDefinition","src":"6505:229:82","nodes":[],"body":{"id":55199,"nodeType":"Block","src":"6576:158:82","nodes":[],"statements":[{"assignments":[55185],"declarations":[{"constant":false,"id":55185,"mutability":"mutable","name":"router","nameLocation":"6602:6:82","nodeType":"VariableDeclaration","scope":55199,"src":"6586:22:82","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53731_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":55184,"nodeType":"UserDefinedTypeName","pathNode":{"id":55183,"name":"Storage","nameLocations":["6586:7:82"],"nodeType":"IdentifierPath","referencedDeclaration":53731,"src":"6586:7:82"},"referencedDeclaration":53731,"src":"6586:7:82","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53731_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"}],"id":55188,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":55186,"name":"_getStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56294,"src":"6611:11:82","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$53731_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":55187,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6611:13:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53731_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"6586:38:82"},{"expression":{"id":55193,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":55189,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55185,"src":"6634:6:82","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53731_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":55191,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"6641:14:82","memberName":"valuePerWeight","nodeType":"MemberAccess","referencedDeclaration":53710,"src":"6634:21:82","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":55192,"name":"_valuePerWeight","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55178,"src":"6658:15:82","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"src":"6634:39:82","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"id":55194,"nodeType":"ExpressionStatement","src":"6634:39:82"},{"eventCall":{"arguments":[{"id":55196,"name":"_valuePerWeight","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55178,"src":"6711:15:82","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint128","typeString":"uint128"}],"id":55195,"name":"ValuePerWeightChanged","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53832,"src":"6689:21:82","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint128_$returns$__$","typeString":"function (uint128)"}},"id":55197,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6689:38:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":55198,"nodeType":"EmitStatement","src":"6684:43:82"}]},"baseFunctions":[53952],"functionSelector":"a6bbbe1c","implemented":true,"kind":"function","modifiers":[{"id":55181,"kind":"modifierInvocation","modifierName":{"id":55180,"name":"onlyOwner","nameLocations":["6566:9:82"],"nodeType":"IdentifierPath","referencedDeclaration":38919,"src":"6566:9:82"},"nodeType":"ModifierInvocation","src":"6566:9:82"}],"name":"setValuePerWeight","nameLocation":"6514:17:82","parameters":{"id":55179,"nodeType":"ParameterList","parameters":[{"constant":false,"id":55178,"mutability":"mutable","name":"_valuePerWeight","nameLocation":"6540:15:82","nodeType":"VariableDeclaration","scope":55200,"src":"6532:23:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":55177,"name":"uint128","nodeType":"ElementaryTypeName","src":"6532:7:82","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"6531:25:82"},"returnParameters":{"id":55182,"nodeType":"ParameterList","parameters":[],"src":"6576:0:82"},"scope":56295,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":55215,"nodeType":"FunctionDefinition","src":"6740:113:82","nodes":[],"body":{"id":55214,"nodeType":"Block","src":"6789:64:82","nodes":[],"statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint128","typeString":"uint128"},"id":55212,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":55207,"name":"baseWeight","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55137,"src":"6814:10:82","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint64_$","typeString":"function () view returns (uint64)"}},"id":55208,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6814:12:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint64","typeString":"uint64"}],"id":55206,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6806:7:82","typeDescriptions":{"typeIdentifier":"t_type$_t_uint128_$","typeString":"type(uint128)"},"typeName":{"id":55205,"name":"uint128","nodeType":"ElementaryTypeName","src":"6806:7:82","typeDescriptions":{}}},"id":55209,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6806:21:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":55210,"name":"valuePerWeight","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55176,"src":"6830:14:82","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint128_$","typeString":"function () view returns (uint128)"}},"id":55211,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6830:16:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"src":"6806:40:82","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"functionReturnParameters":55204,"id":55213,"nodeType":"Return","src":"6799:47:82"}]},"baseFunctions":[53957],"functionSelector":"6ef25c3a","implemented":true,"kind":"function","modifiers":[],"name":"baseFee","nameLocation":"6749:7:82","parameters":{"id":55201,"nodeType":"ParameterList","parameters":[],"src":"6756:2:82"},"returnParameters":{"id":55204,"nodeType":"ParameterList","parameters":[{"constant":false,"id":55203,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":55215,"src":"6780:7:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":55202,"name":"uint128","nodeType":"ElementaryTypeName","src":"6780:7:82","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"6779:9:82"},"scope":56295,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":55267,"nodeType":"FunctionDefinition","src":"6889:453:82","nodes":[],"body":{"id":55266,"nodeType":"Block","src":"6965:377:82","nodes":[],"statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":55231,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":55225,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":55223,"name":"blobTxHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55219,"src":"6983:10:82","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":55224,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6997:1:82","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"6983:15:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":55230,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"hexValue":"30","id":55227,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7011:1:82","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":55226,"name":"blobhash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-29,"src":"7002:8:82","typeDescriptions":{"typeIdentifier":"t_function_blobhash_view$_t_uint256_$returns$_t_bytes32_$","typeString":"function (uint256) view returns (bytes32)"}},"id":55228,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7002:11:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":55229,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7017:1:82","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"7002:16:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"6983:35:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"626c6f6254784861736820636f756c646e277420626520666f756e64","id":55232,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"7020:30:82","typeDescriptions":{"typeIdentifier":"t_stringliteral_944fe86403884466c74284042289853a231d438ed298af2a81bff9b6914f84e1","typeString":"literal_string \"blobTxHash couldn't be found\""},"value":"blobTxHash couldn't be found"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_944fe86403884466c74284042289853a231d438ed298af2a81bff9b6914f84e1","typeString":"literal_string \"blobTxHash couldn't be found\""}],"id":55222,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"6975:7:82","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":55233,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6975:76:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":55234,"nodeType":"ExpressionStatement","src":"6975:76:82"},{"assignments":[55237],"declarations":[{"constant":false,"id":55237,"mutability":"mutable","name":"router","nameLocation":"7078:6:82","nodeType":"VariableDeclaration","scope":55266,"src":"7062:22:82","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53731_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":55236,"nodeType":"UserDefinedTypeName","pathNode":{"id":55235,"name":"Storage","nameLocations":["7062:7:82"],"nodeType":"IdentifierPath","referencedDeclaration":53731,"src":"7062:7:82"},"referencedDeclaration":53731,"src":"7062:7:82","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53731_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"}],"id":55240,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":55238,"name":"_getStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56294,"src":"7087:11:82","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$53731_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":55239,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7087:13:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53731_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"7062:38:82"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_enum$_CodeState_$53735","typeString":"enum IRouter.CodeState"},"id":55248,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"expression":{"id":55242,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55237,"src":"7119:6:82","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53731_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":55243,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7126:5:82","memberName":"codes","nodeType":"MemberAccess","referencedDeclaration":53722,"src":"7119:12:82","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_enum$_CodeState_$53735_$","typeString":"mapping(bytes32 => enum IRouter.CodeState)"}},"id":55245,"indexExpression":{"id":55244,"name":"codeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55217,"src":"7132:6:82","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7119:20:82","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$53735","typeString":"enum IRouter.CodeState"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":55246,"name":"CodeState","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53735,"src":"7143:9:82","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_CodeState_$53735_$","typeString":"type(enum IRouter.CodeState)"}},"id":55247,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"7153:7:82","memberName":"Unknown","nodeType":"MemberAccess","referencedDeclaration":53732,"src":"7143:17:82","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$53735","typeString":"enum IRouter.CodeState"}},"src":"7119:41:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"636f64652077697468207375636820696420616c726561647920726571756573746564206f722076616c696461746564","id":55249,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"7162:50:82","typeDescriptions":{"typeIdentifier":"t_stringliteral_86d0efc10a98e1b7506967b99e345a37d8ca52b6f212bb7eaafd6d43a903647b","typeString":"literal_string \"code with such id already requested or validated\""},"value":"code with such id already requested or validated"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_86d0efc10a98e1b7506967b99e345a37d8ca52b6f212bb7eaafd6d43a903647b","typeString":"literal_string \"code with such id already requested or validated\""}],"id":55241,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"7111:7:82","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":55250,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7111:102:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":55251,"nodeType":"ExpressionStatement","src":"7111:102:82"},{"expression":{"id":55259,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"id":55252,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55237,"src":"7224:6:82","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53731_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":55255,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7231:5:82","memberName":"codes","nodeType":"MemberAccess","referencedDeclaration":53722,"src":"7224:12:82","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_enum$_CodeState_$53735_$","typeString":"mapping(bytes32 => enum IRouter.CodeState)"}},"id":55256,"indexExpression":{"id":55254,"name":"codeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55217,"src":"7237:6:82","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"7224:20:82","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$53735","typeString":"enum IRouter.CodeState"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":55257,"name":"CodeState","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53735,"src":"7247:9:82","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_CodeState_$53735_$","typeString":"type(enum IRouter.CodeState)"}},"id":55258,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"7257:19:82","memberName":"ValidationRequested","nodeType":"MemberAccess","referencedDeclaration":53733,"src":"7247:29:82","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$53735","typeString":"enum IRouter.CodeState"}},"src":"7224:52:82","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$53735","typeString":"enum IRouter.CodeState"}},"id":55260,"nodeType":"ExpressionStatement","src":"7224:52:82"},{"eventCall":{"arguments":[{"id":55262,"name":"codeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55217,"src":"7316:6:82","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":55263,"name":"blobTxHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55219,"src":"7324:10:82","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":55261,"name":"CodeValidationRequested","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53802,"src":"7292:23:82","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$_t_bytes32_$returns$__$","typeString":"function (bytes32,bytes32)"}},"id":55264,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7292:43:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":55265,"nodeType":"EmitStatement","src":"7287:48:82"}]},"baseFunctions":[53964],"functionSelector":"1c149d8a","implemented":true,"kind":"function","modifiers":[],"name":"requestCodeValidation","nameLocation":"6898:21:82","parameters":{"id":55220,"nodeType":"ParameterList","parameters":[{"constant":false,"id":55217,"mutability":"mutable","name":"codeId","nameLocation":"6928:6:82","nodeType":"VariableDeclaration","scope":55267,"src":"6920:14:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":55216,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6920:7:82","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":55219,"mutability":"mutable","name":"blobTxHash","nameLocation":"6944:10:82","nodeType":"VariableDeclaration","scope":55267,"src":"6936:18:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":55218,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6936:7:82","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"6919:36:82"},"returnParameters":{"id":55221,"nodeType":"ParameterList","parameters":[],"src":"6965:0:82"},"scope":56295,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":55304,"nodeType":"FunctionDefinition","src":"7348:381:82","nodes":[],"body":{"id":55303,"nodeType":"Block","src":"7504:225:82","nodes":[],"statements":[{"assignments":[55281,55283],"declarations":[{"constant":false,"id":55281,"mutability":"mutable","name":"actorId","nameLocation":"7523:7:82","nodeType":"VariableDeclaration","scope":55303,"src":"7515:15:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":55280,"name":"address","nodeType":"ElementaryTypeName","src":"7515:7:82","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":55283,"mutability":"mutable","name":"executableBalance","nameLocation":"7540:17:82","nodeType":"VariableDeclaration","scope":55303,"src":"7532:25:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":55282,"name":"uint128","nodeType":"ElementaryTypeName","src":"7532:7:82","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"id":55289,"initialValue":{"arguments":[{"id":55285,"name":"codeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55269,"src":"7590:6:82","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":55286,"name":"salt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55271,"src":"7598:4:82","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":55287,"name":"_value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55275,"src":"7604:6:82","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint128","typeString":"uint128"}],"id":55284,"name":"_createProgramWithoutMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55624,"src":"7561:28:82","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$_t_bytes32_$_t_uint128_$returns$_t_address_$_t_uint128_$","typeString":"function (bytes32,bytes32,uint128) returns (address,uint128)"}},"id":55288,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7561:50:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_uint128_$","typeString":"tuple(address,uint128)"}},"nodeType":"VariableDeclarationStatement","src":"7514:97:82"},{"expression":{"arguments":[{"expression":{"id":55294,"name":"tx","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-26,"src":"7651:2:82","typeDescriptions":{"typeIdentifier":"t_magic_transaction","typeString":"tx"}},"id":55295,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7654:6:82","memberName":"origin","nodeType":"MemberAccess","src":"7651:9:82","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":55296,"name":"payload","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55273,"src":"7662:7:82","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},{"id":55297,"name":"_value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55275,"src":"7671:6:82","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"id":55298,"name":"executableBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55283,"src":"7679:17:82","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"},{"typeIdentifier":"t_uint128","typeString":"uint128"},{"typeIdentifier":"t_uint128","typeString":"uint128"}],"expression":{"arguments":[{"id":55291,"name":"actorId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55281,"src":"7630:7:82","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":55290,"name":"IMirror","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53648,"src":"7622:7:82","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IMirror_$53648_$","typeString":"type(contract IMirror)"}},"id":55292,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7622:16:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IMirror_$53648","typeString":"contract IMirror"}},"id":55293,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7639:11:82","memberName":"initMessage","nodeType":"MemberAccess","referencedDeclaration":53647,"src":"7622:28:82","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_uint128_$_t_uint128_$returns$__$","typeString":"function (address,bytes memory,uint128,uint128) external"}},"id":55299,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7622:75:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":55300,"nodeType":"ExpressionStatement","src":"7622:75:82"},{"expression":{"id":55301,"name":"actorId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55281,"src":"7715:7:82","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":55279,"id":55302,"nodeType":"Return","src":"7708:14:82"}]},"baseFunctions":[53977],"functionSelector":"8074b455","implemented":true,"kind":"function","modifiers":[],"name":"createProgram","nameLocation":"7357:13:82","parameters":{"id":55276,"nodeType":"ParameterList","parameters":[{"constant":false,"id":55269,"mutability":"mutable","name":"codeId","nameLocation":"7379:6:82","nodeType":"VariableDeclaration","scope":55304,"src":"7371:14:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":55268,"name":"bytes32","nodeType":"ElementaryTypeName","src":"7371:7:82","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":55271,"mutability":"mutable","name":"salt","nameLocation":"7395:4:82","nodeType":"VariableDeclaration","scope":55304,"src":"7387:12:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":55270,"name":"bytes32","nodeType":"ElementaryTypeName","src":"7387:7:82","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":55273,"mutability":"mutable","name":"payload","nameLocation":"7416:7:82","nodeType":"VariableDeclaration","scope":55304,"src":"7401:22:82","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":55272,"name":"bytes","nodeType":"ElementaryTypeName","src":"7401:5:82","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":55275,"mutability":"mutable","name":"_value","nameLocation":"7433:6:82","nodeType":"VariableDeclaration","scope":55304,"src":"7425:14:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":55274,"name":"uint128","nodeType":"ElementaryTypeName","src":"7425:7:82","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"7370:70:82"},"returnParameters":{"id":55279,"nodeType":"ParameterList","parameters":[{"constant":false,"id":55278,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":55304,"src":"7491:7:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":55277,"name":"address","nodeType":"ElementaryTypeName","src":"7491:7:82","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"7490:9:82"},"scope":56295,"stateMutability":"payable","virtual":false,"visibility":"external"},{"id":55362,"nodeType":"FunctionDefinition","src":"7735:596:82","nodes":[],"body":{"id":55361,"nodeType":"Block","src":"7951:380:82","nodes":[],"statements":[{"assignments":[55320,55322],"declarations":[{"constant":false,"id":55320,"mutability":"mutable","name":"actorId","nameLocation":"7970:7:82","nodeType":"VariableDeclaration","scope":55361,"src":"7962:15:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":55319,"name":"address","nodeType":"ElementaryTypeName","src":"7962:7:82","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":55322,"mutability":"mutable","name":"executableBalance","nameLocation":"7987:17:82","nodeType":"VariableDeclaration","scope":55361,"src":"7979:25:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":55321,"name":"uint128","nodeType":"ElementaryTypeName","src":"7979:7:82","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"id":55328,"initialValue":{"arguments":[{"id":55324,"name":"codeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55308,"src":"8037:6:82","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":55325,"name":"salt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55310,"src":"8045:4:82","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":55326,"name":"_value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55314,"src":"8051:6:82","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint128","typeString":"uint128"}],"id":55323,"name":"_createProgramWithoutMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55624,"src":"8008:28:82","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$_t_bytes32_$_t_uint128_$returns$_t_address_$_t_uint128_$","typeString":"function (bytes32,bytes32,uint128) returns (address,uint128)"}},"id":55327,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8008:50:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_uint128_$","typeString":"tuple(address,uint128)"}},"nodeType":"VariableDeclarationStatement","src":"7961:97:82"},{"assignments":[55331],"declarations":[{"constant":false,"id":55331,"mutability":"mutable","name":"mirrorInstance","nameLocation":"8077:14:82","nodeType":"VariableDeclaration","scope":55361,"src":"8069:22:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IMirror_$53648","typeString":"contract IMirror"},"typeName":{"id":55330,"nodeType":"UserDefinedTypeName","pathNode":{"id":55329,"name":"IMirror","nameLocations":["8069:7:82"],"nodeType":"IdentifierPath","referencedDeclaration":53648,"src":"8069:7:82"},"referencedDeclaration":53648,"src":"8069:7:82","typeDescriptions":{"typeIdentifier":"t_contract$_IMirror_$53648","typeString":"contract IMirror"}},"visibility":"internal"}],"id":55335,"initialValue":{"arguments":[{"id":55333,"name":"actorId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55320,"src":"8102:7:82","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":55332,"name":"IMirror","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53648,"src":"8094:7:82","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IMirror_$53648_$","typeString":"type(contract IMirror)"}},"id":55334,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8094:16:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IMirror_$53648","typeString":"contract IMirror"}},"nodeType":"VariableDeclarationStatement","src":"8069:41:82"},{"expression":{"arguments":[{"id":55339,"name":"decoderImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55306,"src":"8150:21:82","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"arguments":[{"id":55343,"name":"codeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55308,"src":"8200:6:82","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":55344,"name":"salt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55310,"src":"8208:4:82","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":55341,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"8183:3:82","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":55342,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"8187:12:82","memberName":"encodePacked","nodeType":"MemberAccess","src":"8183:16:82","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":55345,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8183:30:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":55340,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"8173:9:82","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":55346,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8173:41:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":55336,"name":"mirrorInstance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55331,"src":"8121:14:82","typeDescriptions":{"typeIdentifier":"t_contract$_IMirror_$53648","typeString":"contract IMirror"}},"id":55338,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8136:13:82","memberName":"createDecoder","nodeType":"MemberAccess","referencedDeclaration":53636,"src":"8121:28:82","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_bytes32_$returns$__$","typeString":"function (address,bytes32) external"}},"id":55347,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8121:94:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":55348,"nodeType":"ExpressionStatement","src":"8121:94:82"},{"expression":{"arguments":[{"expression":{"id":55352,"name":"tx","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-26,"src":"8253:2:82","typeDescriptions":{"typeIdentifier":"t_magic_transaction","typeString":"tx"}},"id":55353,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8256:6:82","memberName":"origin","nodeType":"MemberAccess","src":"8253:9:82","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":55354,"name":"payload","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55312,"src":"8264:7:82","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},{"id":55355,"name":"_value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55314,"src":"8273:6:82","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"id":55356,"name":"executableBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55322,"src":"8281:17:82","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"},{"typeIdentifier":"t_uint128","typeString":"uint128"},{"typeIdentifier":"t_uint128","typeString":"uint128"}],"expression":{"id":55349,"name":"mirrorInstance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55331,"src":"8226:14:82","typeDescriptions":{"typeIdentifier":"t_contract$_IMirror_$53648","typeString":"contract IMirror"}},"id":55351,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8241:11:82","memberName":"initMessage","nodeType":"MemberAccess","referencedDeclaration":53647,"src":"8226:26:82","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_uint128_$_t_uint128_$returns$__$","typeString":"function (address,bytes memory,uint128,uint128) external"}},"id":55357,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8226:73:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":55358,"nodeType":"ExpressionStatement","src":"8226:73:82"},{"expression":{"id":55359,"name":"actorId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55320,"src":"8317:7:82","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":55318,"id":55360,"nodeType":"Return","src":"8310:14:82"}]},"baseFunctions":[53992],"functionSelector":"666d124c","implemented":true,"kind":"function","modifiers":[],"name":"createProgramWithDecoder","nameLocation":"7744:24:82","parameters":{"id":55315,"nodeType":"ParameterList","parameters":[{"constant":false,"id":55306,"mutability":"mutable","name":"decoderImplementation","nameLocation":"7786:21:82","nodeType":"VariableDeclaration","scope":55362,"src":"7778:29:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":55305,"name":"address","nodeType":"ElementaryTypeName","src":"7778:7:82","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":55308,"mutability":"mutable","name":"codeId","nameLocation":"7825:6:82","nodeType":"VariableDeclaration","scope":55362,"src":"7817:14:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":55307,"name":"bytes32","nodeType":"ElementaryTypeName","src":"7817:7:82","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":55310,"mutability":"mutable","name":"salt","nameLocation":"7849:4:82","nodeType":"VariableDeclaration","scope":55362,"src":"7841:12:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":55309,"name":"bytes32","nodeType":"ElementaryTypeName","src":"7841:7:82","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":55312,"mutability":"mutable","name":"payload","nameLocation":"7878:7:82","nodeType":"VariableDeclaration","scope":55362,"src":"7863:22:82","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":55311,"name":"bytes","nodeType":"ElementaryTypeName","src":"7863:5:82","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":55314,"mutability":"mutable","name":"_value","nameLocation":"7903:6:82","nodeType":"VariableDeclaration","scope":55362,"src":"7895:14:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":55313,"name":"uint128","nodeType":"ElementaryTypeName","src":"7895:7:82","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"7768:147:82"},"returnParameters":{"id":55318,"nodeType":"ParameterList","parameters":[{"constant":false,"id":55317,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":55362,"src":"7942:7:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":55316,"name":"address","nodeType":"ElementaryTypeName","src":"7942:7:82","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"7941:9:82"},"scope":56295,"stateMutability":"payable","virtual":false,"visibility":"external"},{"id":55475,"nodeType":"FunctionDefinition","src":"8337:1117:82","nodes":[],"body":{"id":55474,"nodeType":"Block","src":"8444:1010:82","nodes":[],"statements":[{"assignments":[55374],"declarations":[{"constant":false,"id":55374,"mutability":"mutable","name":"router","nameLocation":"8470:6:82","nodeType":"VariableDeclaration","scope":55474,"src":"8454:22:82","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53731_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":55373,"nodeType":"UserDefinedTypeName","pathNode":{"id":55372,"name":"Storage","nameLocations":["8454:7:82"],"nodeType":"IdentifierPath","referencedDeclaration":53731,"src":"8454:7:82"},"referencedDeclaration":53731,"src":"8454:7:82","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53731_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"}],"id":55377,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":55375,"name":"_getStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56294,"src":"8479:11:82","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$53731_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":55376,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8479:13:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53731_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"8454:38:82"},{"assignments":[55379],"declarations":[{"constant":false,"id":55379,"mutability":"mutable","name":"codeCommetmentsHashes","nameLocation":"8516:21:82","nodeType":"VariableDeclaration","scope":55474,"src":"8503:34:82","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":55378,"name":"bytes","nodeType":"ElementaryTypeName","src":"8503:5:82","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":55380,"nodeType":"VariableDeclarationStatement","src":"8503:34:82"},{"body":{"id":55465,"nodeType":"Block","src":"8606:766:82","statements":[{"assignments":[55394],"declarations":[{"constant":false,"id":55394,"mutability":"mutable","name":"codeCommitment","nameLocation":"8644:14:82","nodeType":"VariableDeclaration","scope":55465,"src":"8620:38:82","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_CodeCommitment_$53740_calldata_ptr","typeString":"struct IRouter.CodeCommitment"},"typeName":{"id":55393,"nodeType":"UserDefinedTypeName","pathNode":{"id":55392,"name":"CodeCommitment","nameLocations":["8620:14:82"],"nodeType":"IdentifierPath","referencedDeclaration":53740,"src":"8620:14:82"},"referencedDeclaration":53740,"src":"8620:14:82","typeDescriptions":{"typeIdentifier":"t_struct$_CodeCommitment_$53740_storage_ptr","typeString":"struct IRouter.CodeCommitment"}},"visibility":"internal"}],"id":55398,"initialValue":{"baseExpression":{"id":55395,"name":"codeCommitmentsArray","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55366,"src":"8661:20:82","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_CodeCommitment_$53740_calldata_ptr_$dyn_calldata_ptr","typeString":"struct IRouter.CodeCommitment calldata[] calldata"}},"id":55397,"indexExpression":{"id":55396,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55382,"src":"8682:1:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"8661:23:82","typeDescriptions":{"typeIdentifier":"t_struct$_CodeCommitment_$53740_calldata_ptr","typeString":"struct IRouter.CodeCommitment calldata"}},"nodeType":"VariableDeclarationStatement","src":"8620:64:82"},{"assignments":[55400],"declarations":[{"constant":false,"id":55400,"mutability":"mutable","name":"codeCommitmentHash","nameLocation":"8707:18:82","nodeType":"VariableDeclaration","scope":55465,"src":"8699:26:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":55399,"name":"bytes32","nodeType":"ElementaryTypeName","src":"8699:7:82","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":55404,"initialValue":{"arguments":[{"id":55402,"name":"codeCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55394,"src":"8748:14:82","typeDescriptions":{"typeIdentifier":"t_struct$_CodeCommitment_$53740_calldata_ptr","typeString":"struct IRouter.CodeCommitment calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_CodeCommitment_$53740_calldata_ptr","typeString":"struct IRouter.CodeCommitment calldata"}],"id":55401,"name":"_codeCommitmentHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56152,"src":"8728:19:82","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_struct$_CodeCommitment_$53740_calldata_ptr_$returns$_t_bytes32_$","typeString":"function (struct IRouter.CodeCommitment calldata) pure returns (bytes32)"}},"id":55403,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8728:35:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"8699:64:82"},{"expression":{"id":55412,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":55405,"name":"codeCommetmentsHashes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55379,"src":"8778:21:82","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":55409,"name":"codeCommetmentsHashes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55379,"src":"8815:21:82","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":55410,"name":"codeCommitmentHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55400,"src":"8838:18:82","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":55407,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8802:5:82","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":55406,"name":"bytes","nodeType":"ElementaryTypeName","src":"8802:5:82","typeDescriptions":{}}},"id":55408,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8808:6:82","memberName":"concat","nodeType":"MemberAccess","src":"8802:12:82","typeDescriptions":{"typeIdentifier":"t_function_bytesconcat_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":55411,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8802:55:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"src":"8778:79:82","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":55413,"nodeType":"ExpressionStatement","src":"8778:79:82"},{"assignments":[55415],"declarations":[{"constant":false,"id":55415,"mutability":"mutable","name":"codeId","nameLocation":"8880:6:82","nodeType":"VariableDeclaration","scope":55465,"src":"8872:14:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":55414,"name":"bytes32","nodeType":"ElementaryTypeName","src":"8872:7:82","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":55418,"initialValue":{"expression":{"id":55416,"name":"codeCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55394,"src":"8889:14:82","typeDescriptions":{"typeIdentifier":"t_struct$_CodeCommitment_$53740_calldata_ptr","typeString":"struct IRouter.CodeCommitment calldata"}},"id":55417,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8904:2:82","memberName":"id","nodeType":"MemberAccess","referencedDeclaration":53737,"src":"8889:17:82","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"8872:34:82"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_enum$_CodeState_$53735","typeString":"enum IRouter.CodeState"},"id":55426,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"expression":{"id":55420,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55374,"src":"8928:6:82","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53731_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":55421,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8935:5:82","memberName":"codes","nodeType":"MemberAccess","referencedDeclaration":53722,"src":"8928:12:82","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_enum$_CodeState_$53735_$","typeString":"mapping(bytes32 => enum IRouter.CodeState)"}},"id":55423,"indexExpression":{"id":55422,"name":"codeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55415,"src":"8941:6:82","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"8928:20:82","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$53735","typeString":"enum IRouter.CodeState"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":55424,"name":"CodeState","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53735,"src":"8952:9:82","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_CodeState_$53735_$","typeString":"type(enum IRouter.CodeState)"}},"id":55425,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"8962:19:82","memberName":"ValidationRequested","nodeType":"MemberAccess","referencedDeclaration":53733,"src":"8952:29:82","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$53735","typeString":"enum IRouter.CodeState"}},"src":"8928:53:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"636f64652073686f756c642062652072657175657374656420666f722076616c69646174696f6e","id":55427,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"8983:41:82","typeDescriptions":{"typeIdentifier":"t_stringliteral_9f0f0146c5c6578abd878317fc7dbe7872a552fba3ce3a30a1e42dfd172e27f7","typeString":"literal_string \"code should be requested for validation\""},"value":"code should be requested for validation"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_9f0f0146c5c6578abd878317fc7dbe7872a552fba3ce3a30a1e42dfd172e27f7","typeString":"literal_string \"code should be requested for validation\""}],"id":55419,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"8920:7:82","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":55428,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8920:105:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":55429,"nodeType":"ExpressionStatement","src":"8920:105:82"},{"condition":{"expression":{"id":55430,"name":"codeCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55394,"src":"9044:14:82","typeDescriptions":{"typeIdentifier":"t_struct$_CodeCommitment_$53740_calldata_ptr","typeString":"struct IRouter.CodeCommitment calldata"}},"id":55431,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9059:5:82","memberName":"valid","nodeType":"MemberAccess","referencedDeclaration":53739,"src":"9044:20:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":55463,"nodeType":"Block","src":"9247:115:82","statements":[{"expression":{"id":55456,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"delete","prefix":true,"src":"9265:27:82","subExpression":{"baseExpression":{"expression":{"id":55452,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55374,"src":"9272:6:82","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53731_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":55453,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9279:5:82","memberName":"codes","nodeType":"MemberAccess","referencedDeclaration":53722,"src":"9272:12:82","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_enum$_CodeState_$53735_$","typeString":"mapping(bytes32 => enum IRouter.CodeState)"}},"id":55455,"indexExpression":{"id":55454,"name":"codeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55415,"src":"9285:6:82","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"9272:20:82","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$53735","typeString":"enum IRouter.CodeState"}},"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":55457,"nodeType":"ExpressionStatement","src":"9265:27:82"},{"eventCall":{"arguments":[{"id":55459,"name":"codeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55415,"src":"9333:6:82","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"hexValue":"66616c7365","id":55460,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"9341:5:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":55458,"name":"CodeGotValidated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53809,"src":"9316:16:82","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$_t_bool_$returns$__$","typeString":"function (bytes32,bool)"}},"id":55461,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9316:31:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":55462,"nodeType":"EmitStatement","src":"9311:36:82"}]},"id":55464,"nodeType":"IfStatement","src":"9040:322:82","trueBody":{"id":55451,"nodeType":"Block","src":"9066:175:82","statements":[{"expression":{"id":55439,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"id":55432,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55374,"src":"9084:6:82","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53731_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":55435,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9091:5:82","memberName":"codes","nodeType":"MemberAccess","referencedDeclaration":53722,"src":"9084:12:82","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_enum$_CodeState_$53735_$","typeString":"mapping(bytes32 => enum IRouter.CodeState)"}},"id":55436,"indexExpression":{"id":55434,"name":"codeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55415,"src":"9097:6:82","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"9084:20:82","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$53735","typeString":"enum IRouter.CodeState"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":55437,"name":"CodeState","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53735,"src":"9107:9:82","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_CodeState_$53735_$","typeString":"type(enum IRouter.CodeState)"}},"id":55438,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"9117:9:82","memberName":"Validated","nodeType":"MemberAccess","referencedDeclaration":53734,"src":"9107:19:82","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$53735","typeString":"enum IRouter.CodeState"}},"src":"9084:42:82","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$53735","typeString":"enum IRouter.CodeState"}},"id":55440,"nodeType":"ExpressionStatement","src":"9084:42:82"},{"expression":{"id":55444,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"9144:28:82","subExpression":{"expression":{"id":55441,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55374,"src":"9144:6:82","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53731_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":55443,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"9151:19:82","memberName":"validatedCodesCount","nodeType":"MemberAccess","referencedDeclaration":53724,"src":"9144:26:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":55445,"nodeType":"ExpressionStatement","src":"9144:28:82"},{"eventCall":{"arguments":[{"id":55447,"name":"codeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55415,"src":"9213:6:82","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"hexValue":"74727565","id":55448,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"9221:4:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":55446,"name":"CodeGotValidated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53809,"src":"9196:16:82","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$_t_bool_$returns$__$","typeString":"function (bytes32,bool)"}},"id":55449,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9196:30:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":55450,"nodeType":"EmitStatement","src":"9191:35:82"}]}}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":55388,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":55385,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55382,"src":"8568:1:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":55386,"name":"codeCommitmentsArray","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55366,"src":"8572:20:82","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_CodeCommitment_$53740_calldata_ptr_$dyn_calldata_ptr","typeString":"struct IRouter.CodeCommitment calldata[] calldata"}},"id":55387,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8593:6:82","memberName":"length","nodeType":"MemberAccess","src":"8572:27:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8568:31:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":55466,"initializationExpression":{"assignments":[55382],"declarations":[{"constant":false,"id":55382,"mutability":"mutable","name":"i","nameLocation":"8561:1:82","nodeType":"VariableDeclaration","scope":55466,"src":"8553:9:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":55381,"name":"uint256","nodeType":"ElementaryTypeName","src":"8553:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":55384,"initialValue":{"hexValue":"30","id":55383,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8565:1:82","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"8553:13:82"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":55390,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"8601:3:82","subExpression":{"id":55389,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55382,"src":"8601:1:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":55391,"nodeType":"ExpressionStatement","src":"8601:3:82"},"nodeType":"ForStatement","src":"8548:824:82"},{"expression":{"arguments":[{"arguments":[{"id":55469,"name":"codeCommetmentsHashes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55379,"src":"9412:21:82","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":55468,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"9402:9:82","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":55470,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9402:32:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":55471,"name":"signatures","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55369,"src":"9436:10:82","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr","typeString":"bytes calldata[] calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr","typeString":"bytes calldata[] calldata"}],"id":55467,"name":"_validateSignatures","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55713,"src":"9382:19:82","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$_t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr_$returns$__$","typeString":"function (bytes32,bytes calldata[] calldata) view"}},"id":55472,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9382:65:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":55473,"nodeType":"ExpressionStatement","src":"9382:65:82"}]},"baseFunctions":[54002],"functionSelector":"e97d3eb3","implemented":true,"kind":"function","modifiers":[],"name":"commitCodes","nameLocation":"8346:11:82","parameters":{"id":55370,"nodeType":"ParameterList","parameters":[{"constant":false,"id":55366,"mutability":"mutable","name":"codeCommitmentsArray","nameLocation":"8384:20:82","nodeType":"VariableDeclaration","scope":55475,"src":"8358:46:82","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_CodeCommitment_$53740_calldata_ptr_$dyn_calldata_ptr","typeString":"struct IRouter.CodeCommitment[]"},"typeName":{"baseType":{"id":55364,"nodeType":"UserDefinedTypeName","pathNode":{"id":55363,"name":"CodeCommitment","nameLocations":["8358:14:82"],"nodeType":"IdentifierPath","referencedDeclaration":53740,"src":"8358:14:82"},"referencedDeclaration":53740,"src":"8358:14:82","typeDescriptions":{"typeIdentifier":"t_struct$_CodeCommitment_$53740_storage_ptr","typeString":"struct IRouter.CodeCommitment"}},"id":55365,"nodeType":"ArrayTypeName","src":"8358:16:82","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_CodeCommitment_$53740_storage_$dyn_storage_ptr","typeString":"struct IRouter.CodeCommitment[]"}},"visibility":"internal"},{"constant":false,"id":55369,"mutability":"mutable","name":"signatures","nameLocation":"8423:10:82","nodeType":"VariableDeclaration","scope":55475,"src":"8406:27:82","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr","typeString":"bytes[]"},"typeName":{"baseType":{"id":55367,"name":"bytes","nodeType":"ElementaryTypeName","src":"8406:5:82","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"id":55368,"nodeType":"ArrayTypeName","src":"8406:7:82","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_storage_$dyn_storage_ptr","typeString":"bytes[]"}},"visibility":"internal"}],"src":"8357:77:82"},"returnParameters":{"id":55371,"nodeType":"ParameterList","parameters":[],"src":"8444:0:82"},"scope":56295,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":55533,"nodeType":"FunctionDefinition","src":"9460:604:82","nodes":[],"body":{"id":55532,"nodeType":"Block","src":"9603:461:82","nodes":[],"statements":[{"assignments":[55488],"declarations":[{"constant":false,"id":55488,"mutability":"mutable","name":"blockCommitmentsHashes","nameLocation":"9626:22:82","nodeType":"VariableDeclaration","scope":55532,"src":"9613:35:82","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":55487,"name":"bytes","nodeType":"ElementaryTypeName","src":"9613:5:82","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":55489,"nodeType":"VariableDeclarationStatement","src":"9613:35:82"},{"body":{"id":55523,"nodeType":"Block","src":"9718:263:82","statements":[{"assignments":[55503],"declarations":[{"constant":false,"id":55503,"mutability":"mutable","name":"blockCommitment","nameLocation":"9757:15:82","nodeType":"VariableDeclaration","scope":55523,"src":"9732:40:82","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_BlockCommitment_$53751_calldata_ptr","typeString":"struct IRouter.BlockCommitment"},"typeName":{"id":55502,"nodeType":"UserDefinedTypeName","pathNode":{"id":55501,"name":"BlockCommitment","nameLocations":["9732:15:82"],"nodeType":"IdentifierPath","referencedDeclaration":53751,"src":"9732:15:82"},"referencedDeclaration":53751,"src":"9732:15:82","typeDescriptions":{"typeIdentifier":"t_struct$_BlockCommitment_$53751_storage_ptr","typeString":"struct IRouter.BlockCommitment"}},"visibility":"internal"}],"id":55507,"initialValue":{"baseExpression":{"id":55504,"name":"blockCommitmentsArray","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55479,"src":"9775:21:82","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_BlockCommitment_$53751_calldata_ptr_$dyn_calldata_ptr","typeString":"struct IRouter.BlockCommitment calldata[] calldata"}},"id":55506,"indexExpression":{"id":55505,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55491,"src":"9797:1:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"9775:24:82","typeDescriptions":{"typeIdentifier":"t_struct$_BlockCommitment_$53751_calldata_ptr","typeString":"struct IRouter.BlockCommitment calldata"}},"nodeType":"VariableDeclarationStatement","src":"9732:67:82"},{"assignments":[55509],"declarations":[{"constant":false,"id":55509,"mutability":"mutable","name":"blockCommitmentHash","nameLocation":"9822:19:82","nodeType":"VariableDeclaration","scope":55523,"src":"9814:27:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":55508,"name":"bytes32","nodeType":"ElementaryTypeName","src":"9814:7:82","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":55513,"initialValue":{"arguments":[{"id":55511,"name":"blockCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55503,"src":"9857:15:82","typeDescriptions":{"typeIdentifier":"t_struct$_BlockCommitment_$53751_calldata_ptr","typeString":"struct IRouter.BlockCommitment calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_BlockCommitment_$53751_calldata_ptr","typeString":"struct IRouter.BlockCommitment calldata"}],"id":55510,"name":"_commitBlock","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55809,"src":"9844:12:82","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_BlockCommitment_$53751_calldata_ptr_$returns$_t_bytes32_$","typeString":"function (struct IRouter.BlockCommitment calldata) returns (bytes32)"}},"id":55512,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9844:29:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"9814:59:82"},{"expression":{"id":55521,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":55514,"name":"blockCommitmentsHashes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55488,"src":"9888:22:82","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":55518,"name":"blockCommitmentsHashes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55488,"src":"9926:22:82","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":55519,"name":"blockCommitmentHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55509,"src":"9950:19:82","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":55516,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9913:5:82","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":55515,"name":"bytes","nodeType":"ElementaryTypeName","src":"9913:5:82","typeDescriptions":{}}},"id":55517,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9919:6:82","memberName":"concat","nodeType":"MemberAccess","src":"9913:12:82","typeDescriptions":{"typeIdentifier":"t_function_bytesconcat_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":55520,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9913:57:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"src":"9888:82:82","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":55522,"nodeType":"ExpressionStatement","src":"9888:82:82"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":55497,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":55494,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55491,"src":"9679:1:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":55495,"name":"blockCommitmentsArray","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55479,"src":"9683:21:82","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_BlockCommitment_$53751_calldata_ptr_$dyn_calldata_ptr","typeString":"struct IRouter.BlockCommitment calldata[] calldata"}},"id":55496,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9705:6:82","memberName":"length","nodeType":"MemberAccess","src":"9683:28:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9679:32:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":55524,"initializationExpression":{"assignments":[55491],"declarations":[{"constant":false,"id":55491,"mutability":"mutable","name":"i","nameLocation":"9672:1:82","nodeType":"VariableDeclaration","scope":55524,"src":"9664:9:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":55490,"name":"uint256","nodeType":"ElementaryTypeName","src":"9664:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":55493,"initialValue":{"hexValue":"30","id":55492,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9676:1:82","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"9664:13:82"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":55499,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"9713:3:82","subExpression":{"id":55498,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55491,"src":"9713:1:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":55500,"nodeType":"ExpressionStatement","src":"9713:3:82"},"nodeType":"ForStatement","src":"9659:322:82"},{"expression":{"arguments":[{"arguments":[{"id":55527,"name":"blockCommitmentsHashes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55488,"src":"10021:22:82","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":55526,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"10011:9:82","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":55528,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10011:33:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":55529,"name":"signatures","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55482,"src":"10046:10:82","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr","typeString":"bytes calldata[] calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr","typeString":"bytes calldata[] calldata"}],"id":55525,"name":"_validateSignatures","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55713,"src":"9991:19:82","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$_t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr_$returns$__$","typeString":"function (bytes32,bytes calldata[] calldata) view"}},"id":55530,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9991:66:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":55531,"nodeType":"ExpressionStatement","src":"9991:66:82"}]},"baseFunctions":[54012],"functionSelector":"fa97ed6d","implemented":true,"kind":"function","modifiers":[{"id":55485,"kind":"modifierInvocation","modifierName":{"id":55484,"name":"nonReentrant","nameLocations":["9586:12:82"],"nodeType":"IdentifierPath","referencedDeclaration":42355,"src":"9586:12:82"},"nodeType":"ModifierInvocation","src":"9586:12:82"}],"name":"commitBlocks","nameLocation":"9469:12:82","parameters":{"id":55483,"nodeType":"ParameterList","parameters":[{"constant":false,"id":55479,"mutability":"mutable","name":"blockCommitmentsArray","nameLocation":"9509:21:82","nodeType":"VariableDeclaration","scope":55533,"src":"9482:48:82","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_BlockCommitment_$53751_calldata_ptr_$dyn_calldata_ptr","typeString":"struct IRouter.BlockCommitment[]"},"typeName":{"baseType":{"id":55477,"nodeType":"UserDefinedTypeName","pathNode":{"id":55476,"name":"BlockCommitment","nameLocations":["9482:15:82"],"nodeType":"IdentifierPath","referencedDeclaration":53751,"src":"9482:15:82"},"referencedDeclaration":53751,"src":"9482:15:82","typeDescriptions":{"typeIdentifier":"t_struct$_BlockCommitment_$53751_storage_ptr","typeString":"struct IRouter.BlockCommitment"}},"id":55478,"nodeType":"ArrayTypeName","src":"9482:17:82","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_BlockCommitment_$53751_storage_$dyn_storage_ptr","typeString":"struct IRouter.BlockCommitment[]"}},"visibility":"internal"},{"constant":false,"id":55482,"mutability":"mutable","name":"signatures","nameLocation":"9549:10:82","nodeType":"VariableDeclaration","scope":55533,"src":"9532:27:82","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr","typeString":"bytes[]"},"typeName":{"baseType":{"id":55480,"name":"bytes","nodeType":"ElementaryTypeName","src":"9532:5:82","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"id":55481,"nodeType":"ArrayTypeName","src":"9532:7:82","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_storage_$dyn_storage_ptr","typeString":"bytes[]"}},"visibility":"internal"}],"src":"9481:79:82"},"returnParameters":{"id":55486,"nodeType":"ParameterList","parameters":[],"src":"9603:0:82"},"scope":56295,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":55624,"nodeType":"FunctionDefinition","src":"10106:951:82","nodes":[],"body":{"id":55623,"nodeType":"Block","src":"10245:812:82","nodes":[],"statements":[{"assignments":[55548],"declarations":[{"constant":false,"id":55548,"mutability":"mutable","name":"router","nameLocation":"10271:6:82","nodeType":"VariableDeclaration","scope":55623,"src":"10255:22:82","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53731_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":55547,"nodeType":"UserDefinedTypeName","pathNode":{"id":55546,"name":"Storage","nameLocations":["10255:7:82"],"nodeType":"IdentifierPath","referencedDeclaration":53731,"src":"10255:7:82"},"referencedDeclaration":53731,"src":"10255:7:82","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53731_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"}],"id":55551,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":55549,"name":"_getStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56294,"src":"10280:11:82","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$53731_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":55550,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10280:13:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53731_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"10255:38:82"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_enum$_CodeState_$53735","typeString":"enum IRouter.CodeState"},"id":55559,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"expression":{"id":55553,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55548,"src":"10312:6:82","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53731_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":55554,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"10319:5:82","memberName":"codes","nodeType":"MemberAccess","referencedDeclaration":53722,"src":"10312:12:82","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_enum$_CodeState_$53735_$","typeString":"mapping(bytes32 => enum IRouter.CodeState)"}},"id":55556,"indexExpression":{"id":55555,"name":"codeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55535,"src":"10325:6:82","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"10312:20:82","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$53735","typeString":"enum IRouter.CodeState"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":55557,"name":"CodeState","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53735,"src":"10336:9:82","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_CodeState_$53735_$","typeString":"type(enum IRouter.CodeState)"}},"id":55558,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"10346:9:82","memberName":"Validated","nodeType":"MemberAccess","referencedDeclaration":53734,"src":"10336:19:82","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$53735","typeString":"enum IRouter.CodeState"}},"src":"10312:43:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"636f6465206d7573742062652076616c696461746564206265666f72652070726f6772616d206372656174696f6e","id":55560,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"10357:48:82","typeDescriptions":{"typeIdentifier":"t_stringliteral_b5148f5f8f63c81848fb75aafb9815f0b7600419fddac60bd483eec7cf08a631","typeString":"literal_string \"code must be validated before program creation\""},"value":"code must be validated before program creation"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_b5148f5f8f63c81848fb75aafb9815f0b7600419fddac60bd483eec7cf08a631","typeString":"literal_string \"code must be validated before program creation\""}],"id":55552,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"10304:7:82","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":55561,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10304:102:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":55562,"nodeType":"ExpressionStatement","src":"10304:102:82"},{"assignments":[55564],"declarations":[{"constant":false,"id":55564,"mutability":"mutable","name":"baseFeeValue","nameLocation":"10425:12:82","nodeType":"VariableDeclaration","scope":55623,"src":"10417:20:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":55563,"name":"uint128","nodeType":"ElementaryTypeName","src":"10417:7:82","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"id":55567,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":55565,"name":"baseFee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55215,"src":"10440:7:82","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint128_$","typeString":"function () view returns (uint128)"}},"id":55566,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10440:9:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"VariableDeclarationStatement","src":"10417:32:82"},{"assignments":[55569],"declarations":[{"constant":false,"id":55569,"mutability":"mutable","name":"executableBalance","nameLocation":"10467:17:82","nodeType":"VariableDeclaration","scope":55623,"src":"10459:25:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":55568,"name":"uint128","nodeType":"ElementaryTypeName","src":"10459:7:82","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"id":55573,"initialValue":{"commonType":{"typeIdentifier":"t_uint128","typeString":"uint128"},"id":55572,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":55570,"name":"baseFeeValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55564,"src":"10487:12:82","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"3130","id":55571,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10502:2:82","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"src":"10487:17:82","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"VariableDeclarationStatement","src":"10459:45:82"},{"assignments":[55575],"declarations":[{"constant":false,"id":55575,"mutability":"mutable","name":"totalValue","nameLocation":"10523:10:82","nodeType":"VariableDeclaration","scope":55623,"src":"10515:18:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":55574,"name":"uint128","nodeType":"ElementaryTypeName","src":"10515:7:82","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"id":55581,"initialValue":{"commonType":{"typeIdentifier":"t_uint128","typeString":"uint128"},"id":55580,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint128","typeString":"uint128"},"id":55578,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":55576,"name":"baseFeeValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55564,"src":"10536:12:82","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":55577,"name":"executableBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55569,"src":"10551:17:82","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"src":"10536:32:82","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":55579,"name":"_value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55539,"src":"10571:6:82","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"src":"10536:41:82","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"VariableDeclarationStatement","src":"10515:62:82"},{"expression":{"arguments":[{"id":55583,"name":"totalValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55575,"src":"10603:10:82","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint128","typeString":"uint128"}],"id":55582,"name":"_retrieveValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56185,"src":"10588:14:82","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint128_$returns$__$","typeString":"function (uint128)"}},"id":55584,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10588:26:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":55585,"nodeType":"ExpressionStatement","src":"10588:26:82"},{"assignments":[55587],"declarations":[{"constant":false,"id":55587,"mutability":"mutable","name":"actorId","nameLocation":"10783:7:82","nodeType":"VariableDeclaration","scope":55623,"src":"10775:15:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":55586,"name":"address","nodeType":"ElementaryTypeName","src":"10775:7:82","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":55600,"initialValue":{"arguments":[{"expression":{"id":55590,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55548,"src":"10819:6:82","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53731_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":55591,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"10826:11:82","memberName":"mirrorProxy","nodeType":"MemberAccess","referencedDeclaration":53700,"src":"10819:18:82","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"arguments":[{"id":55595,"name":"codeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55535,"src":"10866:6:82","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":55596,"name":"salt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55537,"src":"10874:4:82","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":55593,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"10849:3:82","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":55594,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"10853:12:82","memberName":"encodePacked","nodeType":"MemberAccess","src":"10849:16:82","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":55597,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10849:30:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":55592,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"10839:9:82","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":55598,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10839:41:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":55588,"name":"Clones","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41121,"src":"10793:6:82","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Clones_$41121_$","typeString":"type(library Clones)"}},"id":55589,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10800:18:82","memberName":"cloneDeterministic","nodeType":"MemberAccess","referencedDeclaration":41039,"src":"10793:25:82","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes32_$returns$_t_address_$","typeString":"function (address,bytes32) returns (address)"}},"id":55599,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10793:88:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"10775:106:82"},{"expression":{"id":55607,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"id":55601,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55548,"src":"10892:6:82","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53731_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":55604,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"10899:8:82","memberName":"programs","nodeType":"MemberAccess","referencedDeclaration":53728,"src":"10892:15:82","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bytes32_$","typeString":"mapping(address => bytes32)"}},"id":55605,"indexExpression":{"id":55603,"name":"actorId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55587,"src":"10908:7:82","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"10892:24:82","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":55606,"name":"codeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55535,"src":"10919:6:82","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"10892:33:82","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":55608,"nodeType":"ExpressionStatement","src":"10892:33:82"},{"expression":{"id":55612,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"10935:22:82","subExpression":{"expression":{"id":55609,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55548,"src":"10935:6:82","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53731_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":55611,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"10942:13:82","memberName":"programsCount","nodeType":"MemberAccess","referencedDeclaration":53730,"src":"10935:20:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":55613,"nodeType":"ExpressionStatement","src":"10935:22:82"},{"eventCall":{"arguments":[{"id":55615,"name":"actorId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55587,"src":"10988:7:82","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":55616,"name":"codeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55535,"src":"10997:6:82","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":55614,"name":"ProgramCreated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53816,"src":"10973:14:82","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_bytes32_$returns$__$","typeString":"function (address,bytes32)"}},"id":55617,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10973:31:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":55618,"nodeType":"EmitStatement","src":"10968:36:82"},{"expression":{"components":[{"id":55619,"name":"actorId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55587,"src":"11023:7:82","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":55620,"name":"executableBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55569,"src":"11032:17:82","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"id":55621,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"11022:28:82","typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_uint128_$","typeString":"tuple(address,uint128)"}},"functionReturnParameters":55545,"id":55622,"nodeType":"Return","src":"11015:35:82"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_createProgramWithoutMessage","nameLocation":"10115:28:82","parameters":{"id":55540,"nodeType":"ParameterList","parameters":[{"constant":false,"id":55535,"mutability":"mutable","name":"codeId","nameLocation":"10152:6:82","nodeType":"VariableDeclaration","scope":55624,"src":"10144:14:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":55534,"name":"bytes32","nodeType":"ElementaryTypeName","src":"10144:7:82","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":55537,"mutability":"mutable","name":"salt","nameLocation":"10168:4:82","nodeType":"VariableDeclaration","scope":55624,"src":"10160:12:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":55536,"name":"bytes32","nodeType":"ElementaryTypeName","src":"10160:7:82","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":55539,"mutability":"mutable","name":"_value","nameLocation":"10182:6:82","nodeType":"VariableDeclaration","scope":55624,"src":"10174:14:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":55538,"name":"uint128","nodeType":"ElementaryTypeName","src":"10174:7:82","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"10143:46:82"},"returnParameters":{"id":55545,"nodeType":"ParameterList","parameters":[{"constant":false,"id":55542,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":55624,"src":"10223:7:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":55541,"name":"address","nodeType":"ElementaryTypeName","src":"10223:7:82","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":55544,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":55624,"src":"10232:7:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":55543,"name":"uint128","nodeType":"ElementaryTypeName","src":"10232:7:82","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"10222:18:82"},"scope":56295,"stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"id":55713,"nodeType":"FunctionDefinition","src":"11063:844:82","nodes":[],"body":{"id":55712,"nodeType":"Block","src":"11152:755:82","nodes":[],"statements":[{"assignments":[55634],"declarations":[{"constant":false,"id":55634,"mutability":"mutable","name":"router","nameLocation":"11178:6:82","nodeType":"VariableDeclaration","scope":55712,"src":"11162:22:82","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53731_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":55633,"nodeType":"UserDefinedTypeName","pathNode":{"id":55632,"name":"Storage","nameLocations":["11162:7:82"],"nodeType":"IdentifierPath","referencedDeclaration":53731,"src":"11162:7:82"},"referencedDeclaration":53731,"src":"11162:7:82","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53731_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"}],"id":55637,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":55635,"name":"_getStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56294,"src":"11187:11:82","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$53731_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":55636,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11187:13:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53731_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"11162:38:82"},{"assignments":[55639],"declarations":[{"constant":false,"id":55639,"mutability":"mutable","name":"threshold","nameLocation":"11219:9:82","nodeType":"VariableDeclaration","scope":55712,"src":"11211:17:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":55638,"name":"uint256","nodeType":"ElementaryTypeName","src":"11211:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":55642,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":55640,"name":"validatorsThreshold","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55052,"src":"11231:19:82","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":55641,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11231:21:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"11211:41:82"},{"assignments":[55644],"declarations":[{"constant":false,"id":55644,"mutability":"mutable","name":"messageHash","nameLocation":"11271:11:82","nodeType":"VariableDeclaration","scope":55712,"src":"11263:19:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":55643,"name":"bytes32","nodeType":"ElementaryTypeName","src":"11263:7:82","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":55655,"initialValue":{"arguments":[{"arguments":[{"id":55652,"name":"dataHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55626,"src":"11348:8:82","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":55650,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"11331:3:82","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":55651,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"11335:12:82","memberName":"encodePacked","nodeType":"MemberAccess","src":"11331:16:82","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":55653,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11331:26:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"arguments":[{"id":55647,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"11293:4:82","typeDescriptions":{"typeIdentifier":"t_contract$_Router_$56295","typeString":"contract Router"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Router_$56295","typeString":"contract Router"}],"id":55646,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11285:7:82","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":55645,"name":"address","nodeType":"ElementaryTypeName","src":"11285:7:82","typeDescriptions":{}}},"id":55648,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11285:13:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":55649,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11299:31:82","memberName":"toDataWithIntendedValidatorHash","nodeType":"MemberAccess","referencedDeclaration":43448,"src":"11285:45:82","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_address_$_t_bytes_memory_ptr_$returns$_t_bytes32_$attached_to$_t_address_$","typeString":"function (address,bytes memory) pure returns (bytes32)"}},"id":55654,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11285:73:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"11263:95:82"},{"assignments":[55657],"declarations":[{"constant":false,"id":55657,"mutability":"mutable","name":"validSignatures","nameLocation":"11376:15:82","nodeType":"VariableDeclaration","scope":55712,"src":"11368:23:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":55656,"name":"uint256","nodeType":"ElementaryTypeName","src":"11368:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":55659,"initialValue":{"hexValue":"30","id":55658,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11394:1:82","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"11368:27:82"},{"body":{"id":55703,"nodeType":"Block","src":"11454:368:82","statements":[{"assignments":[55672],"declarations":[{"constant":false,"id":55672,"mutability":"mutable","name":"signature","nameLocation":"11483:9:82","nodeType":"VariableDeclaration","scope":55703,"src":"11468:24:82","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":55671,"name":"bytes","nodeType":"ElementaryTypeName","src":"11468:5:82","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":55676,"initialValue":{"baseExpression":{"id":55673,"name":"signatures","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55629,"src":"11495:10:82","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr","typeString":"bytes calldata[] calldata"}},"id":55675,"indexExpression":{"id":55674,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55661,"src":"11506:1:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"11495:13:82","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"nodeType":"VariableDeclarationStatement","src":"11468:40:82"},{"assignments":[55678],"declarations":[{"constant":false,"id":55678,"mutability":"mutable","name":"validator","nameLocation":"11531:9:82","nodeType":"VariableDeclaration","scope":55703,"src":"11523:17:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":55677,"name":"address","nodeType":"ElementaryTypeName","src":"11523:7:82","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":55683,"initialValue":{"arguments":[{"id":55681,"name":"signature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55672,"src":"11563:9:82","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"expression":{"id":55679,"name":"messageHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55644,"src":"11543:11:82","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":55680,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11555:7:82","memberName":"recover","nodeType":"MemberAccess","referencedDeclaration":43143,"src":"11543:19:82","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$_t_bytes_memory_ptr_$returns$_t_address_$attached_to$_t_bytes32_$","typeString":"function (bytes32,bytes memory) pure returns (address)"}},"id":55682,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11543:30:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"11523:50:82"},{"condition":{"baseExpression":{"expression":{"id":55684,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55634,"src":"11592:6:82","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53731_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":55685,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"11599:10:82","memberName":"validators","nodeType":"MemberAccess","referencedDeclaration":53714,"src":"11592:17:82","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":55687,"indexExpression":{"id":55686,"name":"validator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55678,"src":"11610:9:82","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"11592:28:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":55701,"nodeType":"Block","src":"11742:70:82","statements":[{"expression":{"arguments":[{"hexValue":"66616c7365","id":55697,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"11768:5:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"696e636f7272656374207369676e6174757265","id":55698,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"11775:21:82","typeDescriptions":{"typeIdentifier":"t_stringliteral_641ab7289dc6df3dff0edafbede614b21294e2bb9f09800443d88f57818afe8f","typeString":"literal_string \"incorrect signature\""},"value":"incorrect signature"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_641ab7289dc6df3dff0edafbede614b21294e2bb9f09800443d88f57818afe8f","typeString":"literal_string \"incorrect signature\""}],"id":55696,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"11760:7:82","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":55699,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11760:37:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":55700,"nodeType":"ExpressionStatement","src":"11760:37:82"}]},"id":55702,"nodeType":"IfStatement","src":"11588:224:82","trueBody":{"id":55695,"nodeType":"Block","src":"11622:114:82","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":55691,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":55689,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"11644:17:82","subExpression":{"id":55688,"name":"validSignatures","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55657,"src":"11646:15:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":55690,"name":"threshold","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55639,"src":"11665:9:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11644:30:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":55694,"nodeType":"IfStatement","src":"11640:82:82","trueBody":{"id":55693,"nodeType":"Block","src":"11676:46:82","statements":[{"id":55692,"nodeType":"Break","src":"11698:5:82"}]}}]}}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":55667,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":55664,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55661,"src":"11426:1:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":55665,"name":"signatures","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55629,"src":"11430:10:82","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr","typeString":"bytes calldata[] calldata"}},"id":55666,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11441:6:82","memberName":"length","nodeType":"MemberAccess","src":"11430:17:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11426:21:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":55704,"initializationExpression":{"assignments":[55661],"declarations":[{"constant":false,"id":55661,"mutability":"mutable","name":"i","nameLocation":"11419:1:82","nodeType":"VariableDeclaration","scope":55704,"src":"11411:9:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":55660,"name":"uint256","nodeType":"ElementaryTypeName","src":"11411:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":55663,"initialValue":{"hexValue":"30","id":55662,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11423:1:82","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"11411:13:82"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":55669,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"11449:3:82","subExpression":{"id":55668,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55661,"src":"11449:1:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":55670,"nodeType":"ExpressionStatement","src":"11449:3:82"},"nodeType":"ForStatement","src":"11406:416:82"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":55708,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":55706,"name":"validSignatures","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55657,"src":"11840:15:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":55707,"name":"threshold","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55639,"src":"11859:9:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11840:28:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"6e6f7420656e6f7567682076616c6964207369676e617475726573","id":55709,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"11870:29:82","typeDescriptions":{"typeIdentifier":"t_stringliteral_8852ba723d98bcf316aab69f38fb5da08e0bfb912ef589b19218c396aac3c0bc","typeString":"literal_string \"not enough valid signatures\""},"value":"not enough valid signatures"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_8852ba723d98bcf316aab69f38fb5da08e0bfb912ef589b19218c396aac3c0bc","typeString":"literal_string \"not enough valid signatures\""}],"id":55705,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"11832:7:82","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":55710,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11832:68:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":55711,"nodeType":"ExpressionStatement","src":"11832:68:82"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_validateSignatures","nameLocation":"11072:19:82","parameters":{"id":55630,"nodeType":"ParameterList","parameters":[{"constant":false,"id":55626,"mutability":"mutable","name":"dataHash","nameLocation":"11100:8:82","nodeType":"VariableDeclaration","scope":55713,"src":"11092:16:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":55625,"name":"bytes32","nodeType":"ElementaryTypeName","src":"11092:7:82","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":55629,"mutability":"mutable","name":"signatures","nameLocation":"11127:10:82","nodeType":"VariableDeclaration","scope":55713,"src":"11110:27:82","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr","typeString":"bytes[]"},"typeName":{"baseType":{"id":55627,"name":"bytes","nodeType":"ElementaryTypeName","src":"11110:5:82","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"id":55628,"nodeType":"ArrayTypeName","src":"11110:7:82","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_storage_$dyn_storage_ptr","typeString":"bytes[]"}},"visibility":"internal"}],"src":"11091:47:82"},"returnParameters":{"id":55631,"nodeType":"ParameterList","parameters":[],"src":"11152:0:82"},"scope":56295,"stateMutability":"view","virtual":false,"visibility":"private"},{"id":55809,"nodeType":"FunctionDefinition","src":"11913:1244:82","nodes":[],"body":{"id":55808,"nodeType":"Block","src":"12003:1154:82","nodes":[],"statements":[{"assignments":[55723],"declarations":[{"constant":false,"id":55723,"mutability":"mutable","name":"router","nameLocation":"12029:6:82","nodeType":"VariableDeclaration","scope":55808,"src":"12013:22:82","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53731_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":55722,"nodeType":"UserDefinedTypeName","pathNode":{"id":55721,"name":"Storage","nameLocations":["12013:7:82"],"nodeType":"IdentifierPath","referencedDeclaration":53731,"src":"12013:7:82"},"referencedDeclaration":53731,"src":"12013:7:82","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53731_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"}],"id":55726,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":55724,"name":"_getStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56294,"src":"12038:11:82","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$53731_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":55725,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12038:13:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53731_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"12013:38:82"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":55732,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":55728,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55723,"src":"12083:6:82","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53731_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":55729,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"12090:23:82","memberName":"lastBlockCommitmentHash","nodeType":"MemberAccess","referencedDeclaration":53704,"src":"12083:30:82","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":55730,"name":"blockCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55716,"src":"12117:15:82","typeDescriptions":{"typeIdentifier":"t_struct$_BlockCommitment_$53751_calldata_ptr","typeString":"struct IRouter.BlockCommitment calldata"}},"id":55731,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12133:18:82","memberName":"prevCommitmentHash","nodeType":"MemberAccess","referencedDeclaration":53744,"src":"12117:34:82","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"12083:68:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"696e76616c69642070726576696f757320636f6d6d69746d656e742068617368","id":55733,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"12153:34:82","typeDescriptions":{"typeIdentifier":"t_stringliteral_fef95c9e1944529fb91083689c978504d88f59fdb02e6fd241a073fa572e7d3e","typeString":"literal_string \"invalid previous commitment hash\""},"value":"invalid previous commitment hash"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_fef95c9e1944529fb91083689c978504d88f59fdb02e6fd241a073fa572e7d3e","typeString":"literal_string \"invalid previous commitment hash\""}],"id":55727,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"12062:7:82","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":55734,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12062:135:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":55735,"nodeType":"ExpressionStatement","src":"12062:135:82"},{"expression":{"arguments":[{"arguments":[{"expression":{"id":55738,"name":"blockCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55716,"src":"12234:15:82","typeDescriptions":{"typeIdentifier":"t_struct$_BlockCommitment_$53751_calldata_ptr","typeString":"struct IRouter.BlockCommitment calldata"}},"id":55739,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12250:13:82","memberName":"predBlockHash","nodeType":"MemberAccess","referencedDeclaration":53746,"src":"12234:29:82","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":55737,"name":"_isPredecessorHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55853,"src":"12215:18:82","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$returns$_t_bool_$","typeString":"function (bytes32) view returns (bool)"}},"id":55740,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12215:49:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"616c6c6f776564207072656465636573736f7220626c6f636b206e6f7420666f756e64","id":55741,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"12266:37:82","typeDescriptions":{"typeIdentifier":"t_stringliteral_7d09fbc5a1c193a0826cadcc2903c8170aac2d31f22b53e69a64923153c8207e","typeString":"literal_string \"allowed predecessor block not found\""},"value":"allowed predecessor block not found"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_7d09fbc5a1c193a0826cadcc2903c8170aac2d31f22b53e69a64923153c8207e","typeString":"literal_string \"allowed predecessor block not found\""}],"id":55736,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"12207:7:82","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":55742,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12207:97:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":55743,"nodeType":"ExpressionStatement","src":"12207:97:82"},{"expression":{"id":55749,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":55744,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55723,"src":"12444:6:82","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53731_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":55746,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"12451:23:82","memberName":"lastBlockCommitmentHash","nodeType":"MemberAccess","referencedDeclaration":53704,"src":"12444:30:82","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":55747,"name":"blockCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55716,"src":"12477:15:82","typeDescriptions":{"typeIdentifier":"t_struct$_BlockCommitment_$53751_calldata_ptr","typeString":"struct IRouter.BlockCommitment calldata"}},"id":55748,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12493:9:82","memberName":"blockHash","nodeType":"MemberAccess","referencedDeclaration":53742,"src":"12477:25:82","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"12444:58:82","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":55750,"nodeType":"ExpressionStatement","src":"12444:58:82"},{"assignments":[55752],"declarations":[{"constant":false,"id":55752,"mutability":"mutable","name":"transitionsHashes","nameLocation":"12526:17:82","nodeType":"VariableDeclaration","scope":55808,"src":"12513:30:82","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":55751,"name":"bytes","nodeType":"ElementaryTypeName","src":"12513:5:82","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":55753,"nodeType":"VariableDeclarationStatement","src":"12513:30:82"},{"body":{"id":55789,"nodeType":"Block","src":"12619:255:82","statements":[{"assignments":[55768],"declarations":[{"constant":false,"id":55768,"mutability":"mutable","name":"stateTransition","nameLocation":"12658:15:82","nodeType":"VariableDeclaration","scope":55789,"src":"12633:40:82","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$53766_calldata_ptr","typeString":"struct IRouter.StateTransition"},"typeName":{"id":55767,"nodeType":"UserDefinedTypeName","pathNode":{"id":55766,"name":"StateTransition","nameLocations":["12633:15:82"],"nodeType":"IdentifierPath","referencedDeclaration":53766,"src":"12633:15:82"},"referencedDeclaration":53766,"src":"12633:15:82","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$53766_storage_ptr","typeString":"struct IRouter.StateTransition"}},"visibility":"internal"}],"id":55773,"initialValue":{"baseExpression":{"expression":{"id":55769,"name":"blockCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55716,"src":"12676:15:82","typeDescriptions":{"typeIdentifier":"t_struct$_BlockCommitment_$53751_calldata_ptr","typeString":"struct IRouter.BlockCommitment calldata"}},"id":55770,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12692:11:82","memberName":"transitions","nodeType":"MemberAccess","referencedDeclaration":53750,"src":"12676:27:82","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_StateTransition_$53766_calldata_ptr_$dyn_calldata_ptr","typeString":"struct IRouter.StateTransition calldata[] calldata"}},"id":55772,"indexExpression":{"id":55771,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55755,"src":"12704:1:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"12676:30:82","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$53766_calldata_ptr","typeString":"struct IRouter.StateTransition calldata"}},"nodeType":"VariableDeclarationStatement","src":"12633:73:82"},{"assignments":[55775],"declarations":[{"constant":false,"id":55775,"mutability":"mutable","name":"transitionHash","nameLocation":"12729:14:82","nodeType":"VariableDeclaration","scope":55789,"src":"12721:22:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":55774,"name":"bytes32","nodeType":"ElementaryTypeName","src":"12721:7:82","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":55779,"initialValue":{"arguments":[{"id":55777,"name":"stateTransition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55768,"src":"12765:15:82","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$53766_calldata_ptr","typeString":"struct IRouter.StateTransition calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_StateTransition_$53766_calldata_ptr","typeString":"struct IRouter.StateTransition calldata"}],"id":55776,"name":"_doStateTransition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56053,"src":"12746:18:82","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_StateTransition_$53766_calldata_ptr_$returns$_t_bytes32_$","typeString":"function (struct IRouter.StateTransition calldata) returns (bytes32)"}},"id":55778,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12746:35:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"12721:60:82"},{"expression":{"id":55787,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":55780,"name":"transitionsHashes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55752,"src":"12796:17:82","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":55784,"name":"transitionsHashes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55752,"src":"12829:17:82","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":55785,"name":"transitionHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55775,"src":"12848:14:82","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":55782,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"12816:5:82","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":55781,"name":"bytes","nodeType":"ElementaryTypeName","src":"12816:5:82","typeDescriptions":{}}},"id":55783,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12822:6:82","memberName":"concat","nodeType":"MemberAccess","src":"12816:12:82","typeDescriptions":{"typeIdentifier":"t_function_bytesconcat_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":55786,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12816:47:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"src":"12796:67:82","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":55788,"nodeType":"ExpressionStatement","src":"12796:67:82"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":55762,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":55758,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55755,"src":"12574:1:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"expression":{"id":55759,"name":"blockCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55716,"src":"12578:15:82","typeDescriptions":{"typeIdentifier":"t_struct$_BlockCommitment_$53751_calldata_ptr","typeString":"struct IRouter.BlockCommitment calldata"}},"id":55760,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12594:11:82","memberName":"transitions","nodeType":"MemberAccess","referencedDeclaration":53750,"src":"12578:27:82","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_StateTransition_$53766_calldata_ptr_$dyn_calldata_ptr","typeString":"struct IRouter.StateTransition calldata[] calldata"}},"id":55761,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12606:6:82","memberName":"length","nodeType":"MemberAccess","src":"12578:34:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12574:38:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":55790,"initializationExpression":{"assignments":[55755],"declarations":[{"constant":false,"id":55755,"mutability":"mutable","name":"i","nameLocation":"12567:1:82","nodeType":"VariableDeclaration","scope":55790,"src":"12559:9:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":55754,"name":"uint256","nodeType":"ElementaryTypeName","src":"12559:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":55757,"initialValue":{"hexValue":"30","id":55756,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12571:1:82","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"12559:13:82"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":55764,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"12614:3:82","subExpression":{"id":55763,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55755,"src":"12614:1:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":55765,"nodeType":"ExpressionStatement","src":"12614:3:82"},"nodeType":"ForStatement","src":"12554:320:82"},{"eventCall":{"arguments":[{"expression":{"id":55792,"name":"blockCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55716,"src":"12904:15:82","typeDescriptions":{"typeIdentifier":"t_struct$_BlockCommitment_$53751_calldata_ptr","typeString":"struct IRouter.BlockCommitment calldata"}},"id":55793,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12920:9:82","memberName":"blockHash","nodeType":"MemberAccess","referencedDeclaration":53742,"src":"12904:25:82","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":55791,"name":"BlockCommitted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53795,"src":"12889:14:82","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$returns$__$","typeString":"function (bytes32)"}},"id":55794,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12889:41:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":55795,"nodeType":"EmitStatement","src":"12884:46:82"},{"expression":{"arguments":[{"expression":{"id":55797,"name":"blockCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55716,"src":"12982:15:82","typeDescriptions":{"typeIdentifier":"t_struct$_BlockCommitment_$53751_calldata_ptr","typeString":"struct IRouter.BlockCommitment calldata"}},"id":55798,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12998:9:82","memberName":"blockHash","nodeType":"MemberAccess","referencedDeclaration":53742,"src":"12982:25:82","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":55799,"name":"blockCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55716,"src":"13021:15:82","typeDescriptions":{"typeIdentifier":"t_struct$_BlockCommitment_$53751_calldata_ptr","typeString":"struct IRouter.BlockCommitment calldata"}},"id":55800,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13037:18:82","memberName":"prevCommitmentHash","nodeType":"MemberAccess","referencedDeclaration":53744,"src":"13021:34:82","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":55801,"name":"blockCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55716,"src":"13069:15:82","typeDescriptions":{"typeIdentifier":"t_struct$_BlockCommitment_$53751_calldata_ptr","typeString":"struct IRouter.BlockCommitment calldata"}},"id":55802,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13085:13:82","memberName":"predBlockHash","nodeType":"MemberAccess","referencedDeclaration":53746,"src":"13069:29:82","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"arguments":[{"id":55804,"name":"transitionsHashes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55752,"src":"13122:17:82","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":55803,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"13112:9:82","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":55805,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13112:28:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":55796,"name":"_blockCommitmentHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56077,"src":"12948:20:82","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$_t_bytes32_$_t_bytes32_$_t_bytes32_$returns$_t_bytes32_$","typeString":"function (bytes32,bytes32,bytes32,bytes32) pure returns (bytes32)"}},"id":55806,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12948:202:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":55720,"id":55807,"nodeType":"Return","src":"12941:209:82"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_commitBlock","nameLocation":"11922:12:82","parameters":{"id":55717,"nodeType":"ParameterList","parameters":[{"constant":false,"id":55716,"mutability":"mutable","name":"blockCommitment","nameLocation":"11960:15:82","nodeType":"VariableDeclaration","scope":55809,"src":"11935:40:82","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_BlockCommitment_$53751_calldata_ptr","typeString":"struct IRouter.BlockCommitment"},"typeName":{"id":55715,"nodeType":"UserDefinedTypeName","pathNode":{"id":55714,"name":"BlockCommitment","nameLocations":["11935:15:82"],"nodeType":"IdentifierPath","referencedDeclaration":53751,"src":"11935:15:82"},"referencedDeclaration":53751,"src":"11935:15:82","typeDescriptions":{"typeIdentifier":"t_struct$_BlockCommitment_$53751_storage_ptr","typeString":"struct IRouter.BlockCommitment"}},"visibility":"internal"}],"src":"11934:42:82"},"returnParameters":{"id":55720,"nodeType":"ParameterList","parameters":[{"constant":false,"id":55719,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":55809,"src":"11994:7:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":55718,"name":"bytes32","nodeType":"ElementaryTypeName","src":"11994:7:82","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"11993:9:82"},"scope":56295,"stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"id":55853,"nodeType":"FunctionDefinition","src":"13163:338:82","nodes":[],"body":{"id":55852,"nodeType":"Block","src":"13233:268:82","nodes":[],"statements":[{"body":{"id":55848,"nodeType":"Block","src":"13290:183:82","statements":[{"assignments":[55830],"declarations":[{"constant":false,"id":55830,"mutability":"mutable","name":"ret","nameLocation":"13312:3:82","nodeType":"VariableDeclaration","scope":55848,"src":"13304:11:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":55829,"name":"bytes32","nodeType":"ElementaryTypeName","src":"13304:7:82","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":55834,"initialValue":{"arguments":[{"id":55832,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55817,"src":"13328:1:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":55831,"name":"blockhash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-5,"src":"13318:9:82","typeDescriptions":{"typeIdentifier":"t_function_blockhash_view$_t_uint256_$returns$_t_bytes32_$","typeString":"function (uint256) view returns (bytes32)"}},"id":55833,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13318:12:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"13304:26:82"},{"condition":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":55837,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":55835,"name":"ret","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55830,"src":"13348:3:82","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":55836,"name":"hash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55811,"src":"13355:4:82","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"13348:11:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":55843,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":55841,"name":"ret","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55830,"src":"13415:3:82","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":55842,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13422:1:82","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"13415:8:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":55846,"nodeType":"IfStatement","src":"13411:52:82","trueBody":{"id":55845,"nodeType":"Block","src":"13425:38:82","statements":[{"id":55844,"nodeType":"Break","src":"13443:5:82"}]}},"id":55847,"nodeType":"IfStatement","src":"13344:119:82","trueBody":{"id":55840,"nodeType":"Block","src":"13361:44:82","statements":[{"expression":{"hexValue":"74727565","id":55838,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"13386:4:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":55815,"id":55839,"nodeType":"Return","src":"13379:11:82"}]}}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":55825,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":55823,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55817,"src":"13278:1:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":55824,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13282:1:82","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"13278:5:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":55849,"initializationExpression":{"assignments":[55817],"declarations":[{"constant":false,"id":55817,"mutability":"mutable","name":"i","nameLocation":"13256:1:82","nodeType":"VariableDeclaration","scope":55849,"src":"13248:9:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":55816,"name":"uint256","nodeType":"ElementaryTypeName","src":"13248:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":55822,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":55821,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":55818,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"13260:5:82","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":55819,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13266:6:82","memberName":"number","nodeType":"MemberAccess","src":"13260:12:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":55820,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13275:1:82","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"13260:16:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"13248:28:82"},"isSimpleCounterLoop":false,"loopExpression":{"expression":{"id":55827,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"--","prefix":false,"src":"13285:3:82","subExpression":{"id":55826,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55817,"src":"13285:1:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":55828,"nodeType":"ExpressionStatement","src":"13285:3:82"},"nodeType":"ForStatement","src":"13243:230:82"},{"expression":{"hexValue":"66616c7365","id":55850,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"13489:5:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"functionReturnParameters":55815,"id":55851,"nodeType":"Return","src":"13482:12:82"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_isPredecessorHash","nameLocation":"13172:18:82","parameters":{"id":55812,"nodeType":"ParameterList","parameters":[{"constant":false,"id":55811,"mutability":"mutable","name":"hash","nameLocation":"13199:4:82","nodeType":"VariableDeclaration","scope":55853,"src":"13191:12:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":55810,"name":"bytes32","nodeType":"ElementaryTypeName","src":"13191:7:82","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"13190:14:82"},"returnParameters":{"id":55815,"nodeType":"ParameterList","parameters":[{"constant":false,"id":55814,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":55853,"src":"13227:4:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":55813,"name":"bool","nodeType":"ElementaryTypeName","src":"13227:4:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"13226:6:82"},"scope":56295,"stateMutability":"view","virtual":false,"visibility":"private"},{"id":56053,"nodeType":"FunctionDefinition","src":"13507:2170:82","nodes":[],"body":{"id":56052,"nodeType":"Block","src":"13603:2074:82","nodes":[],"statements":[{"assignments":[55863],"declarations":[{"constant":false,"id":55863,"mutability":"mutable","name":"router","nameLocation":"13629:6:82","nodeType":"VariableDeclaration","scope":56052,"src":"13613:22:82","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53731_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":55862,"nodeType":"UserDefinedTypeName","pathNode":{"id":55861,"name":"Storage","nameLocations":["13613:7:82"],"nodeType":"IdentifierPath","referencedDeclaration":53731,"src":"13613:7:82"},"referencedDeclaration":53731,"src":"13613:7:82","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53731_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"}],"id":55866,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":55864,"name":"_getStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56294,"src":"13638:11:82","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$53731_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":55865,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13638:13:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53731_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"13613:38:82"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":55874,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"expression":{"id":55868,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55863,"src":"13670:6:82","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53731_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":55869,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"13677:8:82","memberName":"programs","nodeType":"MemberAccess","referencedDeclaration":53728,"src":"13670:15:82","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bytes32_$","typeString":"mapping(address => bytes32)"}},"id":55872,"indexExpression":{"expression":{"id":55870,"name":"stateTransition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55856,"src":"13686:15:82","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$53766_calldata_ptr","typeString":"struct IRouter.StateTransition calldata"}},"id":55871,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13702:7:82","memberName":"actorId","nodeType":"MemberAccess","referencedDeclaration":53753,"src":"13686:23:82","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"13670:40:82","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":55873,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13714:1:82","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"13670:45:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"636f756c646e277420706572666f726d207472616e736974696f6e20666f7220756e6b6e6f776e2070726f6772616d","id":55875,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"13717:49:82","typeDescriptions":{"typeIdentifier":"t_stringliteral_31c5a066db04c91ff8a121d71b24335cd54a57cfe01a7cdd47f234348f1a72d6","typeString":"literal_string \"couldn't perform transition for unknown program\""},"value":"couldn't perform transition for unknown program"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_31c5a066db04c91ff8a121d71b24335cd54a57cfe01a7cdd47f234348f1a72d6","typeString":"literal_string \"couldn't perform transition for unknown program\""}],"id":55867,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"13662:7:82","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":55876,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13662:105:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":55877,"nodeType":"ExpressionStatement","src":"13662:105:82"},{"assignments":[55880],"declarations":[{"constant":false,"id":55880,"mutability":"mutable","name":"wrappedVaraActor","nameLocation":"13791:16:82","nodeType":"VariableDeclaration","scope":56052,"src":"13778:29:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IWrappedVara_$54024","typeString":"contract IWrappedVara"},"typeName":{"id":55879,"nodeType":"UserDefinedTypeName","pathNode":{"id":55878,"name":"IWrappedVara","nameLocations":["13778:12:82"],"nodeType":"IdentifierPath","referencedDeclaration":54024,"src":"13778:12:82"},"referencedDeclaration":54024,"src":"13778:12:82","typeDescriptions":{"typeIdentifier":"t_contract$_IWrappedVara_$54024","typeString":"contract IWrappedVara"}},"visibility":"internal"}],"id":55885,"initialValue":{"arguments":[{"expression":{"id":55882,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55863,"src":"13823:6:82","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53731_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":55883,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"13830:11:82","memberName":"wrappedVara","nodeType":"MemberAccess","referencedDeclaration":53702,"src":"13823:18:82","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":55881,"name":"IWrappedVara","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54024,"src":"13810:12:82","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IWrappedVara_$54024_$","typeString":"type(contract IWrappedVara)"}},"id":55884,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13810:32:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IWrappedVara_$54024","typeString":"contract IWrappedVara"}},"nodeType":"VariableDeclarationStatement","src":"13778:64:82"},{"expression":{"arguments":[{"expression":{"id":55889,"name":"stateTransition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55856,"src":"13878:15:82","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$53766_calldata_ptr","typeString":"struct IRouter.StateTransition calldata"}},"id":55890,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13894:7:82","memberName":"actorId","nodeType":"MemberAccess","referencedDeclaration":53753,"src":"13878:23:82","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":55891,"name":"stateTransition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55856,"src":"13903:15:82","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$53766_calldata_ptr","typeString":"struct IRouter.StateTransition calldata"}},"id":55892,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13919:14:82","memberName":"valueToReceive","nodeType":"MemberAccess","referencedDeclaration":53757,"src":"13903:30:82","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint128","typeString":"uint128"}],"expression":{"id":55886,"name":"wrappedVaraActor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55880,"src":"13852:16:82","typeDescriptions":{"typeIdentifier":"t_contract$_IWrappedVara_$54024","typeString":"contract IWrappedVara"}},"id":55888,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13869:8:82","memberName":"transfer","nodeType":"MemberAccess","referencedDeclaration":41873,"src":"13852:25:82","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":55893,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13852:82:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":55894,"nodeType":"ExpressionStatement","src":"13852:82:82"},{"assignments":[55897],"declarations":[{"constant":false,"id":55897,"mutability":"mutable","name":"mirrorActor","nameLocation":"13953:11:82","nodeType":"VariableDeclaration","scope":56052,"src":"13945:19:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IMirror_$53648","typeString":"contract IMirror"},"typeName":{"id":55896,"nodeType":"UserDefinedTypeName","pathNode":{"id":55895,"name":"IMirror","nameLocations":["13945:7:82"],"nodeType":"IdentifierPath","referencedDeclaration":53648,"src":"13945:7:82"},"referencedDeclaration":53648,"src":"13945:7:82","typeDescriptions":{"typeIdentifier":"t_contract$_IMirror_$53648","typeString":"contract IMirror"}},"visibility":"internal"}],"id":55902,"initialValue":{"arguments":[{"expression":{"id":55899,"name":"stateTransition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55856,"src":"13975:15:82","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$53766_calldata_ptr","typeString":"struct IRouter.StateTransition calldata"}},"id":55900,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13991:7:82","memberName":"actorId","nodeType":"MemberAccess","referencedDeclaration":53753,"src":"13975:23:82","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":55898,"name":"IMirror","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53648,"src":"13967:7:82","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IMirror_$53648_$","typeString":"type(contract IMirror)"}},"id":55901,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13967:32:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IMirror_$53648","typeString":"contract IMirror"}},"nodeType":"VariableDeclarationStatement","src":"13945:54:82"},{"assignments":[55904],"declarations":[{"constant":false,"id":55904,"mutability":"mutable","name":"valueClaimsBytes","nameLocation":"14023:16:82","nodeType":"VariableDeclaration","scope":56052,"src":"14010:29:82","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":55903,"name":"bytes","nodeType":"ElementaryTypeName","src":"14010:5:82","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":55905,"nodeType":"VariableDeclarationStatement","src":"14010:29:82"},{"body":{"id":55954,"nodeType":"Block","src":"14115:367:82","statements":[{"assignments":[55920],"declarations":[{"constant":false,"id":55920,"mutability":"mutable","name":"valueClaim","nameLocation":"14149:10:82","nodeType":"VariableDeclaration","scope":55954,"src":"14129:30:82","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_ValueClaim_$53773_calldata_ptr","typeString":"struct IRouter.ValueClaim"},"typeName":{"id":55919,"nodeType":"UserDefinedTypeName","pathNode":{"id":55918,"name":"ValueClaim","nameLocations":["14129:10:82"],"nodeType":"IdentifierPath","referencedDeclaration":53773,"src":"14129:10:82"},"referencedDeclaration":53773,"src":"14129:10:82","typeDescriptions":{"typeIdentifier":"t_struct$_ValueClaim_$53773_storage_ptr","typeString":"struct IRouter.ValueClaim"}},"visibility":"internal"}],"id":55925,"initialValue":{"baseExpression":{"expression":{"id":55921,"name":"stateTransition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55856,"src":"14162:15:82","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$53766_calldata_ptr","typeString":"struct IRouter.StateTransition calldata"}},"id":55922,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14178:11:82","memberName":"valueClaims","nodeType":"MemberAccess","referencedDeclaration":53761,"src":"14162:27:82","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_ValueClaim_$53773_calldata_ptr_$dyn_calldata_ptr","typeString":"struct IRouter.ValueClaim calldata[] calldata"}},"id":55924,"indexExpression":{"id":55923,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55907,"src":"14190:1:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"14162:30:82","typeDescriptions":{"typeIdentifier":"t_struct$_ValueClaim_$53773_calldata_ptr","typeString":"struct IRouter.ValueClaim calldata"}},"nodeType":"VariableDeclarationStatement","src":"14129:63:82"},{"expression":{"id":55941,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":55926,"name":"valueClaimsBytes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55904,"src":"14207:16:82","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":55930,"name":"valueClaimsBytes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55904,"src":"14256:16:82","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"arguments":[{"expression":{"id":55933,"name":"valueClaim","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55920,"src":"14291:10:82","typeDescriptions":{"typeIdentifier":"t_struct$_ValueClaim_$53773_calldata_ptr","typeString":"struct IRouter.ValueClaim calldata"}},"id":55934,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14302:9:82","memberName":"messageId","nodeType":"MemberAccess","referencedDeclaration":53768,"src":"14291:20:82","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":55935,"name":"valueClaim","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55920,"src":"14313:10:82","typeDescriptions":{"typeIdentifier":"t_struct$_ValueClaim_$53773_calldata_ptr","typeString":"struct IRouter.ValueClaim calldata"}},"id":55936,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14324:11:82","memberName":"destination","nodeType":"MemberAccess","referencedDeclaration":53770,"src":"14313:22:82","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":55937,"name":"valueClaim","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55920,"src":"14337:10:82","typeDescriptions":{"typeIdentifier":"t_struct$_ValueClaim_$53773_calldata_ptr","typeString":"struct IRouter.ValueClaim calldata"}},"id":55938,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14348:5:82","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":53772,"src":"14337:16:82","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint128","typeString":"uint128"}],"expression":{"id":55931,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"14274:3:82","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":55932,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"14278:12:82","memberName":"encodePacked","nodeType":"MemberAccess","src":"14274:16:82","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":55939,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14274:80:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":55928,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"14226:5:82","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":55927,"name":"bytes","nodeType":"ElementaryTypeName","src":"14226:5:82","typeDescriptions":{}}},"id":55929,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14232:6:82","memberName":"concat","nodeType":"MemberAccess","src":"14226:12:82","typeDescriptions":{"typeIdentifier":"t_function_bytesconcat_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":55940,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14226:142:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"src":"14207:161:82","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":55942,"nodeType":"ExpressionStatement","src":"14207:161:82"},{"expression":{"arguments":[{"expression":{"id":55946,"name":"valueClaim","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55920,"src":"14408:10:82","typeDescriptions":{"typeIdentifier":"t_struct$_ValueClaim_$53773_calldata_ptr","typeString":"struct IRouter.ValueClaim calldata"}},"id":55947,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14419:9:82","memberName":"messageId","nodeType":"MemberAccess","referencedDeclaration":53768,"src":"14408:20:82","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":55948,"name":"valueClaim","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55920,"src":"14430:10:82","typeDescriptions":{"typeIdentifier":"t_struct$_ValueClaim_$53773_calldata_ptr","typeString":"struct IRouter.ValueClaim calldata"}},"id":55949,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14441:11:82","memberName":"destination","nodeType":"MemberAccess","referencedDeclaration":53770,"src":"14430:22:82","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":55950,"name":"valueClaim","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55920,"src":"14454:10:82","typeDescriptions":{"typeIdentifier":"t_struct$_ValueClaim_$53773_calldata_ptr","typeString":"struct IRouter.ValueClaim calldata"}},"id":55951,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14465:5:82","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":53772,"src":"14454:16:82","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint128","typeString":"uint128"}],"expression":{"id":55943,"name":"mirrorActor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55897,"src":"14383:11:82","typeDescriptions":{"typeIdentifier":"t_contract$_IMirror_$53648","typeString":"contract IMirror"}},"id":55945,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14395:12:82","memberName":"valueClaimed","nodeType":"MemberAccess","referencedDeclaration":53624,"src":"14383:24:82","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_bytes32_$_t_address_$_t_uint128_$returns$__$","typeString":"function (bytes32,address,uint128) external"}},"id":55952,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14383:88:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":55953,"nodeType":"ExpressionStatement","src":"14383:88:82"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":55914,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":55910,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55907,"src":"14070:1:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"expression":{"id":55911,"name":"stateTransition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55856,"src":"14074:15:82","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$53766_calldata_ptr","typeString":"struct IRouter.StateTransition calldata"}},"id":55912,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14090:11:82","memberName":"valueClaims","nodeType":"MemberAccess","referencedDeclaration":53761,"src":"14074:27:82","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_ValueClaim_$53773_calldata_ptr_$dyn_calldata_ptr","typeString":"struct IRouter.ValueClaim calldata[] calldata"}},"id":55913,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14102:6:82","memberName":"length","nodeType":"MemberAccess","src":"14074:34:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14070:38:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":55955,"initializationExpression":{"assignments":[55907],"declarations":[{"constant":false,"id":55907,"mutability":"mutable","name":"i","nameLocation":"14063:1:82","nodeType":"VariableDeclaration","scope":55955,"src":"14055:9:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":55906,"name":"uint256","nodeType":"ElementaryTypeName","src":"14055:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":55909,"initialValue":{"hexValue":"30","id":55908,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14067:1:82","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"14055:13:82"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":55916,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"14110:3:82","subExpression":{"id":55915,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55907,"src":"14110:1:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":55917,"nodeType":"ExpressionStatement","src":"14110:3:82"},"nodeType":"ForStatement","src":"14050:432:82"},{"assignments":[55957],"declarations":[{"constant":false,"id":55957,"mutability":"mutable","name":"messagesHashes","nameLocation":"14505:14:82","nodeType":"VariableDeclaration","scope":56052,"src":"14492:27:82","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":55956,"name":"bytes","nodeType":"ElementaryTypeName","src":"14492:5:82","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":55958,"nodeType":"VariableDeclarationStatement","src":"14492:27:82"},{"body":{"id":56028,"nodeType":"Block","src":"14592:764:82","statements":[{"assignments":[55973],"declarations":[{"constant":false,"id":55973,"mutability":"mutable","name":"outgoingMessage","nameLocation":"14631:15:82","nodeType":"VariableDeclaration","scope":56028,"src":"14606:40:82","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_OutgoingMessage_$53785_calldata_ptr","typeString":"struct IRouter.OutgoingMessage"},"typeName":{"id":55972,"nodeType":"UserDefinedTypeName","pathNode":{"id":55971,"name":"OutgoingMessage","nameLocations":["14606:15:82"],"nodeType":"IdentifierPath","referencedDeclaration":53785,"src":"14606:15:82"},"referencedDeclaration":53785,"src":"14606:15:82","typeDescriptions":{"typeIdentifier":"t_struct$_OutgoingMessage_$53785_storage_ptr","typeString":"struct IRouter.OutgoingMessage"}},"visibility":"internal"}],"id":55978,"initialValue":{"baseExpression":{"expression":{"id":55974,"name":"stateTransition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55856,"src":"14649:15:82","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$53766_calldata_ptr","typeString":"struct IRouter.StateTransition calldata"}},"id":55975,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14665:8:82","memberName":"messages","nodeType":"MemberAccess","referencedDeclaration":53765,"src":"14649:24:82","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_OutgoingMessage_$53785_calldata_ptr_$dyn_calldata_ptr","typeString":"struct IRouter.OutgoingMessage calldata[] calldata"}},"id":55977,"indexExpression":{"id":55976,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55960,"src":"14674:1:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"14649:27:82","typeDescriptions":{"typeIdentifier":"t_struct$_OutgoingMessage_$53785_calldata_ptr","typeString":"struct IRouter.OutgoingMessage calldata"}},"nodeType":"VariableDeclarationStatement","src":"14606:70:82"},{"expression":{"id":55988,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":55979,"name":"messagesHashes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55957,"src":"14691:14:82","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":55983,"name":"messagesHashes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55957,"src":"14721:14:82","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"arguments":[{"id":55985,"name":"outgoingMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55973,"src":"14758:15:82","typeDescriptions":{"typeIdentifier":"t_struct$_OutgoingMessage_$53785_calldata_ptr","typeString":"struct IRouter.OutgoingMessage calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_OutgoingMessage_$53785_calldata_ptr","typeString":"struct IRouter.OutgoingMessage calldata"}],"id":55984,"name":"_outgoingMessageHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56133,"src":"14737:20:82","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_struct$_OutgoingMessage_$53785_calldata_ptr_$returns$_t_bytes32_$","typeString":"function (struct IRouter.OutgoingMessage calldata) pure returns (bytes32)"}},"id":55986,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14737:37:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":55981,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"14708:5:82","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":55980,"name":"bytes","nodeType":"ElementaryTypeName","src":"14708:5:82","typeDescriptions":{}}},"id":55982,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14714:6:82","memberName":"concat","nodeType":"MemberAccess","src":"14708:12:82","typeDescriptions":{"typeIdentifier":"t_function_bytesconcat_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":55987,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14708:67:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"src":"14691:84:82","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":55989,"nodeType":"ExpressionStatement","src":"14691:84:82"},{"condition":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":55994,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":55990,"name":"outgoingMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55973,"src":"14794:15:82","typeDescriptions":{"typeIdentifier":"t_struct$_OutgoingMessage_$53785_calldata_ptr","typeString":"struct IRouter.OutgoingMessage calldata"}},"id":55991,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14810:12:82","memberName":"replyDetails","nodeType":"MemberAccess","referencedDeclaration":53784,"src":"14794:28:82","typeDescriptions":{"typeIdentifier":"t_struct$_ReplyDetails_$53790_calldata_ptr","typeString":"struct IRouter.ReplyDetails calldata"}},"id":55992,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14823:2:82","memberName":"to","nodeType":"MemberAccess","referencedDeclaration":53787,"src":"14794:31:82","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":55993,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14829:1:82","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"14794:36:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":56026,"nodeType":"Block","src":"15029:317:82","statements":[{"expression":{"arguments":[{"expression":{"id":56012,"name":"outgoingMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55973,"src":"15090:15:82","typeDescriptions":{"typeIdentifier":"t_struct$_OutgoingMessage_$53785_calldata_ptr","typeString":"struct IRouter.OutgoingMessage calldata"}},"id":56013,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15106:11:82","memberName":"destination","nodeType":"MemberAccess","referencedDeclaration":53777,"src":"15090:27:82","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":56014,"name":"outgoingMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55973,"src":"15139:15:82","typeDescriptions":{"typeIdentifier":"t_struct$_OutgoingMessage_$53785_calldata_ptr","typeString":"struct IRouter.OutgoingMessage calldata"}},"id":56015,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15155:7:82","memberName":"payload","nodeType":"MemberAccess","referencedDeclaration":53779,"src":"15139:23:82","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},{"expression":{"id":56016,"name":"outgoingMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55973,"src":"15184:15:82","typeDescriptions":{"typeIdentifier":"t_struct$_OutgoingMessage_$53785_calldata_ptr","typeString":"struct IRouter.OutgoingMessage calldata"}},"id":56017,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15200:5:82","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":53781,"src":"15184:21:82","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"expression":{"expression":{"id":56018,"name":"outgoingMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55973,"src":"15227:15:82","typeDescriptions":{"typeIdentifier":"t_struct$_OutgoingMessage_$53785_calldata_ptr","typeString":"struct IRouter.OutgoingMessage calldata"}},"id":56019,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15243:12:82","memberName":"replyDetails","nodeType":"MemberAccess","referencedDeclaration":53784,"src":"15227:28:82","typeDescriptions":{"typeIdentifier":"t_struct$_ReplyDetails_$53790_calldata_ptr","typeString":"struct IRouter.ReplyDetails calldata"}},"id":56020,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15256:2:82","memberName":"to","nodeType":"MemberAccess","referencedDeclaration":53787,"src":"15227:31:82","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"expression":{"id":56021,"name":"outgoingMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55973,"src":"15280:15:82","typeDescriptions":{"typeIdentifier":"t_struct$_OutgoingMessage_$53785_calldata_ptr","typeString":"struct IRouter.OutgoingMessage calldata"}},"id":56022,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15296:12:82","memberName":"replyDetails","nodeType":"MemberAccess","referencedDeclaration":53784,"src":"15280:28:82","typeDescriptions":{"typeIdentifier":"t_struct$_ReplyDetails_$53790_calldata_ptr","typeString":"struct IRouter.ReplyDetails calldata"}},"id":56023,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15309:4:82","memberName":"code","nodeType":"MemberAccess","referencedDeclaration":53789,"src":"15280:33:82","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"},{"typeIdentifier":"t_uint128","typeString":"uint128"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"expression":{"id":56009,"name":"mirrorActor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55897,"src":"15047:11:82","typeDescriptions":{"typeIdentifier":"t_contract$_IMirror_$53648","typeString":"contract IMirror"}},"id":56011,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15059:9:82","memberName":"replySent","nodeType":"MemberAccess","referencedDeclaration":53615,"src":"15047:21:82","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_uint128_$_t_bytes32_$_t_bytes4_$returns$__$","typeString":"function (address,bytes memory,uint128,bytes32,bytes4) external"}},"id":56024,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15047:284:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":56025,"nodeType":"ExpressionStatement","src":"15047:284:82"}]},"id":56027,"nodeType":"IfStatement","src":"14790:556:82","trueBody":{"id":56008,"nodeType":"Block","src":"14832:191:82","statements":[{"expression":{"arguments":[{"expression":{"id":55998,"name":"outgoingMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55973,"src":"14895:15:82","typeDescriptions":{"typeIdentifier":"t_struct$_OutgoingMessage_$53785_calldata_ptr","typeString":"struct IRouter.OutgoingMessage calldata"}},"id":55999,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14911:2:82","memberName":"id","nodeType":"MemberAccess","referencedDeclaration":53775,"src":"14895:18:82","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":56000,"name":"outgoingMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55973,"src":"14915:15:82","typeDescriptions":{"typeIdentifier":"t_struct$_OutgoingMessage_$53785_calldata_ptr","typeString":"struct IRouter.OutgoingMessage calldata"}},"id":56001,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14931:11:82","memberName":"destination","nodeType":"MemberAccess","referencedDeclaration":53777,"src":"14915:27:82","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":56002,"name":"outgoingMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55973,"src":"14944:15:82","typeDescriptions":{"typeIdentifier":"t_struct$_OutgoingMessage_$53785_calldata_ptr","typeString":"struct IRouter.OutgoingMessage calldata"}},"id":56003,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14960:7:82","memberName":"payload","nodeType":"MemberAccess","referencedDeclaration":53779,"src":"14944:23:82","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},{"expression":{"id":56004,"name":"outgoingMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55973,"src":"14969:15:82","typeDescriptions":{"typeIdentifier":"t_struct$_OutgoingMessage_$53785_calldata_ptr","typeString":"struct IRouter.OutgoingMessage calldata"}},"id":56005,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14985:5:82","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":53781,"src":"14969:21:82","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"},{"typeIdentifier":"t_uint128","typeString":"uint128"}],"expression":{"id":55995,"name":"mirrorActor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55897,"src":"14850:11:82","typeDescriptions":{"typeIdentifier":"t_contract$_IMirror_$53648","typeString":"contract IMirror"}},"id":55997,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14862:11:82","memberName":"messageSent","nodeType":"MemberAccess","referencedDeclaration":53602,"src":"14850:23:82","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_bytes32_$_t_address_$_t_bytes_memory_ptr_$_t_uint128_$returns$__$","typeString":"function (bytes32,address,bytes memory,uint128) external"}},"id":56006,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14850:158:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":56007,"nodeType":"ExpressionStatement","src":"14850:158:82"}]}}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":55967,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":55963,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55960,"src":"14550:1:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"expression":{"id":55964,"name":"stateTransition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55856,"src":"14554:15:82","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$53766_calldata_ptr","typeString":"struct IRouter.StateTransition calldata"}},"id":55965,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14570:8:82","memberName":"messages","nodeType":"MemberAccess","referencedDeclaration":53765,"src":"14554:24:82","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_OutgoingMessage_$53785_calldata_ptr_$dyn_calldata_ptr","typeString":"struct IRouter.OutgoingMessage calldata[] calldata"}},"id":55966,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14579:6:82","memberName":"length","nodeType":"MemberAccess","src":"14554:31:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14550:35:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":56029,"initializationExpression":{"assignments":[55960],"declarations":[{"constant":false,"id":55960,"mutability":"mutable","name":"i","nameLocation":"14543:1:82","nodeType":"VariableDeclaration","scope":56029,"src":"14535:9:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":55959,"name":"uint256","nodeType":"ElementaryTypeName","src":"14535:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":55962,"initialValue":{"hexValue":"30","id":55961,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14547:1:82","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"14535:13:82"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":55969,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"14587:3:82","subExpression":{"id":55968,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55960,"src":"14587:1:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":55970,"nodeType":"ExpressionStatement","src":"14587:3:82"},"nodeType":"ForStatement","src":"14530:826:82"},{"expression":{"arguments":[{"expression":{"id":56033,"name":"stateTransition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55856,"src":"15390:15:82","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$53766_calldata_ptr","typeString":"struct IRouter.StateTransition calldata"}},"id":56034,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15406:12:82","memberName":"newStateHash","nodeType":"MemberAccess","referencedDeclaration":53755,"src":"15390:28:82","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":56030,"name":"mirrorActor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55897,"src":"15366:11:82","typeDescriptions":{"typeIdentifier":"t_contract$_IMirror_$53648","typeString":"contract IMirror"}},"id":56032,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15378:11:82","memberName":"updateState","nodeType":"MemberAccess","referencedDeclaration":53591,"src":"15366:23:82","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_bytes32_$returns$__$","typeString":"function (bytes32) external"}},"id":56035,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15366:53:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":56036,"nodeType":"ExpressionStatement","src":"15366:53:82"},{"expression":{"arguments":[{"expression":{"id":56038,"name":"stateTransition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55856,"src":"15471:15:82","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$53766_calldata_ptr","typeString":"struct IRouter.StateTransition calldata"}},"id":56039,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15487:7:82","memberName":"actorId","nodeType":"MemberAccess","referencedDeclaration":53753,"src":"15471:23:82","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":56040,"name":"stateTransition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55856,"src":"15508:15:82","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$53766_calldata_ptr","typeString":"struct IRouter.StateTransition calldata"}},"id":56041,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15524:12:82","memberName":"newStateHash","nodeType":"MemberAccess","referencedDeclaration":53755,"src":"15508:28:82","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":56042,"name":"stateTransition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55856,"src":"15550:15:82","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$53766_calldata_ptr","typeString":"struct IRouter.StateTransition calldata"}},"id":56043,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15566:14:82","memberName":"valueToReceive","nodeType":"MemberAccess","referencedDeclaration":53757,"src":"15550:30:82","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"arguments":[{"id":56045,"name":"valueClaimsBytes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55904,"src":"15604:16:82","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":56044,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"15594:9:82","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":56046,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15594:27:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"arguments":[{"id":56048,"name":"messagesHashes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55957,"src":"15645:14:82","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":56047,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"15635:9:82","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":56049,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15635:25:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint128","typeString":"uint128"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":56037,"name":"_stateTransitionHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56104,"src":"15437:20:82","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_address_$_t_bytes32_$_t_uint128_$_t_bytes32_$_t_bytes32_$returns$_t_bytes32_$","typeString":"function (address,bytes32,uint128,bytes32,bytes32) pure returns (bytes32)"}},"id":56050,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15437:233:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":55860,"id":56051,"nodeType":"Return","src":"15430:240:82"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_doStateTransition","nameLocation":"13516:18:82","parameters":{"id":55857,"nodeType":"ParameterList","parameters":[{"constant":false,"id":55856,"mutability":"mutable","name":"stateTransition","nameLocation":"13560:15:82","nodeType":"VariableDeclaration","scope":56053,"src":"13535:40:82","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$53766_calldata_ptr","typeString":"struct IRouter.StateTransition"},"typeName":{"id":55855,"nodeType":"UserDefinedTypeName","pathNode":{"id":55854,"name":"StateTransition","nameLocations":["13535:15:82"],"nodeType":"IdentifierPath","referencedDeclaration":53766,"src":"13535:15:82"},"referencedDeclaration":53766,"src":"13535:15:82","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$53766_storage_ptr","typeString":"struct IRouter.StateTransition"}},"visibility":"internal"}],"src":"13534:42:82"},"returnParameters":{"id":55860,"nodeType":"ParameterList","parameters":[{"constant":false,"id":55859,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":56053,"src":"13594:7:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":55858,"name":"bytes32","nodeType":"ElementaryTypeName","src":"13594:7:82","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"13593:9:82"},"scope":56295,"stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"id":56077,"nodeType":"FunctionDefinition","src":"15683:320:82","nodes":[],"body":{"id":56076,"nodeType":"Block","src":"15883:120:82","nodes":[],"statements":[{"expression":{"arguments":[{"arguments":[{"id":56069,"name":"blockHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56055,"src":"15927:9:82","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":56070,"name":"prevCommitmentHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56057,"src":"15938:18:82","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":56071,"name":"predBlockHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56059,"src":"15958:13:82","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":56072,"name":"transitionsHashesHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56061,"src":"15973:21:82","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":56067,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"15910:3:82","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":56068,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"15914:12:82","memberName":"encodePacked","nodeType":"MemberAccess","src":"15910:16:82","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":56073,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15910:85:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":56066,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"15900:9:82","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":56074,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15900:96:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":56065,"id":56075,"nodeType":"Return","src":"15893:103:82"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_blockCommitmentHash","nameLocation":"15692:20:82","parameters":{"id":56062,"nodeType":"ParameterList","parameters":[{"constant":false,"id":56055,"mutability":"mutable","name":"blockHash","nameLocation":"15730:9:82","nodeType":"VariableDeclaration","scope":56077,"src":"15722:17:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":56054,"name":"bytes32","nodeType":"ElementaryTypeName","src":"15722:7:82","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":56057,"mutability":"mutable","name":"prevCommitmentHash","nameLocation":"15757:18:82","nodeType":"VariableDeclaration","scope":56077,"src":"15749:26:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":56056,"name":"bytes32","nodeType":"ElementaryTypeName","src":"15749:7:82","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":56059,"mutability":"mutable","name":"predBlockHash","nameLocation":"15793:13:82","nodeType":"VariableDeclaration","scope":56077,"src":"15785:21:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":56058,"name":"bytes32","nodeType":"ElementaryTypeName","src":"15785:7:82","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":56061,"mutability":"mutable","name":"transitionsHashesHash","nameLocation":"15824:21:82","nodeType":"VariableDeclaration","scope":56077,"src":"15816:29:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":56060,"name":"bytes32","nodeType":"ElementaryTypeName","src":"15816:7:82","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"15712:139:82"},"returnParameters":{"id":56065,"nodeType":"ParameterList","parameters":[{"constant":false,"id":56064,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":56077,"src":"15874:7:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":56063,"name":"bytes32","nodeType":"ElementaryTypeName","src":"15874:7:82","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"15873:9:82"},"scope":56295,"stateMutability":"pure","virtual":false,"visibility":"private"},{"id":56104,"nodeType":"FunctionDefinition","src":"16009:350:82","nodes":[],"body":{"id":56103,"nodeType":"Block","src":"16232:127:82","nodes":[],"statements":[{"expression":{"arguments":[{"arguments":[{"id":56095,"name":"actorId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56079,"src":"16276:7:82","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":56096,"name":"newStateHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56081,"src":"16285:12:82","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":56097,"name":"valueToReceive","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56083,"src":"16299:14:82","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"id":56098,"name":"valueClaimsHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56085,"src":"16315:15:82","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":56099,"name":"messagesHashesHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56087,"src":"16332:18:82","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint128","typeString":"uint128"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":56093,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"16259:3:82","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":56094,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"16263:12:82","memberName":"encodePacked","nodeType":"MemberAccess","src":"16259:16:82","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":56100,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16259:92:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":56092,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"16249:9:82","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":56101,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16249:103:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":56091,"id":56102,"nodeType":"Return","src":"16242:110:82"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_stateTransitionHash","nameLocation":"16018:20:82","parameters":{"id":56088,"nodeType":"ParameterList","parameters":[{"constant":false,"id":56079,"mutability":"mutable","name":"actorId","nameLocation":"16056:7:82","nodeType":"VariableDeclaration","scope":56104,"src":"16048:15:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":56078,"name":"address","nodeType":"ElementaryTypeName","src":"16048:7:82","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":56081,"mutability":"mutable","name":"newStateHash","nameLocation":"16081:12:82","nodeType":"VariableDeclaration","scope":56104,"src":"16073:20:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":56080,"name":"bytes32","nodeType":"ElementaryTypeName","src":"16073:7:82","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":56083,"mutability":"mutable","name":"valueToReceive","nameLocation":"16111:14:82","nodeType":"VariableDeclaration","scope":56104,"src":"16103:22:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":56082,"name":"uint128","nodeType":"ElementaryTypeName","src":"16103:7:82","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":56085,"mutability":"mutable","name":"valueClaimsHash","nameLocation":"16143:15:82","nodeType":"VariableDeclaration","scope":56104,"src":"16135:23:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":56084,"name":"bytes32","nodeType":"ElementaryTypeName","src":"16135:7:82","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":56087,"mutability":"mutable","name":"messagesHashesHash","nameLocation":"16176:18:82","nodeType":"VariableDeclaration","scope":56104,"src":"16168:26:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":56086,"name":"bytes32","nodeType":"ElementaryTypeName","src":"16168:7:82","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"16038:162:82"},"returnParameters":{"id":56091,"nodeType":"ParameterList","parameters":[{"constant":false,"id":56090,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":56104,"src":"16223:7:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":56089,"name":"bytes32","nodeType":"ElementaryTypeName","src":"16223:7:82","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"16222:9:82"},"scope":56295,"stateMutability":"pure","virtual":false,"visibility":"private"},{"id":56133,"nodeType":"FunctionDefinition","src":"16365:451:82","nodes":[],"body":{"id":56132,"nodeType":"Block","src":"16468:348:82","nodes":[],"statements":[{"expression":{"arguments":[{"arguments":[{"expression":{"id":56115,"name":"outgoingMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56107,"src":"16542:15:82","typeDescriptions":{"typeIdentifier":"t_struct$_OutgoingMessage_$53785_calldata_ptr","typeString":"struct IRouter.OutgoingMessage calldata"}},"id":56116,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"16558:2:82","memberName":"id","nodeType":"MemberAccess","referencedDeclaration":53775,"src":"16542:18:82","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":56117,"name":"outgoingMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56107,"src":"16578:15:82","typeDescriptions":{"typeIdentifier":"t_struct$_OutgoingMessage_$53785_calldata_ptr","typeString":"struct IRouter.OutgoingMessage calldata"}},"id":56118,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"16594:11:82","memberName":"destination","nodeType":"MemberAccess","referencedDeclaration":53777,"src":"16578:27:82","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":56119,"name":"outgoingMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56107,"src":"16623:15:82","typeDescriptions":{"typeIdentifier":"t_struct$_OutgoingMessage_$53785_calldata_ptr","typeString":"struct IRouter.OutgoingMessage calldata"}},"id":56120,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"16639:7:82","memberName":"payload","nodeType":"MemberAccess","referencedDeclaration":53779,"src":"16623:23:82","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},{"expression":{"id":56121,"name":"outgoingMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56107,"src":"16664:15:82","typeDescriptions":{"typeIdentifier":"t_struct$_OutgoingMessage_$53785_calldata_ptr","typeString":"struct IRouter.OutgoingMessage calldata"}},"id":56122,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"16680:5:82","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":53781,"src":"16664:21:82","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"expression":{"expression":{"id":56123,"name":"outgoingMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56107,"src":"16703:15:82","typeDescriptions":{"typeIdentifier":"t_struct$_OutgoingMessage_$53785_calldata_ptr","typeString":"struct IRouter.OutgoingMessage calldata"}},"id":56124,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"16719:12:82","memberName":"replyDetails","nodeType":"MemberAccess","referencedDeclaration":53784,"src":"16703:28:82","typeDescriptions":{"typeIdentifier":"t_struct$_ReplyDetails_$53790_calldata_ptr","typeString":"struct IRouter.ReplyDetails calldata"}},"id":56125,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"16732:2:82","memberName":"to","nodeType":"MemberAccess","referencedDeclaration":53787,"src":"16703:31:82","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"expression":{"id":56126,"name":"outgoingMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56107,"src":"16752:15:82","typeDescriptions":{"typeIdentifier":"t_struct$_OutgoingMessage_$53785_calldata_ptr","typeString":"struct IRouter.OutgoingMessage calldata"}},"id":56127,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"16768:12:82","memberName":"replyDetails","nodeType":"MemberAccess","referencedDeclaration":53784,"src":"16752:28:82","typeDescriptions":{"typeIdentifier":"t_struct$_ReplyDetails_$53790_calldata_ptr","typeString":"struct IRouter.ReplyDetails calldata"}},"id":56128,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"16781:4:82","memberName":"code","nodeType":"MemberAccess","referencedDeclaration":53789,"src":"16752:33:82","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"},{"typeIdentifier":"t_uint128","typeString":"uint128"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"expression":{"id":56113,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"16508:3:82","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":56114,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"16512:12:82","memberName":"encodePacked","nodeType":"MemberAccess","src":"16508:16:82","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":56129,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16508:291:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":56112,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"16485:9:82","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":56130,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16485:324:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":56111,"id":56131,"nodeType":"Return","src":"16478:331:82"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_outgoingMessageHash","nameLocation":"16374:20:82","parameters":{"id":56108,"nodeType":"ParameterList","parameters":[{"constant":false,"id":56107,"mutability":"mutable","name":"outgoingMessage","nameLocation":"16420:15:82","nodeType":"VariableDeclaration","scope":56133,"src":"16395:40:82","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_OutgoingMessage_$53785_calldata_ptr","typeString":"struct IRouter.OutgoingMessage"},"typeName":{"id":56106,"nodeType":"UserDefinedTypeName","pathNode":{"id":56105,"name":"OutgoingMessage","nameLocations":["16395:15:82"],"nodeType":"IdentifierPath","referencedDeclaration":53785,"src":"16395:15:82"},"referencedDeclaration":53785,"src":"16395:15:82","typeDescriptions":{"typeIdentifier":"t_struct$_OutgoingMessage_$53785_storage_ptr","typeString":"struct IRouter.OutgoingMessage"}},"visibility":"internal"}],"src":"16394:42:82"},"returnParameters":{"id":56111,"nodeType":"ParameterList","parameters":[{"constant":false,"id":56110,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":56133,"src":"16459:7:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":56109,"name":"bytes32","nodeType":"ElementaryTypeName","src":"16459:7:82","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"16458:9:82"},"scope":56295,"stateMutability":"pure","virtual":false,"visibility":"private"},{"id":56152,"nodeType":"FunctionDefinition","src":"16822:192:82","nodes":[],"body":{"id":56151,"nodeType":"Block","src":"16922:92:82","nodes":[],"statements":[{"expression":{"arguments":[{"arguments":[{"expression":{"id":56144,"name":"codeCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56136,"src":"16966:14:82","typeDescriptions":{"typeIdentifier":"t_struct$_CodeCommitment_$53740_calldata_ptr","typeString":"struct IRouter.CodeCommitment calldata"}},"id":56145,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"16981:2:82","memberName":"id","nodeType":"MemberAccess","referencedDeclaration":53737,"src":"16966:17:82","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":56146,"name":"codeCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56136,"src":"16985:14:82","typeDescriptions":{"typeIdentifier":"t_struct$_CodeCommitment_$53740_calldata_ptr","typeString":"struct IRouter.CodeCommitment calldata"}},"id":56147,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"17000:5:82","memberName":"valid","nodeType":"MemberAccess","referencedDeclaration":53739,"src":"16985:20:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":56142,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"16949:3:82","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":56143,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"16953:12:82","memberName":"encodePacked","nodeType":"MemberAccess","src":"16949:16:82","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":56148,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16949:57:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":56141,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"16939:9:82","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":56149,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16939:68:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":56140,"id":56150,"nodeType":"Return","src":"16932:75:82"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_codeCommitmentHash","nameLocation":"16831:19:82","parameters":{"id":56137,"nodeType":"ParameterList","parameters":[{"constant":false,"id":56136,"mutability":"mutable","name":"codeCommitment","nameLocation":"16875:14:82","nodeType":"VariableDeclaration","scope":56152,"src":"16851:38:82","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_CodeCommitment_$53740_calldata_ptr","typeString":"struct IRouter.CodeCommitment"},"typeName":{"id":56135,"nodeType":"UserDefinedTypeName","pathNode":{"id":56134,"name":"CodeCommitment","nameLocations":["16851:14:82"],"nodeType":"IdentifierPath","referencedDeclaration":53740,"src":"16851:14:82"},"referencedDeclaration":53740,"src":"16851:14:82","typeDescriptions":{"typeIdentifier":"t_struct$_CodeCommitment_$53740_storage_ptr","typeString":"struct IRouter.CodeCommitment"}},"visibility":"internal"}],"src":"16850:40:82"},"returnParameters":{"id":56140,"nodeType":"ParameterList","parameters":[{"constant":false,"id":56139,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":56152,"src":"16913:7:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":56138,"name":"bytes32","nodeType":"ElementaryTypeName","src":"16913:7:82","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"16912:9:82"},"scope":56295,"stateMutability":"pure","virtual":false,"visibility":"private"},{"id":56185,"nodeType":"FunctionDefinition","src":"17020:257:82","nodes":[],"body":{"id":56184,"nodeType":"Block","src":"17068:209:82","nodes":[],"statements":[{"assignments":[56159],"declarations":[{"constant":false,"id":56159,"mutability":"mutable","name":"router","nameLocation":"17094:6:82","nodeType":"VariableDeclaration","scope":56184,"src":"17078:22:82","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53731_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":56158,"nodeType":"UserDefinedTypeName","pathNode":{"id":56157,"name":"Storage","nameLocations":["17078:7:82"],"nodeType":"IdentifierPath","referencedDeclaration":53731,"src":"17078:7:82"},"referencedDeclaration":53731,"src":"17078:7:82","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53731_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"}],"id":56162,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":56160,"name":"_getStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56294,"src":"17103:11:82","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$53731_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":56161,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17103:13:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53731_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"17078:38:82"},{"assignments":[56164],"declarations":[{"constant":false,"id":56164,"mutability":"mutable","name":"success","nameLocation":"17132:7:82","nodeType":"VariableDeclaration","scope":56184,"src":"17127:12:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":56163,"name":"bool","nodeType":"ElementaryTypeName","src":"17127:4:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":56178,"initialValue":{"arguments":[{"expression":{"id":56170,"name":"tx","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-26,"src":"17182:2:82","typeDescriptions":{"typeIdentifier":"t_magic_transaction","typeString":"tx"}},"id":56171,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"17185:6:82","memberName":"origin","nodeType":"MemberAccess","src":"17182:9:82","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":56174,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"17201:4:82","typeDescriptions":{"typeIdentifier":"t_contract$_Router_$56295","typeString":"contract Router"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Router_$56295","typeString":"contract Router"}],"id":56173,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"17193:7:82","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":56172,"name":"address","nodeType":"ElementaryTypeName","src":"17193:7:82","typeDescriptions":{}}},"id":56175,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17193:13:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":56176,"name":"_value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56154,"src":"17208:6:82","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint128","typeString":"uint128"}],"expression":{"arguments":[{"expression":{"id":56166,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56159,"src":"17149:6:82","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53731_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":56167,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"17156:11:82","memberName":"wrappedVara","nodeType":"MemberAccess","referencedDeclaration":53702,"src":"17149:18:82","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":56165,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41906,"src":"17142:6:82","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$41906_$","typeString":"type(contract IERC20)"}},"id":56168,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17142:26:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$41906","typeString":"contract IERC20"}},"id":56169,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"17169:12:82","memberName":"transferFrom","nodeType":"MemberAccess","referencedDeclaration":41905,"src":"17142:39:82","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,address,uint256) external returns (bool)"}},"id":56177,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17142:73:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"VariableDeclarationStatement","src":"17127:88:82"},{"expression":{"arguments":[{"id":56180,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56164,"src":"17234:7:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"6661696c656420746f207265747269657665205756617261","id":56181,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"17243:26:82","typeDescriptions":{"typeIdentifier":"t_stringliteral_3257f3c05b2e57b37b1b4545fc8e3f040a16378fd14b34b1b901c2ec9b919712","typeString":"literal_string \"failed to retrieve WVara\""},"value":"failed to retrieve WVara"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_3257f3c05b2e57b37b1b4545fc8e3f040a16378fd14b34b1b901c2ec9b919712","typeString":"literal_string \"failed to retrieve WVara\""}],"id":56179,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"17226:7:82","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":56182,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17226:44:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":56183,"nodeType":"ExpressionStatement","src":"17226:44:82"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_retrieveValue","nameLocation":"17029:14:82","parameters":{"id":56155,"nodeType":"ParameterList","parameters":[{"constant":false,"id":56154,"mutability":"mutable","name":"_value","nameLocation":"17052:6:82","nodeType":"VariableDeclaration","scope":56185,"src":"17044:14:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":56153,"name":"uint128","nodeType":"ElementaryTypeName","src":"17044:7:82","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"17043:16:82"},"returnParameters":{"id":56156,"nodeType":"ParameterList","parameters":[],"src":"17068:0:82"},"scope":56295,"stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"id":56226,"nodeType":"FunctionDefinition","src":"17283:317:82","nodes":[],"body":{"id":56225,"nodeType":"Block","src":"17319:281:82","nodes":[],"statements":[{"assignments":[56190],"declarations":[{"constant":false,"id":56190,"mutability":"mutable","name":"router","nameLocation":"17345:6:82","nodeType":"VariableDeclaration","scope":56225,"src":"17329:22:82","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53731_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":56189,"nodeType":"UserDefinedTypeName","pathNode":{"id":56188,"name":"Storage","nameLocations":["17329:7:82"],"nodeType":"IdentifierPath","referencedDeclaration":53731,"src":"17329:7:82"},"referencedDeclaration":53731,"src":"17329:7:82","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53731_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"}],"id":56193,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":56191,"name":"_getStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56294,"src":"17354:11:82","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$53731_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":56192,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17354:13:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53731_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"17329:38:82"},{"body":{"id":56219,"nodeType":"Block","src":"17437:118:82","statements":[{"assignments":[56207],"declarations":[{"constant":false,"id":56207,"mutability":"mutable","name":"validator","nameLocation":"17459:9:82","nodeType":"VariableDeclaration","scope":56219,"src":"17451:17:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":56206,"name":"address","nodeType":"ElementaryTypeName","src":"17451:7:82","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":56212,"initialValue":{"baseExpression":{"expression":{"id":56208,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56190,"src":"17471:6:82","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53731_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":56209,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"17478:14:82","memberName":"validatorsKeys","nodeType":"MemberAccess","referencedDeclaration":53717,"src":"17471:21:82","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":56211,"indexExpression":{"id":56210,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56195,"src":"17493:1:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"17471:24:82","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"17451:44:82"},{"expression":{"id":56217,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"delete","prefix":true,"src":"17509:35:82","subExpression":{"baseExpression":{"expression":{"id":56213,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56190,"src":"17516:6:82","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53731_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":56214,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"17523:10:82","memberName":"validators","nodeType":"MemberAccess","referencedDeclaration":53714,"src":"17516:17:82","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":56216,"indexExpression":{"id":56215,"name":"validator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56207,"src":"17534:9:82","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"17516:28:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":56218,"nodeType":"ExpressionStatement","src":"17509:35:82"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":56202,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":56198,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56195,"src":"17398:1:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"expression":{"id":56199,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56190,"src":"17402:6:82","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53731_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":56200,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"17409:14:82","memberName":"validatorsKeys","nodeType":"MemberAccess","referencedDeclaration":53717,"src":"17402:21:82","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":56201,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"17424:6:82","memberName":"length","nodeType":"MemberAccess","src":"17402:28:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17398:32:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":56220,"initializationExpression":{"assignments":[56195],"declarations":[{"constant":false,"id":56195,"mutability":"mutable","name":"i","nameLocation":"17391:1:82","nodeType":"VariableDeclaration","scope":56220,"src":"17383:9:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":56194,"name":"uint256","nodeType":"ElementaryTypeName","src":"17383:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":56197,"initialValue":{"hexValue":"30","id":56196,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17395:1:82","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"17383:13:82"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":56204,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"17432:3:82","subExpression":{"id":56203,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56195,"src":"17432:1:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":56205,"nodeType":"ExpressionStatement","src":"17432:3:82"},"nodeType":"ForStatement","src":"17378:177:82"},{"expression":{"id":56223,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"delete","prefix":true,"src":"17565:28:82","subExpression":{"expression":{"id":56221,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56190,"src":"17572:6:82","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53731_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":56222,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"17579:14:82","memberName":"validatorsKeys","nodeType":"MemberAccess","referencedDeclaration":53717,"src":"17572:21:82","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":56224,"nodeType":"ExpressionStatement","src":"17565:28:82"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_cleanValidators","nameLocation":"17292:16:82","parameters":{"id":56186,"nodeType":"ParameterList","parameters":[],"src":"17308:2:82"},"returnParameters":{"id":56187,"nodeType":"ParameterList","parameters":[],"src":"17319:0:82"},"scope":56295,"stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"id":56281,"nodeType":"FunctionDefinition","src":"17606:442:82","nodes":[],"body":{"id":56280,"nodeType":"Block","src":"17673:375:82","nodes":[],"statements":[{"assignments":[56234],"declarations":[{"constant":false,"id":56234,"mutability":"mutable","name":"router","nameLocation":"17699:6:82","nodeType":"VariableDeclaration","scope":56280,"src":"17683:22:82","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53731_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":56233,"nodeType":"UserDefinedTypeName","pathNode":{"id":56232,"name":"Storage","nameLocations":["17683:7:82"],"nodeType":"IdentifierPath","referencedDeclaration":53731,"src":"17683:7:82"},"referencedDeclaration":53731,"src":"17683:7:82","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53731_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"}],"id":56237,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":56235,"name":"_getStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56294,"src":"17708:11:82","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$53731_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":56236,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17708:13:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53731_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"17683:38:82"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":56243,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":56239,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56234,"src":"17740:6:82","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53731_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":56240,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"17747:14:82","memberName":"validatorsKeys","nodeType":"MemberAccess","referencedDeclaration":53717,"src":"17740:21:82","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":56241,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"17762:6:82","memberName":"length","nodeType":"MemberAccess","src":"17740:28:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":56242,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17772:1:82","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"17740:33:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"70726576696f75732076616c696461746f727320776572656e27742072656d6f766564","id":56244,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"17775:37:82","typeDescriptions":{"typeIdentifier":"t_stringliteral_cbe432dd5148cbcd3965634d2fa4c608dba4822bc479da840b7f667e6442b9d2","typeString":"literal_string \"previous validators weren't removed\""},"value":"previous validators weren't removed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_cbe432dd5148cbcd3965634d2fa4c608dba4822bc479da840b7f667e6442b9d2","typeString":"literal_string \"previous validators weren't removed\""}],"id":56238,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"17732:7:82","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":56245,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17732:81:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":56246,"nodeType":"ExpressionStatement","src":"17732:81:82"},{"body":{"id":56272,"nodeType":"Block","src":"17878:113:82","statements":[{"assignments":[56259],"declarations":[{"constant":false,"id":56259,"mutability":"mutable","name":"validator","nameLocation":"17900:9:82","nodeType":"VariableDeclaration","scope":56272,"src":"17892:17:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":56258,"name":"address","nodeType":"ElementaryTypeName","src":"17892:7:82","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":56263,"initialValue":{"baseExpression":{"id":56260,"name":"_validatorsArray","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56229,"src":"17912:16:82","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":56262,"indexExpression":{"id":56261,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56248,"src":"17929:1:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"17912:19:82","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"17892:39:82"},{"expression":{"id":56270,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"id":56264,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56234,"src":"17945:6:82","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53731_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":56267,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"17952:10:82","memberName":"validators","nodeType":"MemberAccess","referencedDeclaration":53714,"src":"17945:17:82","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":56268,"indexExpression":{"id":56266,"name":"validator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56259,"src":"17963:9:82","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"17945:28:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":56269,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"17976:4:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"17945:35:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":56271,"nodeType":"ExpressionStatement","src":"17945:35:82"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":56254,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":56251,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56248,"src":"17844:1:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":56252,"name":"_validatorsArray","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56229,"src":"17848:16:82","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":56253,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"17865:6:82","memberName":"length","nodeType":"MemberAccess","src":"17848:23:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17844:27:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":56273,"initializationExpression":{"assignments":[56248],"declarations":[{"constant":false,"id":56248,"mutability":"mutable","name":"i","nameLocation":"17837:1:82","nodeType":"VariableDeclaration","scope":56273,"src":"17829:9:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":56247,"name":"uint256","nodeType":"ElementaryTypeName","src":"17829:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":56250,"initialValue":{"hexValue":"30","id":56249,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17841:1:82","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"17829:13:82"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":56256,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"17873:3:82","subExpression":{"id":56255,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56248,"src":"17873:1:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":56257,"nodeType":"ExpressionStatement","src":"17873:3:82"},"nodeType":"ForStatement","src":"17824:167:82"},{"expression":{"id":56278,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":56274,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56234,"src":"18001:6:82","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53731_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":56276,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"18008:14:82","memberName":"validatorsKeys","nodeType":"MemberAccess","referencedDeclaration":53717,"src":"18001:21:82","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":56277,"name":"_validatorsArray","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56229,"src":"18025:16:82","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"src":"18001:40:82","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":56279,"nodeType":"ExpressionStatement","src":"18001:40:82"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_setValidators","nameLocation":"17615:14:82","parameters":{"id":56230,"nodeType":"ParameterList","parameters":[{"constant":false,"id":56229,"mutability":"mutable","name":"_validatorsArray","nameLocation":"17647:16:82","nodeType":"VariableDeclaration","scope":56281,"src":"17630:33:82","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":56227,"name":"address","nodeType":"ElementaryTypeName","src":"17630:7:82","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":56228,"nodeType":"ArrayTypeName","src":"17630:9:82","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"src":"17629:35:82"},"returnParameters":{"id":56231,"nodeType":"ParameterList","parameters":[],"src":"17673:0:82"},"scope":56295,"stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"id":56294,"nodeType":"FunctionDefinition","src":"18054:222:82","nodes":[],"body":{"id":56293,"nodeType":"Block","src":"18123:153:82","nodes":[],"statements":[{"assignments":[56288],"declarations":[{"constant":false,"id":56288,"mutability":"mutable","name":"slot","nameLocation":"18141:4:82","nodeType":"VariableDeclaration","scope":56293,"src":"18133:12:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":56287,"name":"bytes32","nodeType":"ElementaryTypeName","src":"18133:7:82","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":56291,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":56289,"name":"getStorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54808,"src":"18148:14:82","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_bytes32_$","typeString":"function () view returns (bytes32)"}},"id":56290,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18148:16:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"18133:31:82"},{"AST":{"nativeSrc":"18227:43:82","nodeType":"YulBlock","src":"18227:43:82","statements":[{"nativeSrc":"18241:19:82","nodeType":"YulAssignment","src":"18241:19:82","value":{"name":"slot","nativeSrc":"18256:4:82","nodeType":"YulIdentifier","src":"18256:4:82"},"variableNames":[{"name":"router.slot","nativeSrc":"18241:11:82","nodeType":"YulIdentifier","src":"18241:11:82"}]}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"cancun","externalReferences":[{"declaration":56285,"isOffset":false,"isSlot":true,"src":"18241:11:82","suffix":"slot","valueSize":1},{"declaration":56288,"isOffset":false,"isSlot":false,"src":"18256:4:82","valueSize":1}],"id":56292,"nodeType":"InlineAssembly","src":"18218:52:82"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_getStorage","nameLocation":"18063:11:82","parameters":{"id":56282,"nodeType":"ParameterList","parameters":[],"src":"18074:2:82"},"returnParameters":{"id":56286,"nodeType":"ParameterList","parameters":[{"constant":false,"id":56285,"mutability":"mutable","name":"router","nameLocation":"18115:6:82","nodeType":"VariableDeclaration","scope":56294,"src":"18099:22:82","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53731_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":56284,"nodeType":"UserDefinedTypeName","pathNode":{"id":56283,"name":"Storage","nameLocations":["18099:7:82"],"nodeType":"IdentifierPath","referencedDeclaration":53731,"src":"18099:7:82"},"referencedDeclaration":53731,"src":"18099:7:82","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53731_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"}],"src":"18098:24:82"},"scope":56295,"stateMutability":"view","virtual":false,"visibility":"private"}],"abstract":false,"baseContracts":[{"baseName":{"id":54611,"name":"IRouter","nameLocations":["800:7:82"],"nodeType":"IdentifierPath","referencedDeclaration":54013,"src":"800:7:82"},"id":54612,"nodeType":"InheritanceSpecifier","src":"800:7:82"},{"baseName":{"id":54613,"name":"OwnableUpgradeable","nameLocations":["809:18:82"],"nodeType":"IdentifierPath","referencedDeclaration":39024,"src":"809:18:82"},"id":54614,"nodeType":"InheritanceSpecifier","src":"809:18:82"},{"baseName":{"id":54615,"name":"ReentrancyGuardTransient","nameLocations":["829:24:82"],"nodeType":"IdentifierPath","referencedDeclaration":42400,"src":"829:24:82"},"id":54616,"nodeType":"InheritanceSpecifier","src":"829:24:82"}],"canonicalName":"Router","contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"linearizedBaseContracts":[56295,42400,39024,40172,39278,54013],"name":"Router","nameLocation":"790:6:82","scope":56296,"usedErrors":[38860,38865,39041,39044,42267,42273,42344,43050,43055,43060],"usedEvents":[38871,39049,53795,53802,53809,53816,53819,53822,53827,53832]}],"license":"UNLICENSED"},"id":82} \ No newline at end of file +{"abi":[{"type":"constructor","inputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"baseFee","inputs":[],"outputs":[{"name":"","type":"uint128","internalType":"uint128"}],"stateMutability":"view"},{"type":"function","name":"baseWeight","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"codeState","inputs":[{"name":"codeId","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"uint8","internalType":"enum IRouter.CodeState"}],"stateMutability":"view"},{"type":"function","name":"commitBlocks","inputs":[{"name":"blockCommitmentsArray","type":"tuple[]","internalType":"struct IRouter.BlockCommitment[]","components":[{"name":"blockHash","type":"bytes32","internalType":"bytes32"},{"name":"prevCommitmentHash","type":"bytes32","internalType":"bytes32"},{"name":"predBlockHash","type":"bytes32","internalType":"bytes32"},{"name":"transitions","type":"tuple[]","internalType":"struct IRouter.StateTransition[]","components":[{"name":"actorId","type":"address","internalType":"address"},{"name":"newStateHash","type":"bytes32","internalType":"bytes32"},{"name":"inheritor","type":"address","internalType":"address"},{"name":"valueToReceive","type":"uint128","internalType":"uint128"},{"name":"valueClaims","type":"tuple[]","internalType":"struct IRouter.ValueClaim[]","components":[{"name":"messageId","type":"bytes32","internalType":"bytes32"},{"name":"destination","type":"address","internalType":"address"},{"name":"value","type":"uint128","internalType":"uint128"}]},{"name":"messages","type":"tuple[]","internalType":"struct IRouter.OutgoingMessage[]","components":[{"name":"id","type":"bytes32","internalType":"bytes32"},{"name":"destination","type":"address","internalType":"address"},{"name":"payload","type":"bytes","internalType":"bytes"},{"name":"value","type":"uint128","internalType":"uint128"},{"name":"replyDetails","type":"tuple","internalType":"struct IRouter.ReplyDetails","components":[{"name":"to","type":"bytes32","internalType":"bytes32"},{"name":"code","type":"bytes4","internalType":"bytes4"}]}]}]}]},{"name":"signatures","type":"bytes[]","internalType":"bytes[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"commitCodes","inputs":[{"name":"codeCommitmentsArray","type":"tuple[]","internalType":"struct IRouter.CodeCommitment[]","components":[{"name":"id","type":"bytes32","internalType":"bytes32"},{"name":"valid","type":"bool","internalType":"bool"}]},{"name":"signatures","type":"bytes[]","internalType":"bytes[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"createProgram","inputs":[{"name":"codeId","type":"bytes32","internalType":"bytes32"},{"name":"salt","type":"bytes32","internalType":"bytes32"},{"name":"payload","type":"bytes","internalType":"bytes"},{"name":"_value","type":"uint128","internalType":"uint128"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"payable"},{"type":"function","name":"createProgramWithDecoder","inputs":[{"name":"decoderImplementation","type":"address","internalType":"address"},{"name":"codeId","type":"bytes32","internalType":"bytes32"},{"name":"salt","type":"bytes32","internalType":"bytes32"},{"name":"payload","type":"bytes","internalType":"bytes"},{"name":"_value","type":"uint128","internalType":"uint128"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"payable"},{"type":"function","name":"genesisBlockHash","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"getStorageSlot","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"initialize","inputs":[{"name":"initialOwner","type":"address","internalType":"address"},{"name":"_mirror","type":"address","internalType":"address"},{"name":"_mirrorProxy","type":"address","internalType":"address"},{"name":"_wrappedVara","type":"address","internalType":"address"},{"name":"_validatorsKeys","type":"address[]","internalType":"address[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"lastBlockCommitmentHash","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"mirror","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"mirrorProxy","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"owner","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"programCodeId","inputs":[{"name":"program","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"programsCount","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"reinitialize","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"renounceOwnership","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"requestCodeValidation","inputs":[{"name":"codeId","type":"bytes32","internalType":"bytes32"},{"name":"blobTxHash","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setBaseWeight","inputs":[{"name":"_baseWeight","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setMirror","inputs":[{"name":"_mirror","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setStorageSlot","inputs":[{"name":"namespace","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setValuePerWeight","inputs":[{"name":"_valuePerWeight","type":"uint128","internalType":"uint128"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"signingThresholdPercentage","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"transferOwnership","inputs":[{"name":"newOwner","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"updateValidators","inputs":[{"name":"validatorsAddressArray","type":"address[]","internalType":"address[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"validatedCodesCount","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"validatorExists","inputs":[{"name":"validator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"validators","inputs":[],"outputs":[{"name":"","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"validatorsCount","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"validatorsThreshold","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"valuePerWeight","inputs":[],"outputs":[{"name":"","type":"uint128","internalType":"uint128"}],"stateMutability":"view"},{"type":"function","name":"wrappedVara","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"event","name":"BaseWeightChanged","inputs":[{"name":"baseWeight","type":"uint64","indexed":false,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"BlockCommitted","inputs":[{"name":"blockHash","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"CodeGotValidated","inputs":[{"name":"id","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"valid","type":"bool","indexed":true,"internalType":"bool"}],"anonymous":false},{"type":"event","name":"CodeValidationRequested","inputs":[{"name":"codeId","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"blobTxHash","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"Initialized","inputs":[{"name":"version","type":"uint64","indexed":false,"internalType":"uint64"}],"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":"ProgramCreated","inputs":[{"name":"actorId","type":"address","indexed":false,"internalType":"address"},{"name":"codeId","type":"bytes32","indexed":true,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"StorageSlotChanged","inputs":[],"anonymous":false},{"type":"event","name":"ValidatorsSetChanged","inputs":[],"anonymous":false},{"type":"event","name":"ValuePerWeightChanged","inputs":[{"name":"valuePerWeight","type":"uint128","indexed":false,"internalType":"uint128"}],"anonymous":false},{"type":"error","name":"ECDSAInvalidSignature","inputs":[]},{"type":"error","name":"ECDSAInvalidSignatureLength","inputs":[{"name":"length","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ECDSAInvalidSignatureS","inputs":[{"name":"s","type":"bytes32","internalType":"bytes32"}]},{"type":"error","name":"FailedDeployment","inputs":[]},{"type":"error","name":"InsufficientBalance","inputs":[{"name":"balance","type":"uint256","internalType":"uint256"},{"name":"needed","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InvalidInitialization","inputs":[]},{"type":"error","name":"NotInitializing","inputs":[]},{"type":"error","name":"OwnableInvalidOwner","inputs":[{"name":"owner","type":"address","internalType":"address"}]},{"type":"error","name":"OwnableUnauthorizedAccount","inputs":[{"name":"account","type":"address","internalType":"address"}]},{"type":"error","name":"ReentrancyGuardReentrantCall","inputs":[]}],"bytecode":{"object":"0x6080806040523460d0577ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005460ff8160401c1660c1576002600160401b03196001600160401b03821601605c575b60405161289290816100d58239f35b6001600160401b0319166001600160401b039081177ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005581527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602090a15f80604d565b63f92ee8a960e01b5f5260045ffd5b5f80fdfe6080806040526004361015610012575f80fd5b5f3560e01c9081627a32e714611c6e575080630834fecc14611c375780631c149d8a14611aef57806326637f6d146111c357806328e24b3d146111995780632dacfb691461116c5780633d43b4181461111a578063444d9172146110e25780635686cad514611030578063666d124c14610f345780636c2eb35014610d2c5780636ef25c3a14610d01578063715018a614610c9a57806378ee5dec14610c625780638028861a14610be55780638074b45514610b2657806388f50cf014610aee5780638da5cb5b14610aba5780638febbd5914610a6d5780639067088e14610a2557806396708226146109fc57806396a2ddfa146109cf578063a6bbbe1c14610924578063c13911e8146108de578063ca1e781914610867578063d3fd636414610831578063e71731e414610744578063e97d3eb31461051f578063ed612f8c146104f2578063edc87225146104d0578063efd81abc146104a3578063f2fde38b1461047d5763f8453e7c14610186575f80fd5b346104795760a03660031901126104795761019f611cc8565b602435906001600160a01b038216820361047957604435916001600160a01b038316830361047957606435926001600160a01b0384168403610479576084356001600160401b03811161047957366023820112156104795761020b903690602481600401359101611d85565b905f8051602061283d8339815191525460ff8160401c1615946001600160401b03821680159081610471575b6001149081610467575b15908161045e575b5061044f5767ffffffffffffffff1982166001175f8051602061283d8339815191525561028c9186610423575b5061027f6126b5565b6102876126b5565b611f61565b604094855161029b8782611cde565b6017815260208101907f726f757465722e73746f726167652e526f75746572563100000000000000000082526102cf6121e0565b5190205f19810190811161040f5786519060208201908152602082526102f58883611cde565b60ff19915190201690815f8051602061281d833981519152557f5aa0c6c9fb33211212ffe5bef7a4b5d511b82a611e6677052d984e2bcedeaccc5f80a15f1943019243841161040f57924082556001820180546001600160a01b03199081166001600160a01b03978816179091556002830180548216948716949094179093556003820180549093169416939093179055611a0a60058301556006919091018054680a000000009502f9006001600160c01b03199091161790556103b8906124a7565b6103be57005b60207fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29160ff60401b195f8051602061283d83398151915254165f8051602061283d833981519152555160018152a1005b634e487b7160e01b5f52601160045260245ffd5b68ffffffffffffffffff191668010000000000000001175f8051602061283d833981519152555f610276565b63f92ee8a960e01b5f5260045ffd5b9050155f610249565b303b159150610241565b879150610237565b5f80fd5b34610479576020366003190112610479576104a1610499611cc8565b6102876121e0565b005b34610479575f36600319011261047957602060055f8051602061281d833981519152540154604051908152f35b34610479575f3660031901126104795760206104ea611f23565b604051908152f35b34610479575f36600319011261047957602060085f8051602061281d833981519152540154604051908152f35b34610479576040366003190112610479576004356001600160401b0381116104795736602382011215610479578060040135906001600160401b038211610479573660248360061b83010111610479576024356001600160401b0381116104795761058f83913690600401611c98565b90925f8051602061281d83398151915254906060925f9560098401945b86881015610733578760061b8401976105fe604460248b01359a01926105d184611f08565b60405160208101918d8352151560f81b6040820152602181526105f5604182611cde565b51902090611de9565b98805f528760205260ff60405f205416600381101561071f576001036106ca57610629600193611f08565b15610687577f460119a8f69a33ed127de517d5ea464e958ce23ef19e4420a8b92bf780bbc2c960208285935f528a825260405f20600260ff19825416179055600a8a016106768154611f15565b9055604051908152a25b01966105ac565b7f460119a8f69a33ed127de517d5ea464e958ce23ef19e4420a8b92bf780bbc2c96020825f9384528a825260408420805460ff19169055604051908152a2610680565b60405162461bcd60e51b815260206004820152602760248201527f636f64652073686f756c642062652072657175657374656420666f722076616c60448201526634b230ba34b7b760c91b6064820152608490fd5b634e487b7160e01b5f52602160045260245ffd5b6104a193506020815191012061205b565b34610479576020366003190112610479576004356001600160401b03811161047957610774903690600401611c98565b61077c6121e0565b5f8051602061281d8339815191525460078101906008015f5b81548110156107cc575f82815260208082208301546001600160a01b0316825284905260409020805460ff19169055600101610795565b5080545f8255915081610813575b6107ed6107e8368587611d85565b6124a7565b7f144bbc027dc176e94c43b7c1bcff2a8aa58ab434029eec294743cd4ab2e54f515f80a1005b5f5260205f20908101905b818110156107da575f815560010161081e565b34610479575f3660031901126104795760206001600160401b0360065f8051602061281d83398151915254015416604051908152f35b34610479575f3660031901126104795761089160085f8051602061281d8339815191525401611e75565b6040518091602082016020835281518091526020604084019201905f5b8181106108bc575050500390f35b82516001600160a01b03168452859450602093840193909201916001016108ae565b346104795760203660031901126104795760095f8051602061281d83398151915254016004355f5260205260ff60405f205416604051600382101561071f576020918152f35b34610479576020366003190112610479576004356001600160801b03811690818103610479577f9f5e1796f1a0adf311f86170503308a06a16560a7679b7b6da35f4999200d740916020916109776121e0565b5f8051602061281d83398151915254600601805477ffffffffffffffffffffffffffffffff00000000000000001916604092831b77ffffffffffffffffffffffffffffffff00000000000000001617905551908152a1005b34610479575f366003190112610479576020600c5f8051602061281d833981519152540154604051908152f35b34610479575f3660031901126104795760205f8051602061281d83398151915254604051908152f35b3461047957602036600319011261047957610a3e611cc8565b600b5f8051602061281d83398151915254019060018060a01b03165f52602052602060405f2054604051908152f35b3461047957602036600319011261047957610a86611cc8565b60075f8051602061281d83398151915254019060018060a01b03165f52602052602060ff60405f2054166040519015158152f35b34610479575f366003190112610479575f805160206127fd833981519152546040516001600160a01b039091168152602090f35b34610479575f366003190112610479575f8051602061281d83398151915254600301546040516001600160a01b039091168152602090f35b6080366003190112610479576044356001600160401b03811161047957610b51903690600401611d58565b90606435916001600160801b038316830361047957610b7583602435600435612233565b6001600160a01b0390911692909190833b1561047957610bac5f9360405196879485946306f0ee9760e51b86523260048701611e38565b038183855af1918215610bda57602092610bca575b50604051908152f35b5f610bd491611cde565b82610bc1565b6040513d5f823e3d90fd5b34610479576020366003190112610479576004356001600160401b0381168091036104795760207f01326573cfc0bc40a2550923254394ebd7529e3e3301840dfa33cf786aead0c791610c366121e0565b5f8051602061281d83398151915254600601805467ffffffffffffffff191682179055604051908152a1005b34610479575f366003190112610479575f8051602061281d83398151915254600201546040516001600160a01b039091168152602090f35b34610479575f36600319011261047957610cb26121e0565b5f805160206127fd83398151915280546001600160a01b031981169091555f906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b34610479575f366003190112610479576020610d1b611ec6565b6001600160801b0360405191168152f35b34610479575f36600319011261047957610d446121e0565b5f8051602061283d8339815191525460ff8160401c168015610f20575b61044f5768ffffffffffffffffff191668010000000000000002175f8051602061283d833981519152555f8051602061281d833981519152546001810154600282015460038301546001600160a01b0390811693918116921690610dc790600801611e75565b906040918251610dd78482611cde565b6017815260208101907f726f757465722e73746f726167652e526f7574657256320000000000000000008252610e0b6121e0565b5190205f19810190811161040f578351906020820190815260208252610e318583611cde565b60ff19915190201694855f8051602061281d833981519152557f5aa0c6c9fb33211212ffe5bef7a4b5d511b82a611e6677052d984e2bcedeaccc5f80a15f19430143811161040f574086556001860180546001600160a01b03199081166001600160a01b03958616179091556002870180548216968516969096179095556003909501805490941694909116939093179091557fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29160209190610ef3906124a7565b60ff60401b195f8051602061283d83398151915254165f8051602061283d833981519152555160028152a1005b5060026001600160401b0382161015610d61565b60a036600319011261047957610f48611cc8565b6044356024356064356001600160401b03811161047957610f6d903690600401611d58565b90608435946001600160801b038616860361047957610f8d868686612233565b949060018060a01b0316956040519060208201928352604082015260408152610fb7606082611cde565b519020853b1561047957604051635b1b84f760e01b81526001600160a01b03909216600483015260248201525f8160448183895af18015610bda57611020575b50833b1561047957610bac5f9360405196879485946306f0ee9760e51b86523260048701611e38565b5f61102a91611cde565b85610ff7565b34610479576020366003190112610479576004356001600160401b038111610479573660238201121561047957611071903690602481600401359101611d13565b6110796121e0565b602081519101205f19810190811161040f576040519060208201908152602082526110a5604083611cde565b9051902060ff19165f8051602061281d833981519152557f5aa0c6c9fb33211212ffe5bef7a4b5d511b82a611e6677052d984e2bcedeaccc5f80a1005b34610479575f366003190112610479575f8051602061281d83398151915254600101546040516001600160a01b039091168152602090f35b3461047957602036600319011261047957611133611cc8565b61113b6121e0565b5f8051602061281d8339815191525460010180546001600160a01b0319166001600160a01b03909216919091179055005b34610479575f36600319011261047957602060045f8051602061281d833981519152540154604051908152f35b34610479575f3660031901126104795760205f8051602061281d8339815191525454604051908152f35b34610479576040366003190112610479576004356001600160401b038111610479576111f3903690600401611c98565b906024356001600160401b03811161047957611213903690600401611c98565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f009291925c611ae057919260017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005d5f9060605b81831015611aa9578260051b84013590607e19853603018212156104795760045f8051602061281d83398151915254019384546020848801013503611a655760408387010135946112b7866125e8565b15611a1457838799949899969596013590556060935f978581890101905b6112e182828b01611fd2565b90508a1015611991576113008a6112fa84848d01611fd2565b90612007565b975f8051602061281d833981519152546113198a61262b565b6001600160a01b03165f908152600b820160205260409020541561193457600301546001600160801b03906020906001600160a01b031660448c5f61136960606113628461262b565b930161263f565b60405163a9059cbb60e01b81526001600160a01b0390931660048401529590951660248201529384928391905af18015610bda57611908575b506001600160a01b036113b48a61262b565b169b5f9160605b6113c860808d018d61266b565b905084101561152f576113de60808d018d61266b565b859195101561151b578f916114896020918261140081606087028b010161262b565b6114116040606088028c010161263f565b6040519083820192606089028d013584526001600160601b03199060601b1660408301526001600160801b03199060801b16605482015260448152611457606482611cde565b6040519584879551918291018587015e840190838201905f8252519283915e01015f815203601f198101835282611cde565b9461149b60206060840283010161262b565b6114ac60406060850284010161263f565b93803b15610479575f92836064926001600160801b0360405198899687956314503e5160e01b875260608b020135600487015260018060a01b031660248601521660448401525af1918215610bda5760019261150b575b5001926113bb565b5f61151591611cde565b5f611503565b634e487b7160e01b5f52603260045260245ffd5b9891979d9b9394959692509b989b60605f5b61154e60a08e018e611fd2565b905081101561179b5790818e9493928e60a0810161156b91611fd2565b6115759291612007565b60208101956115838761262b565b9660408301946115938685612029565b9099906115a26060870161263f565b9a60a087019b6115b18d6126a0565b8360405194859460208601978c3589526001600160601b03199060601b16604087015260548601378301916001600160801b03199060801b1660548301526080890135606483015263ffffffff60e01b1660848201520360540160148101825260340161161e9082611cde565b51902061162a91611de9565b9760808401356116db57506116416116489161262b565b9483612029565b9190946116576060850161263f565b823b15610479575f9485916001600160801b036116a56040519a8b988997889663c2df600960e01b885235600488015260018060a01b03166024870152608060448701526084860191611e18565b9116606483015203925af1918215610bda576001926116cb575b505b0192909192611541565b5f6116d591611cde565b5f6116bf565b949291906116eb6116f29161262b565b9383612029565b90926117096117036060830161263f565b976126a0565b94833b1561047957611755975f96608088946001600160801b036040519c8d9a8b998a9863c78bde7760e01b8a5260018060a01b031660048a015260a060248a015260a4890191611e18565b94166044860152013560648401526001600160e01b031916608483015203925af1918215610bda5760019261178b575b506116c1565b5f61179591611cde565b5f611785565b509d97949892969a90959d9c919c9b939b604082019160018060a01b036117c18461262b565b166118b1575b602081013591863b15610479575f80976024604051809a8193638ea59e1d60e01b83528860048401525af1958615610bda57600197611892976118a1575b50611824606061181d6118178661262b565b9761262b565b940161263f565b90602081519101209160208151910120926040519460208601966001600160601b03199060601b16875260348601526001600160601b03199060601b1660548501526001600160801b03199060801b16606884015260788301526098820152609881526105f560b882611cde565b960198949990999691966112d5565b5f6118ab91611cde565b5f611805565b6118ba8361262b565b863b1561047957604051630959112b60e11b81526001600160a01b0390911660048201525f81602481838b5af18015610bda576118f8575b506117c7565b5f61190291611cde565b5f6118f2565b6119289060203d811161192d575b6119208183611cde565b810190612653565b6113a2565b503d611916565b60405162461bcd60e51b815260206004820152602f60248201527f636f756c646e277420706572666f726d207472616e736974696f6e20666f722060448201526e756e6b6e6f776e2070726f6772616d60881b6064820152608490fd5b919050611a0893929850600194959996997fd756eca21e02cb0dbde1e44a4d9c6921b5c8aa4668cfa0752784b3dc855bce1e6020604051858c01358152a16020815191012060405191602080840194808c013586528b010135604084015260608301526080820152608081526105f560a082611cde565b94019193949094611267565b60405162461bcd60e51b815260206004820152602360248201527f616c6c6f776564207072656465636573736f7220626c6f636b206e6f7420666f6044820152621d5b9960ea1b6064820152608490fd5b606460405162461bcd60e51b815260206004820152602060248201527f696e76616c69642070726576696f757320636f6d6d69746d656e7420686173686044820152fd5b8486611abb926020815191012061205b565b5f7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005d005b633ee5aeb560e01b5f5260045ffd5b34610479576040366003190112610479576024356004358115801590611c2d575b15611be85760095f8051602061281d833981519152540190805f528160205260ff60405f205416600381101561071f57611b8a577f65672eaf4ff8b823ea29ae013fef437d1fa9ed431125263a7a1f0ac49eada39692604092825f52602052825f20600160ff1982541617905582519182526020820152a1005b60405162461bcd60e51b815260206004820152603060248201527f636f64652077697468207375636820696420616c72656164792072657175657360448201526f1d1959081bdc881d985b1a59185d195960821b6064820152608490fd5b60405162461bcd60e51b815260206004820152601c60248201527f626c6f6254784861736820636f756c646e277420626520666f756e64000000006044820152606490fd5b505f491515611b10565b34610479575f366003190112610479576020610d1b6001600160801b0360065f8051602061281d83398151915254015460401c1690565b34610479575f36600319011261047957602090600a5f8051602061281d8339815191525401548152f35b9181601f84011215610479578235916001600160401b038311610479576020808501948460051b01011161047957565b600435906001600160a01b038216820361047957565b90601f801991011681019081106001600160401b03821117611cff57604052565b634e487b7160e01b5f52604160045260245ffd5b9291926001600160401b038211611cff5760405191611d3c601f8201601f191660200184611cde565b829481845281830111610479578281602093845f960137010152565b9181601f84011215610479578235916001600160401b038311610479576020838186019501011161047957565b9092916001600160401b038411611cff578360051b916020604051611dac82860182611cde565b809681520192810191821161047957915b818310611dc957505050565b82356001600160a01b038116810361047957815260209283019201611dbd565b602080611e16928195946040519682889351918291018585015e8201908382015203018085520183611cde565b565b908060209392818452848401375f828201840152601f01601f1916010190565b93959490611e686001600160801b0393606095859360018060a01b03168852608060208901526080880191611e18565b9616604085015216910152565b90604051918281549182825260208201905f5260205f20925f5b818110611ea4575050611e1692500383611cde565b84546001600160a01b0316835260019485019487945060209093019201611e8f565b5f8051602061281d83398151915254600601546001600160401b038116906001600160801b039060401c811616026001600160801b03811690810361040f5790565b3580151581036104795790565b5f19811461040f5760010190565b5f8051602061281d83398151915254600560088201549101549081810291818304149015171561040f5761270f810180911161040f57612710900490565b6001600160a01b03168015611fbf575f805160206127fd83398151915280546001600160a01b0319811683179091556001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3565b631e4fbdf760e01b5f525f60045260245ffd5b903590601e198136030182121561047957018035906001600160401b03821161047957602001918160051b3603831361047957565b919081101561151b5760051b8101359060be1981360301821215610479570190565b903590601e198136030182121561047957018035906001600160401b0382116104795760200191813603831361047957565b905f8051602061281d8339815191525490612074611f23565b9260405190602082019081526020825261208f604083611cde565b6120cb603660405180936020820195601960f81b87523060601b60228401525180918484015e81015f838201520301601f198101835282611cde565b5190205f9260070191835b868510156121d45761210c6121036120fd6120f68860051b860186612029565b3691611d13565b856126e0565b9092919261271a565b6001600160a01b03165f9081526020859052604090205460ff16156121995761213490611f15565b9385851461214557600101936120d6565b505050509091505b1061215457565b60405162461bcd60e51b815260206004820152601b60248201527f6e6f7420656e6f7567682076616c6964207369676e61747572657300000000006044820152606490fd5b60405162461bcd60e51b8152602060048201526013602482015272696e636f7272656374207369676e617475726560681b6044820152606490fd5b9495505050505061214d565b5f805160206127fd833981519152546001600160a01b0316330361220057565b63118cdaa760e01b5f523360045260245ffd5b906001600160801b03809116911601906001600160801b03821161040f57565b9291925f8051602061281d8339815191525491815f526009830160205260ff60405f205416600381101561071f5760020361244b57612270611ec6565b600a6001600160801b03821602956001600160801b03871696870361040f5761229c876122a193612213565b612213565b60038401546040516323b872dd60e01b81523260048201523060248201526001600160801b03929092166044830152602090829060649082905f906001600160a01b03165af1908115610bda575f9161242c575b50156123e7576e5af43d82803e903d91602b57fd5bf36002840154916040516020810191858352604082015260408152612330606082611cde565b51902091763d602d80600a3d3981f3363d3d373d3d3d363d7300000062ffffff8260881c16175f526effffffffffffffffffffffffffffff199060781b1617602052603760095ff5916001600160a01b0383169081156123d8577f8008ec1d8798725ebfa0f2d128d52e8e717dcba6e0f786557eeee70614b02bf191600c602092825f52600b810184528560405f2055016123cb8154611f15565b9055604051908152a29190565b63b06ebf3d60e01b5f5260045ffd5b60405162461bcd60e51b815260206004820152601860248201527f6661696c656420746f20726574726965766520575661726100000000000000006044820152606490fd5b612445915060203d60201161192d576119208183611cde565b5f6122f5565b60405162461bcd60e51b815260206004820152602e60248201527f636f6465206d7573742062652076616c696461746564206265666f726520707260448201526d37b3b930b69031b932b0ba34b7b760911b6064820152608490fd5b5f8051602061281d833981519152549060088201908154612597579091600701905f5b815181101561250957600581901b82016020908101516001600160a01b03165f9081529084905260409020805460ff19166001908117909155016124ca565b5080519291506001600160401b038311611cff57680100000000000000008311611cff578154838355808410612571575b50602001905f5260205f205f5b8381106125545750505050565b82516001600160a01b031681830155602090920191600101612547565b825f528360205f2091820191015b81811061258c575061253a565b5f815560010161257f565b60405162461bcd60e51b815260206004820152602360248201527f70726576696f75732076616c696461746f727320776572656e27742072656d6f6044820152621d995960ea1b6064820152608490fd5b905f19430143811161040f57805b612601575b505f9150565b804083810361261257506001925050565b1561262657801561040f575f1901806125f6565b6125fb565b356001600160a01b03811681036104795790565b356001600160801b03811681036104795790565b90816020910312610479575180151581036104795790565b903590601e198136030182121561047957018035906001600160401b0382116104795760200191606082023603831361047957565b356001600160e01b0319811681036104795790565b60ff5f8051602061283d8339815191525460401c16156126d157565b631afcd79f60e31b5f5260045ffd5b8151919060418303612710576127099250602082015190606060408401519301515f1a9061277a565b9192909190565b50505f9160029190565b600481101561071f578061272c575050565b600181036127435763f645eedf60e01b5f5260045ffd5b6002810361275e575063fce698f760e01b5f5260045260245ffd5b6003146127685750565b6335e2f38360e21b5f5260045260245ffd5b91907f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a084116127f1579160209360809260ff5f9560405194855216868401526040830152606082015282805260015afa15610bda575f516001600160a01b038116156127e757905f905f90565b505f906001905f90565b5050505f916003919056fe9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c1993005c09ca1b9b8127a4fd9f3c384aac59b661441e820e17733753ff5f2e86e1e000f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a26469706673582212202f2e66209ad98f54c93b36e91e5e324eb74638b4dbb003ea753fc50026d2075f64736f6c634300081a0033","sourceMap":"781:17727:82:-:0;;;;;;;8837:64:25;781:17727:82;;;;;;7896:76:25;;-1:-1:-1;;;;;;;;;;;781:17727:82;;7985:34:25;7981:146;;-1:-1:-1;781:17727:82;;;;;;;;;7981:146:25;-1:-1:-1;;;;;;781:17727:82;-1:-1:-1;;;;;781:17727:82;;;8837:64:25;781:17727:82;;;8087:29:25;;781:17727:82;;8087:29:25;7981:146;;;;7896:76;7938:23;;;-1:-1:-1;7938:23:25;;-1:-1:-1;7938:23:25;781:17727:82;;;","linkReferences":{}},"deployedBytecode":{"object":"0x6080806040526004361015610012575f80fd5b5f3560e01c9081627a32e714611c6e575080630834fecc14611c375780631c149d8a14611aef57806326637f6d146111c357806328e24b3d146111995780632dacfb691461116c5780633d43b4181461111a578063444d9172146110e25780635686cad514611030578063666d124c14610f345780636c2eb35014610d2c5780636ef25c3a14610d01578063715018a614610c9a57806378ee5dec14610c625780638028861a14610be55780638074b45514610b2657806388f50cf014610aee5780638da5cb5b14610aba5780638febbd5914610a6d5780639067088e14610a2557806396708226146109fc57806396a2ddfa146109cf578063a6bbbe1c14610924578063c13911e8146108de578063ca1e781914610867578063d3fd636414610831578063e71731e414610744578063e97d3eb31461051f578063ed612f8c146104f2578063edc87225146104d0578063efd81abc146104a3578063f2fde38b1461047d5763f8453e7c14610186575f80fd5b346104795760a03660031901126104795761019f611cc8565b602435906001600160a01b038216820361047957604435916001600160a01b038316830361047957606435926001600160a01b0384168403610479576084356001600160401b03811161047957366023820112156104795761020b903690602481600401359101611d85565b905f8051602061283d8339815191525460ff8160401c1615946001600160401b03821680159081610471575b6001149081610467575b15908161045e575b5061044f5767ffffffffffffffff1982166001175f8051602061283d8339815191525561028c9186610423575b5061027f6126b5565b6102876126b5565b611f61565b604094855161029b8782611cde565b6017815260208101907f726f757465722e73746f726167652e526f75746572563100000000000000000082526102cf6121e0565b5190205f19810190811161040f5786519060208201908152602082526102f58883611cde565b60ff19915190201690815f8051602061281d833981519152557f5aa0c6c9fb33211212ffe5bef7a4b5d511b82a611e6677052d984e2bcedeaccc5f80a15f1943019243841161040f57924082556001820180546001600160a01b03199081166001600160a01b03978816179091556002830180548216948716949094179093556003820180549093169416939093179055611a0a60058301556006919091018054680a000000009502f9006001600160c01b03199091161790556103b8906124a7565b6103be57005b60207fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29160ff60401b195f8051602061283d83398151915254165f8051602061283d833981519152555160018152a1005b634e487b7160e01b5f52601160045260245ffd5b68ffffffffffffffffff191668010000000000000001175f8051602061283d833981519152555f610276565b63f92ee8a960e01b5f5260045ffd5b9050155f610249565b303b159150610241565b879150610237565b5f80fd5b34610479576020366003190112610479576104a1610499611cc8565b6102876121e0565b005b34610479575f36600319011261047957602060055f8051602061281d833981519152540154604051908152f35b34610479575f3660031901126104795760206104ea611f23565b604051908152f35b34610479575f36600319011261047957602060085f8051602061281d833981519152540154604051908152f35b34610479576040366003190112610479576004356001600160401b0381116104795736602382011215610479578060040135906001600160401b038211610479573660248360061b83010111610479576024356001600160401b0381116104795761058f83913690600401611c98565b90925f8051602061281d83398151915254906060925f9560098401945b86881015610733578760061b8401976105fe604460248b01359a01926105d184611f08565b60405160208101918d8352151560f81b6040820152602181526105f5604182611cde565b51902090611de9565b98805f528760205260ff60405f205416600381101561071f576001036106ca57610629600193611f08565b15610687577f460119a8f69a33ed127de517d5ea464e958ce23ef19e4420a8b92bf780bbc2c960208285935f528a825260405f20600260ff19825416179055600a8a016106768154611f15565b9055604051908152a25b01966105ac565b7f460119a8f69a33ed127de517d5ea464e958ce23ef19e4420a8b92bf780bbc2c96020825f9384528a825260408420805460ff19169055604051908152a2610680565b60405162461bcd60e51b815260206004820152602760248201527f636f64652073686f756c642062652072657175657374656420666f722076616c60448201526634b230ba34b7b760c91b6064820152608490fd5b634e487b7160e01b5f52602160045260245ffd5b6104a193506020815191012061205b565b34610479576020366003190112610479576004356001600160401b03811161047957610774903690600401611c98565b61077c6121e0565b5f8051602061281d8339815191525460078101906008015f5b81548110156107cc575f82815260208082208301546001600160a01b0316825284905260409020805460ff19169055600101610795565b5080545f8255915081610813575b6107ed6107e8368587611d85565b6124a7565b7f144bbc027dc176e94c43b7c1bcff2a8aa58ab434029eec294743cd4ab2e54f515f80a1005b5f5260205f20908101905b818110156107da575f815560010161081e565b34610479575f3660031901126104795760206001600160401b0360065f8051602061281d83398151915254015416604051908152f35b34610479575f3660031901126104795761089160085f8051602061281d8339815191525401611e75565b6040518091602082016020835281518091526020604084019201905f5b8181106108bc575050500390f35b82516001600160a01b03168452859450602093840193909201916001016108ae565b346104795760203660031901126104795760095f8051602061281d83398151915254016004355f5260205260ff60405f205416604051600382101561071f576020918152f35b34610479576020366003190112610479576004356001600160801b03811690818103610479577f9f5e1796f1a0adf311f86170503308a06a16560a7679b7b6da35f4999200d740916020916109776121e0565b5f8051602061281d83398151915254600601805477ffffffffffffffffffffffffffffffff00000000000000001916604092831b77ffffffffffffffffffffffffffffffff00000000000000001617905551908152a1005b34610479575f366003190112610479576020600c5f8051602061281d833981519152540154604051908152f35b34610479575f3660031901126104795760205f8051602061281d83398151915254604051908152f35b3461047957602036600319011261047957610a3e611cc8565b600b5f8051602061281d83398151915254019060018060a01b03165f52602052602060405f2054604051908152f35b3461047957602036600319011261047957610a86611cc8565b60075f8051602061281d83398151915254019060018060a01b03165f52602052602060ff60405f2054166040519015158152f35b34610479575f366003190112610479575f805160206127fd833981519152546040516001600160a01b039091168152602090f35b34610479575f366003190112610479575f8051602061281d83398151915254600301546040516001600160a01b039091168152602090f35b6080366003190112610479576044356001600160401b03811161047957610b51903690600401611d58565b90606435916001600160801b038316830361047957610b7583602435600435612233565b6001600160a01b0390911692909190833b1561047957610bac5f9360405196879485946306f0ee9760e51b86523260048701611e38565b038183855af1918215610bda57602092610bca575b50604051908152f35b5f610bd491611cde565b82610bc1565b6040513d5f823e3d90fd5b34610479576020366003190112610479576004356001600160401b0381168091036104795760207f01326573cfc0bc40a2550923254394ebd7529e3e3301840dfa33cf786aead0c791610c366121e0565b5f8051602061281d83398151915254600601805467ffffffffffffffff191682179055604051908152a1005b34610479575f366003190112610479575f8051602061281d83398151915254600201546040516001600160a01b039091168152602090f35b34610479575f36600319011261047957610cb26121e0565b5f805160206127fd83398151915280546001600160a01b031981169091555f906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b34610479575f366003190112610479576020610d1b611ec6565b6001600160801b0360405191168152f35b34610479575f36600319011261047957610d446121e0565b5f8051602061283d8339815191525460ff8160401c168015610f20575b61044f5768ffffffffffffffffff191668010000000000000002175f8051602061283d833981519152555f8051602061281d833981519152546001810154600282015460038301546001600160a01b0390811693918116921690610dc790600801611e75565b906040918251610dd78482611cde565b6017815260208101907f726f757465722e73746f726167652e526f7574657256320000000000000000008252610e0b6121e0565b5190205f19810190811161040f578351906020820190815260208252610e318583611cde565b60ff19915190201694855f8051602061281d833981519152557f5aa0c6c9fb33211212ffe5bef7a4b5d511b82a611e6677052d984e2bcedeaccc5f80a15f19430143811161040f574086556001860180546001600160a01b03199081166001600160a01b03958616179091556002870180548216968516969096179095556003909501805490941694909116939093179091557fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29160209190610ef3906124a7565b60ff60401b195f8051602061283d83398151915254165f8051602061283d833981519152555160028152a1005b5060026001600160401b0382161015610d61565b60a036600319011261047957610f48611cc8565b6044356024356064356001600160401b03811161047957610f6d903690600401611d58565b90608435946001600160801b038616860361047957610f8d868686612233565b949060018060a01b0316956040519060208201928352604082015260408152610fb7606082611cde565b519020853b1561047957604051635b1b84f760e01b81526001600160a01b03909216600483015260248201525f8160448183895af18015610bda57611020575b50833b1561047957610bac5f9360405196879485946306f0ee9760e51b86523260048701611e38565b5f61102a91611cde565b85610ff7565b34610479576020366003190112610479576004356001600160401b038111610479573660238201121561047957611071903690602481600401359101611d13565b6110796121e0565b602081519101205f19810190811161040f576040519060208201908152602082526110a5604083611cde565b9051902060ff19165f8051602061281d833981519152557f5aa0c6c9fb33211212ffe5bef7a4b5d511b82a611e6677052d984e2bcedeaccc5f80a1005b34610479575f366003190112610479575f8051602061281d83398151915254600101546040516001600160a01b039091168152602090f35b3461047957602036600319011261047957611133611cc8565b61113b6121e0565b5f8051602061281d8339815191525460010180546001600160a01b0319166001600160a01b03909216919091179055005b34610479575f36600319011261047957602060045f8051602061281d833981519152540154604051908152f35b34610479575f3660031901126104795760205f8051602061281d8339815191525454604051908152f35b34610479576040366003190112610479576004356001600160401b038111610479576111f3903690600401611c98565b906024356001600160401b03811161047957611213903690600401611c98565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f009291925c611ae057919260017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005d5f9060605b81831015611aa9578260051b84013590607e19853603018212156104795760045f8051602061281d83398151915254019384546020848801013503611a655760408387010135946112b7866125e8565b15611a1457838799949899969596013590556060935f978581890101905b6112e182828b01611fd2565b90508a1015611991576113008a6112fa84848d01611fd2565b90612007565b975f8051602061281d833981519152546113198a61262b565b6001600160a01b03165f908152600b820160205260409020541561193457600301546001600160801b03906020906001600160a01b031660448c5f61136960606113628461262b565b930161263f565b60405163a9059cbb60e01b81526001600160a01b0390931660048401529590951660248201529384928391905af18015610bda57611908575b506001600160a01b036113b48a61262b565b169b5f9160605b6113c860808d018d61266b565b905084101561152f576113de60808d018d61266b565b859195101561151b578f916114896020918261140081606087028b010161262b565b6114116040606088028c010161263f565b6040519083820192606089028d013584526001600160601b03199060601b1660408301526001600160801b03199060801b16605482015260448152611457606482611cde565b6040519584879551918291018587015e840190838201905f8252519283915e01015f815203601f198101835282611cde565b9461149b60206060840283010161262b565b6114ac60406060850284010161263f565b93803b15610479575f92836064926001600160801b0360405198899687956314503e5160e01b875260608b020135600487015260018060a01b031660248601521660448401525af1918215610bda5760019261150b575b5001926113bb565b5f61151591611cde565b5f611503565b634e487b7160e01b5f52603260045260245ffd5b9891979d9b9394959692509b989b60605f5b61154e60a08e018e611fd2565b905081101561179b5790818e9493928e60a0810161156b91611fd2565b6115759291612007565b60208101956115838761262b565b9660408301946115938685612029565b9099906115a26060870161263f565b9a60a087019b6115b18d6126a0565b8360405194859460208601978c3589526001600160601b03199060601b16604087015260548601378301916001600160801b03199060801b1660548301526080890135606483015263ffffffff60e01b1660848201520360540160148101825260340161161e9082611cde565b51902061162a91611de9565b9760808401356116db57506116416116489161262b565b9483612029565b9190946116576060850161263f565b823b15610479575f9485916001600160801b036116a56040519a8b988997889663c2df600960e01b885235600488015260018060a01b03166024870152608060448701526084860191611e18565b9116606483015203925af1918215610bda576001926116cb575b505b0192909192611541565b5f6116d591611cde565b5f6116bf565b949291906116eb6116f29161262b565b9383612029565b90926117096117036060830161263f565b976126a0565b94833b1561047957611755975f96608088946001600160801b036040519c8d9a8b998a9863c78bde7760e01b8a5260018060a01b031660048a015260a060248a015260a4890191611e18565b94166044860152013560648401526001600160e01b031916608483015203925af1918215610bda5760019261178b575b506116c1565b5f61179591611cde565b5f611785565b509d97949892969a90959d9c919c9b939b604082019160018060a01b036117c18461262b565b166118b1575b602081013591863b15610479575f80976024604051809a8193638ea59e1d60e01b83528860048401525af1958615610bda57600197611892976118a1575b50611824606061181d6118178661262b565b9761262b565b940161263f565b90602081519101209160208151910120926040519460208601966001600160601b03199060601b16875260348601526001600160601b03199060601b1660548501526001600160801b03199060801b16606884015260788301526098820152609881526105f560b882611cde565b960198949990999691966112d5565b5f6118ab91611cde565b5f611805565b6118ba8361262b565b863b1561047957604051630959112b60e11b81526001600160a01b0390911660048201525f81602481838b5af18015610bda576118f8575b506117c7565b5f61190291611cde565b5f6118f2565b6119289060203d811161192d575b6119208183611cde565b810190612653565b6113a2565b503d611916565b60405162461bcd60e51b815260206004820152602f60248201527f636f756c646e277420706572666f726d207472616e736974696f6e20666f722060448201526e756e6b6e6f776e2070726f6772616d60881b6064820152608490fd5b919050611a0893929850600194959996997fd756eca21e02cb0dbde1e44a4d9c6921b5c8aa4668cfa0752784b3dc855bce1e6020604051858c01358152a16020815191012060405191602080840194808c013586528b010135604084015260608301526080820152608081526105f560a082611cde565b94019193949094611267565b60405162461bcd60e51b815260206004820152602360248201527f616c6c6f776564207072656465636573736f7220626c6f636b206e6f7420666f6044820152621d5b9960ea1b6064820152608490fd5b606460405162461bcd60e51b815260206004820152602060248201527f696e76616c69642070726576696f757320636f6d6d69746d656e7420686173686044820152fd5b8486611abb926020815191012061205b565b5f7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005d005b633ee5aeb560e01b5f5260045ffd5b34610479576040366003190112610479576024356004358115801590611c2d575b15611be85760095f8051602061281d833981519152540190805f528160205260ff60405f205416600381101561071f57611b8a577f65672eaf4ff8b823ea29ae013fef437d1fa9ed431125263a7a1f0ac49eada39692604092825f52602052825f20600160ff1982541617905582519182526020820152a1005b60405162461bcd60e51b815260206004820152603060248201527f636f64652077697468207375636820696420616c72656164792072657175657360448201526f1d1959081bdc881d985b1a59185d195960821b6064820152608490fd5b60405162461bcd60e51b815260206004820152601c60248201527f626c6f6254784861736820636f756c646e277420626520666f756e64000000006044820152606490fd5b505f491515611b10565b34610479575f366003190112610479576020610d1b6001600160801b0360065f8051602061281d83398151915254015460401c1690565b34610479575f36600319011261047957602090600a5f8051602061281d8339815191525401548152f35b9181601f84011215610479578235916001600160401b038311610479576020808501948460051b01011161047957565b600435906001600160a01b038216820361047957565b90601f801991011681019081106001600160401b03821117611cff57604052565b634e487b7160e01b5f52604160045260245ffd5b9291926001600160401b038211611cff5760405191611d3c601f8201601f191660200184611cde565b829481845281830111610479578281602093845f960137010152565b9181601f84011215610479578235916001600160401b038311610479576020838186019501011161047957565b9092916001600160401b038411611cff578360051b916020604051611dac82860182611cde565b809681520192810191821161047957915b818310611dc957505050565b82356001600160a01b038116810361047957815260209283019201611dbd565b602080611e16928195946040519682889351918291018585015e8201908382015203018085520183611cde565b565b908060209392818452848401375f828201840152601f01601f1916010190565b93959490611e686001600160801b0393606095859360018060a01b03168852608060208901526080880191611e18565b9616604085015216910152565b90604051918281549182825260208201905f5260205f20925f5b818110611ea4575050611e1692500383611cde565b84546001600160a01b0316835260019485019487945060209093019201611e8f565b5f8051602061281d83398151915254600601546001600160401b038116906001600160801b039060401c811616026001600160801b03811690810361040f5790565b3580151581036104795790565b5f19811461040f5760010190565b5f8051602061281d83398151915254600560088201549101549081810291818304149015171561040f5761270f810180911161040f57612710900490565b6001600160a01b03168015611fbf575f805160206127fd83398151915280546001600160a01b0319811683179091556001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3565b631e4fbdf760e01b5f525f60045260245ffd5b903590601e198136030182121561047957018035906001600160401b03821161047957602001918160051b3603831361047957565b919081101561151b5760051b8101359060be1981360301821215610479570190565b903590601e198136030182121561047957018035906001600160401b0382116104795760200191813603831361047957565b905f8051602061281d8339815191525490612074611f23565b9260405190602082019081526020825261208f604083611cde565b6120cb603660405180936020820195601960f81b87523060601b60228401525180918484015e81015f838201520301601f198101835282611cde565b5190205f9260070191835b868510156121d45761210c6121036120fd6120f68860051b860186612029565b3691611d13565b856126e0565b9092919261271a565b6001600160a01b03165f9081526020859052604090205460ff16156121995761213490611f15565b9385851461214557600101936120d6565b505050509091505b1061215457565b60405162461bcd60e51b815260206004820152601b60248201527f6e6f7420656e6f7567682076616c6964207369676e61747572657300000000006044820152606490fd5b60405162461bcd60e51b8152602060048201526013602482015272696e636f7272656374207369676e617475726560681b6044820152606490fd5b9495505050505061214d565b5f805160206127fd833981519152546001600160a01b0316330361220057565b63118cdaa760e01b5f523360045260245ffd5b906001600160801b03809116911601906001600160801b03821161040f57565b9291925f8051602061281d8339815191525491815f526009830160205260ff60405f205416600381101561071f5760020361244b57612270611ec6565b600a6001600160801b03821602956001600160801b03871696870361040f5761229c876122a193612213565b612213565b60038401546040516323b872dd60e01b81523260048201523060248201526001600160801b03929092166044830152602090829060649082905f906001600160a01b03165af1908115610bda575f9161242c575b50156123e7576e5af43d82803e903d91602b57fd5bf36002840154916040516020810191858352604082015260408152612330606082611cde565b51902091763d602d80600a3d3981f3363d3d373d3d3d363d7300000062ffffff8260881c16175f526effffffffffffffffffffffffffffff199060781b1617602052603760095ff5916001600160a01b0383169081156123d8577f8008ec1d8798725ebfa0f2d128d52e8e717dcba6e0f786557eeee70614b02bf191600c602092825f52600b810184528560405f2055016123cb8154611f15565b9055604051908152a29190565b63b06ebf3d60e01b5f5260045ffd5b60405162461bcd60e51b815260206004820152601860248201527f6661696c656420746f20726574726965766520575661726100000000000000006044820152606490fd5b612445915060203d60201161192d576119208183611cde565b5f6122f5565b60405162461bcd60e51b815260206004820152602e60248201527f636f6465206d7573742062652076616c696461746564206265666f726520707260448201526d37b3b930b69031b932b0ba34b7b760911b6064820152608490fd5b5f8051602061281d833981519152549060088201908154612597579091600701905f5b815181101561250957600581901b82016020908101516001600160a01b03165f9081529084905260409020805460ff19166001908117909155016124ca565b5080519291506001600160401b038311611cff57680100000000000000008311611cff578154838355808410612571575b50602001905f5260205f205f5b8381106125545750505050565b82516001600160a01b031681830155602090920191600101612547565b825f528360205f2091820191015b81811061258c575061253a565b5f815560010161257f565b60405162461bcd60e51b815260206004820152602360248201527f70726576696f75732076616c696461746f727320776572656e27742072656d6f6044820152621d995960ea1b6064820152608490fd5b905f19430143811161040f57805b612601575b505f9150565b804083810361261257506001925050565b1561262657801561040f575f1901806125f6565b6125fb565b356001600160a01b03811681036104795790565b356001600160801b03811681036104795790565b90816020910312610479575180151581036104795790565b903590601e198136030182121561047957018035906001600160401b0382116104795760200191606082023603831361047957565b356001600160e01b0319811681036104795790565b60ff5f8051602061283d8339815191525460401c16156126d157565b631afcd79f60e31b5f5260045ffd5b8151919060418303612710576127099250602082015190606060408401519301515f1a9061277a565b9192909190565b50505f9160029190565b600481101561071f578061272c575050565b600181036127435763f645eedf60e01b5f5260045ffd5b6002810361275e575063fce698f760e01b5f5260045260245ffd5b6003146127685750565b6335e2f38360e21b5f5260045260245ffd5b91907f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a084116127f1579160209360809260ff5f9560405194855216868401526040830152606082015282805260015afa15610bda575f516001600160a01b038116156127e757905f905f90565b505f906001905f90565b5050505f916003919056fe9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c1993005c09ca1b9b8127a4fd9f3c384aac59b661441e820e17733753ff5f2e86e1e000f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a26469706673582212202f2e66209ad98f54c93b36e91e5e324eb74638b4dbb003ea753fc50026d2075f64736f6c634300081a0033","sourceMap":"781:17727:82:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;781:17727:82;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;781:17727:82;;;;;;;;;-1:-1:-1;;;;;781:17727:82;;;;;;;;;-1:-1:-1;;;;;781:17727:82;;;;;;;;-1:-1:-1;;;;;781:17727:82;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;-1:-1:-1;;;;;;;;;;;781:17727:82;;;;;;4301:16:25;781:17727:82;-1:-1:-1;;;;;781:17727:82;;4726:16:25;;:34;;;;781:17727:82;4805:1:25;4790:16;:50;;;;781:17727:82;4855:13:25;:30;;;;781:17727:82;4851:91:25;;;-1:-1:-1;;781:17727:82;;4805:1:25;781:17727:82;-1:-1:-1;;;;;;;;;;;781:17727:82;6961:1:25;;781:17727:82;4979:67:25;;781:17727:82;6893:76:25;;;:::i;:::-;;;:::i;:::-;6961:1;:::i;:::-;781:17727:82;;;;;;;;:::i;:::-;;;;;;;;;;;2303:62:24;;:::i;:::-;781:17727:82;2944:27;;-1:-1:-1;;781:17727:82;;;;;;;;;2925:52;781:17727;2925:52;;781:17727;;;;2925:52;;;;;;:::i;:::-;781:17727;;;;2915:63;;:89;1072:66;;-1:-1:-1;;;;;;;;;;;1072:66:82;3084:20;781:17727;3084:20;;781:17727;;1644:12;781:17727;1644:12;;781:17727;;;;1634:27;;1072:66;;4805:1:25;1671:13:82;;781:17727;;-1:-1:-1;;;;;;781:17727:82;;;-1:-1:-1;;;;;781:17727:82;;;;;;;1704:18;;;781:17727;;;;;;;;;;;;;;1747:18;;;781:17727;;;;;;;;;;;;;1826:4;1790:33;;;1072:66;1868:17;;;;;781:17727;;;-1:-1:-1;;;;;;781:17727:82;;;;;;1962:15;;;:::i;:::-;5066:101:25;;781:17727:82;5066:101:25;781:17727:82;5142:14:25;781:17727:82;-1:-1:-1;;;781:17727:82;-1:-1:-1;;;;;;;;;;;781:17727:82;;-1:-1:-1;;;;;;;;;;;781:17727:82;;4805:1:25;781:17727:82;;5142:14:25;781:17727:82;;;;;;;;;;;;;4979:67:25;-1:-1:-1;;781:17727:82;;;-1:-1:-1;;;;;;;;;;;781:17727:82;4979:67:25;;;4851:91;6498:23;;;781:17727:82;4908:23:25;781:17727:82;;4908:23:25;4855:30;4872:13;;;4855:30;;;4790:50;4818:4;4810:25;:30;;-1:-1:-1;4790:50:25;;4726:34;;;-1:-1:-1;4726:34:25;;781:17727:82;;;;;;;;;;-1:-1:-1;;781:17727:82;;;;2357:1:24;781:17727:82;;:::i;:::-;2303:62:24;;:::i;2357:1::-;781:17727:82;;;;;;;-1:-1:-1;;781:17727:82;;;;;4918:33;-1:-1:-1;;;;;;;;;;;781:17727:82;4918:33;781:17727;;;;;;;;;;;;;-1:-1:-1;;781:17727:82;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;781:17727:82;;;;;5296:21;-1:-1:-1;;;;;;;;;;;781:17727:82;5296:21;781:17727;;;;;;;;;;;;;-1:-1:-1;;781:17727:82;;;;;;-1:-1:-1;;;;;781:17727:82;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;781:17727:82;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;781:17727:82;;;;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;;;;;;;781:17727:82;8503:34;781:17727;8553:13;781:17727;8928:12;;;;8548:824;8601:3;8568:31;;;;;;781:17727;;;;;;8802:55;17215:20;781:17727;;;;17215:20;;;;;;:::i;:::-;781:17727;;;17179:57;;781:17727;;;;;;;;;;;;;17179:57;;;;;;:::i;:::-;781:17727;17169:68;;8802:55;;:::i;:::-;781:17727;;;;;;;;;;;;;;;;;;;;8928:53;781:17727;;9044:20;781:17727;9044:20;;:::i;:::-;;;;9196:30;781:17727;;;;;;;;;;;;9107:19;781:17727;;;;;;;;9144:26;;;:28;781:17727;;9144:28;:::i;:::-;1072:66;;781:17727;;;;;9196:30;9040:322;781:17727;8553:13;;;9040:322;9316:31;781:17727;;;;;;;;;;;;;;;;;;;;;;;;9316:31;9040:322;;781:17727;;;-1:-1:-1;;;781:17727:82;;;;;;;;;;;;;;;;;-1:-1:-1;;;781:17727:82;;;;;;;;;;;;;;;;;;;8568:31;9436:10;8568:31;;781:17727;;;;;9402:32;9436:10;:::i;781:17727::-;;;;;;-1:-1:-1;;781:17727:82;;;;;;-1:-1:-1;;;;;781:17727:82;;;;;;;;;;;:::i;:::-;2303:62:24;;:::i;:::-;-1:-1:-1;;;;;;;;;;;781:17727:82;17746:17;;;;17632:21;;781:17727;17662:3;781:17727;;17628:32;;;;;781:17727;;;;;;;;;;;-1:-1:-1;;;;;781:17727:82;;;;;;;;;;;-1:-1:-1;;781:17727:82;;;;;17613:13;;17628:32;-1:-1:-1;781:17727:82;;;;;;-1:-1:-1;781:17727:82;;;17608:177;5857:38;781:17727;;;;;:::i;:::-;5857:38;:::i;:::-;5911:22;781:17727;5911:22;;781:17727;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;781:17727:82;;;;;-1:-1:-1;;;;;6110:17:82;-1:-1:-1;;;;;;;;;;;781:17727:82;6110:17;781:17727;;;;;;;;;;;;;;-1:-1:-1;;781:17727:82;;;;;5640:21;-1:-1:-1;;;;;;;;;;;781:17727:82;5640:21;781:17727;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;781:17727:82;;;;;-1:-1:-1;781:17727:82;;;;;;;;;;;;;;;;;;;-1:-1:-1;;781:17727:82;;;;4382:12;-1:-1:-1;;;;;;;;;;;781:17727:82;4382:12;781:17727;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;781:17727:82;;;;;;-1:-1:-1;;;;;781:17727:82;;;;;;;;6689:38;2303:62:24;781:17727:82;2303:62:24;;;:::i;:::-;-1:-1:-1;;;;;;;;;;;781:17727:82;6634:21;;781:17727;;-1:-1:-1;;781:17727:82;;;;;;;;;;;;;;6689:38;781:17727;;;;;;;-1:-1:-1;;781:17727:82;;;;;4535:20;-1:-1:-1;;;;;;;;;;;781:17727:82;4535:20;781:17727;;;;;;;;;;;;;-1:-1:-1;;781:17727:82;;;;;-1:-1:-1;;;;;;;;;;;781:17727:82;;;;;;;;;;;;;-1:-1:-1;;781:17727:82;;;;;;:::i;:::-;4703:15;-1:-1:-1;;;;;;;;;;;781:17727:82;4703:15;:24;781:17727;;;;;;-1:-1:-1;781:17727:82;;;;;-1:-1:-1;781:17727:82;;;;;;;;;;;;;;-1:-1:-1;;781:17727:82;;;;;;:::i;:::-;5473:17;-1:-1:-1;;;;;;;;;;;781:17727:82;5473:17;:28;781:17727;;;;;;-1:-1:-1;781:17727:82;;;;;;-1:-1:-1;781:17727:82;;;;;;;;;;;;;;;;;-1:-1:-1;;781:17727:82;;;;-1:-1:-1;;;;;;;;;;;781:17727:82;;;-1:-1:-1;;;;;781:17727:82;;;;;;;;;;;;;;-1:-1:-1;;781:17727:82;;;;-1:-1:-1;;;;;;;;;;;781:17727:82;3567:18;;781:17727;;;-1:-1:-1;;;;;781:17727:82;;;;;;;;;;;-1:-1:-1;;781:17727:82;;;;;;-1:-1:-1;;;;;781:17727:82;;;;;;;;;;;:::i;:::-;;;;;-1:-1:-1;;;;;781:17727:82;;;;;;7561:50;781:17727;;;;;7561:50;:::i;:::-;-1:-1:-1;;;;;781:17727:82;;;;;;;7622:75;;;;;;781:17727;;;;;;;;;;;;7622:75;;7651:9;781:17727;7622:75;;;:::i;:::-;;;;;;;;;;;;781:17727;7622:75;;;781:17727;;;;;;;;7622:75;781:17727;7622:75;;;:::i;:::-;;;;;781:17727;;;;;;;;;;;;;;;-1:-1:-1;;781:17727:82;;;;;;-1:-1:-1;;;;;781:17727:82;;;;;;;;6307:30;2303:62:24;;;:::i;:::-;-1:-1:-1;;;;;;;;;;;781:17727:82;6260:17;;781:17727;;-1:-1:-1;;781:17727:82;;;;;;;;;;6307:30;781:17727;;;;;;;-1:-1:-1;;781:17727:82;;;;-1:-1:-1;;;;;;;;;;;781:17727:82;3716:18;;781:17727;;;-1:-1:-1;;;;;781:17727:82;;;;;;;;;;;;;;-1:-1:-1;;781:17727:82;;;;2303:62:24;;:::i;:::-;-1:-1:-1;;;;;;;;;;;781:17727:82;;-1:-1:-1;;;;;;781:17727:82;;;;;;;-1:-1:-1;;;;;781:17727:82;3975:40:24;781:17727:82;;3975:40:24;781:17727:82;;;;;;;-1:-1:-1;;781:17727:82;;;;;;;:::i;:::-;-1:-1:-1;;;;;781:17727:82;;;;;;;;;;;;;-1:-1:-1;;781:17727:82;;;;2303:62:24;;:::i;:::-;-1:-1:-1;;;;;;;;;;;781:17727:82;;;;;;6431:44:25;;;;781:17727:82;6427:105:25;;-1:-1:-1;;781:17727:82;;;-1:-1:-1;;;;;;;;;;;781:17727:82;-1:-1:-1;;;;;;;;;;;781:17727:82;;2129:16;;781:17727;2046:1;2178:21;;781:17727;2232:21;;;781:17727;-1:-1:-1;;;;;781:17727:82;;;;;;;;;;;;2298:24;;781:17727;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;2303:62:24;;:::i;:::-;781:17727:82;2944:27;;-1:-1:-1;;781:17727:82;;;;;;;;;2925:52;781:17727;2925:52;;781:17727;;;;2925:52;;;;;;:::i;:::-;781:17727;;;;2915:63;;:89;1072:66;;-1:-1:-1;;;;;;;;;;;1072:66:82;3084:20;781:17727;3084:20;;781:17727;;2469:12;781:17727;2469:12;781:17727;;;;2459:27;1072:66;;6593:4:25;2496:13:82;;781:17727;;-1:-1:-1;;;;;;781:17727:82;;;-1:-1:-1;;;;;781:17727:82;;;;;;;2046:1;2529:18;;781:17727;;;;;;;;;;;;;;2232:21;2572:18;;;781:17727;;;;;;;;;;;;;;;;6656:20:25;;781:17727:82;;-1:-1:-1;2630:15:82;;;:::i;:::-;-1:-1:-1;;;781:17727:82;-1:-1:-1;;;;;;;;;;;781:17727:82;;-1:-1:-1;;;;;;;;;;;781:17727:82;;2046:1;781:17727;;6656:20:25;781:17727:82;6431:44:25;781:17727:82;2046:1;-1:-1:-1;;;;;781:17727:82;;6450:25:25;;6431:44;;781:17727:82;;;-1:-1:-1;;781:17727:82;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;781:17727:82;;;;;;;;;;;:::i;:::-;;;;;-1:-1:-1;;;;;781:17727:82;;;;;;8008:50;;;;;:::i;:::-;781:17727;;;;;;;;;;;8183:30;781:17727;8183:30;;781:17727;;;;;;;;8183:30;;;781:17727;8183:30;;:::i;:::-;781:17727;8173:41;;8121:94;;;;;781:17727;;-1:-1:-1;;;8121:94:82;;-1:-1:-1;;;;;781:17727:82;;;;8121:94;;781:17727;;;;;-1:-1:-1;781:17727:82;;;-1:-1:-1;8121:94:82;;;;;;;;;781:17727;8226:73;;;;;;;781:17727;;;;;;;;;;;;8226:73;;8253:9;781:17727;8226:73;;;:::i;8121:94::-;781:17727;8121:94;;;:::i;:::-;;;;781:17727;;;;;;-1:-1:-1;;781:17727:82;;;;;;-1:-1:-1;;;;;781:17727:82;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2303:62:24;;:::i;:::-;781:17727:82;;;;;2944:27;781:17727;;;;;;;;;;;2925:52;781:17727;2925:52;;781:17727;;;;2925:52;;;781:17727;2925:52;;:::i;:::-;781:17727;;2915:63;;-1:-1:-1;;2915:89:82;-1:-1:-1;;;;;;;;;;;1072:66:82;3084:20;781:17727;;3084:20;781:17727;;;;;;;-1:-1:-1;;781:17727:82;;;;-1:-1:-1;;;;;;;;;;;781:17727:82;;3860:13;781:17727;;;-1:-1:-1;;;;;781:17727:82;;;;;;;;;;;;;;-1:-1:-1;;781:17727:82;;;;;;:::i;:::-;2303:62:24;;:::i;:::-;-1:-1:-1;;;;;;;;;;;781:17727:82;3999:13;;781:17727;;-1:-1:-1;;;;;;781:17727:82;-1:-1:-1;;;;;781:17727:82;;;;;;;;;;;;;;;;-1:-1:-1;;781:17727:82;;;;;;-1:-1:-1;;;;;;;;;;;781:17727:82;3406:30;781:17727;;;;;;;;;;;;;-1:-1:-1;;781:17727:82;;;;;-1:-1:-1;;;;;;;;;;;781:17727:82;;;;;;;;;;;;;;-1:-1:-1;;781:17727:82;;;;;;-1:-1:-1;;;;;781:17727:82;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;781:17727:82;;;;;;;;;;;:::i;:::-;516:66:52;7368:53:53;;;;1292:93:52;;7628:52:53;;1503:4:52;516:66;7628:52:53;781:17727:82;;;9713:3;9679:32;;;;;;781:17727;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;781:17727:82;12083:30;781:17727;;;;;;;12117:34;781:17727;12083:68;781:17727;;;;;;12234:29;781:17727;12215:49;;;;:::i;:::-;781:17727;;;;;;;;;;;;;;1072:66;;781:17727;12559:13;781:17727;;;;;;12578:27;12554:320;12614:3;12578:27;781:17727;;;;12578:27;:::i;:::-;12574:38;;;;;;;12676:30;781:17727;12676:27;781:17727;;;;12676:27;:::i;:::-;:30;;:::i;:::-;781:17727;-1:-1:-1;;;;;;;;;;;781:17727:82;13686:23;;;:::i;:::-;-1:-1:-1;;;;;781:17727:82;;;;;13670:15;;;781:17727;;;;;;13670:45;781:17727;;13823:18;;781:17727;-1:-1:-1;;;;;781:17727:82;;;-1:-1:-1;;;;;781:17727:82;;13878:23;781:17727;13903:30;781:17727;13878:23;;;:::i;:::-;13903:30;;;:::i;:::-;781:17727;;-1:-1:-1;;;13852:82:82;;-1:-1:-1;;;;;781:17727:82;;;;13852:82;;781:17727;;;;;;;;;;;;;;-1:-1:-1;13852:82:82;;;;;;;;12614:3;-1:-1:-1;;;;;;13975:23:82;;;:::i;:::-;781:17727;;;;;14110:3;14074:27;;;;;;:::i;:::-;14070:38;;;;;;;14162:27;14074;;;14162;;:::i;:::-;781:17727;;;;;;;;;;;;;14313:22;781:17727;;;;;;14313:22;;:::i;:::-;14337:16;781:17727;;;;;;14337:16;;:::i;:::-;781:17727;;14274:80;;;;781:17727;;;;;;;;;-1:-1:-1;;;;;781:17727:82;;;;;;;;;-1:-1:-1;;;;;781:17727:82;;14074:27;781:17727;;;;;;;14274:80;;;;;;:::i;:::-;781:17727;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14274:80;;781:17727;;;;;;:::i;:::-;;14430:22;781:17727;;;;;;14313:22;14430;:::i;:::-;14454:16;781:17727;;;;;;14337:16;14454;:::i;:::-;14383:88;;;;;;781:17727;;;14274:80;781:17727;-1:-1:-1;;;;;781:17727:82;;;;;;;;;;14383:88;;781:17727;;;;;;14383:88;;781:17727;;;;;;;;;;;;;;;;14383:88;;;;;;;1503:4:52;14383:88:82;;;14110:3;;781:17727;14055:13;;;14383:88;781:17727;14383:88;;;:::i;:::-;;;;781:17727;;;;;;;;;;;;14070:38;;;;;;;;;;;;;;;781:17727;;14587:3;14554:24;;;;;;:::i;:::-;14550:35;;;;;;;14554:24;;;;;;;;;;14649;;;:::i;:::-;:27;;;;:::i;:::-;781:17727;16808:27;;;;;;:::i;:::-;16853:23;781:17727;16853:23;;;;;;;:::i;:::-;16894:21;;;;781:17727;16894:21;;;:::i;:::-;16982:33;14554:24;16982:33;;;;;;:::i;:::-;781:17727;;;16738:291;;;781:17727;16738:291;;781:17727;;;;;-1:-1:-1;;;;;781:17727:82;;;;;;;;;;;;;;;;-1:-1:-1;;;;;781:17727:82;;14074:27;781:17727;;;;;;14074:27;16933:28;;781:17727;14274:80;781:17727;;;;;;;;;;;16738:291;781:17727;16738:291;;;;;;781:17727;16738:291;;;;;:::i;:::-;781:17727;16715:324;;14708:67;;;:::i;:::-;16933:28;14074:27;16933:28;;781:17727;14074:27;;14915;;14944:23;14915:27;;:::i;:::-;14944:23;;;:::i;:::-;16894:21;;;14969;781:17727;16894:21;;14969;:::i;:::-;14850:158;;;;;781:17727;;;;-1:-1:-1;;;;;781:17727:82;;;;;;;;;;;;;14850:158;;781:17727;;14850:158;;781:17727;;;;;;;;;;;14074:27;781:17727;;;;;;;;;:::i;:::-;;;14274:80;781:17727;;;14850:158;;;;;;;;;1503:4:52;14850:158:82;;;14790:556;;;781:17727;14535:13;;;;;;14850:158;781:17727;14850:158;;;:::i;:::-;;;;14790:556;15090:27;;;;;15139:23;15090:27;;:::i;:::-;15139:23;;;:::i;:::-;16894:21;;15280:33;15184:21;781:17727;16894:21;;15184;:::i;:::-;15280:33;;:::i;:::-;15047:284;;;;;;781:17727;;;;14074:27;781:17727;;-1:-1:-1;;;;;781:17727:82;;;;;;;;;;;;15047:284;;781:17727;;;;;;;15047:284;;781:17727;14554:24;781:17727;;;;;;;;;:::i;:::-;;;;;;;16933:28;781:17727;14274:80;781:17727;;;-1:-1:-1;;;;;;781:17727:82;;;;;15047:284;;;;;;;;;1503:4:52;15047:284:82;;;14790:556;;;;15047:284;781:17727;15047:284;;;:::i;:::-;;;;14550:35;;;;;;;;;;;;;;;;;;781:17727;15370:25;;781:17727;;;;;;15370:25;;;:::i;:::-;781:17727;15366:121;;14530:826;781:17727;15521:28;;781:17727;15497:53;;;;;;781:17727;;;;;;;;;;;;;15497:53;;;781:17727;15497:53;;781:17727;15497:53;;;;;;;1503:4:52;15497:53:82;12816:47;15497:53;;;14530:826;15602:23;15720:30;781:17727;15681:25;15602:23;;;:::i;:::-;15681:25;;:::i;:::-;13903:30;;15720;:::i;:::-;781:17727;;;;;;15764:27;781:17727;;;;;;15805:25;781:17727;;;16469:103;781:17727;16469:103;;781:17727;-1:-1:-1;;;;;781:17727:82;;;;;;;;;;;-1:-1:-1;;;;;781:17727:82;;;;;;;;;-1:-1:-1;;;;;781:17727:82;;14074:27;781:17727;;;;;;;;;;;;;;;16469:103;;;;;;:::i;12816:47::-;12614:3;781:17727;12559:13;;;;;;;;;;15497:53;781:17727;15497:53;;;:::i;:::-;;;;15366:121;15450:25;;;:::i;:::-;15425:51;;;;;781:17727;;-1:-1:-1;;;15425:51:82;;-1:-1:-1;;;;;781:17727:82;;;;15425:51;;781:17727;-1:-1:-1;781:17727:82;;;-1:-1:-1;15425:51:82;;;;;;;;;15366:121;;;;15425:51;781:17727;15425:51;;;:::i;:::-;;;;13852:82;;;781:17727;13852:82;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;781:17727;;;-1:-1:-1;;;781:17727:82;;;;;;;;;;;;;;;;;-1:-1:-1;;;14274:80:82;781:17727;;;;;;12574:38;;;;9913:57;12574:38;;;;1503:4:52;12574:38:82;;;;;12889:41;781:17727;;;;;;;;;12889:41;781:17727;;;;;13112:28;781:17727;;16080:85;781:17727;16080:85;;;781:17727;;;;;;;;;12117:34;781:17727;;;;;;;;;14074:27;781:17727;;;14074:27;16080:85;;;14554:24;16080:85;;:::i;9913:57::-;9713:3;781:17727;9664:13;;;;;;;781:17727;;;-1:-1:-1;;;781:17727:82;;;;;;;;;;;;;;;;;-1:-1:-1;;;14274:80:82;781:17727;;;;;;;14274:80;781:17727;;;;;;;;;;;;;;;;;;;;;;;9679:32;;;10046:10;9679:32;781:17727;;;;;10011:33;10046:10;:::i;:::-;781:17727;516:66:52;7628:52:53;781:17727:82;1292:93:52;1344:30;;;781:17727:82;1344:30:52;781:17727:82;;1344:30:52;781:17727:82;;;;;;-1:-1:-1;;781:17727:82;;;;;;;;6983:15;;;;;:35;;781:17727;;;;7119:12;-1:-1:-1;;;;;;;;;;;781:17727:82;7119:12;781:17727;;;;;;;;;;;;;;;;;;;;;7292:43;781:17727;;;;;;;;;;;7247:29;781:17727;;;;;;;;;;;;;;;;;7292:43;781:17727;;;;-1:-1:-1;;;781:17727:82;;;;;;;;;;;;;;;;;-1:-1:-1;;;781:17727:82;;;;;;;;;;-1:-1:-1;;;781:17727:82;;;;;;;;;;;;;;;;;;;;6983:35;7002:11;781:17727;7002:11;:16;;6983:35;;781:17727;;;;;;-1:-1:-1;;781:17727:82;;;;;;-1:-1:-1;;;;;6471:21:82;-1:-1:-1;;;;;;;;;;;781:17727:82;6471:21;781:17727;;;;6350:149;;781:17727;;;;;;-1:-1:-1;;781:17727:82;;;;;;4211:26;-1:-1:-1;;;;;;;;;;;781:17727:82;4211:26;781:17727;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;781:17727:82;;;;;;;;;;;;;;;;;:::o;:::-;;;;-1:-1:-1;;;;;781:17727:82;;;;;;:::o;:::-;;;14274:80;;781:17727;;;;;;;;-1:-1:-1;;;;;781:17727:82;;;;;;;:::o;:::-;;;;-1:-1:-1;781:17727:82;;;;;-1:-1:-1;781:17727:82;;;;;-1:-1:-1;;;;;781:17727:82;;;;;;;;14274:80;781:17727;;-1:-1:-1;;781:17727:82;;;;;:::i;:::-;;;;;;;;;;;;;;;;;-1:-1:-1;781:17727:82;;;;;;:::o;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;781:17727:82;;;;;;;;;;;;;;;:::o;:::-;;;;-1:-1:-1;;;;;781:17727:82;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;-1:-1:-1;;;;;781:17727:82;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;;-1:-1:-1;781:17727:82;;;;;;;;-1:-1:-1;;781:17727:82;;;;:::o;:::-;;;;;;-1:-1:-1;;;;;781:17727:82;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;-1:-1:-1;781:17727:82;;-1:-1:-1;781:17727:82;;-1:-1:-1;781:17727:82;;;;;;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;781:17727:82;;;;;;;;;;-1:-1:-1;781:17727:82;;;;;;;;6740:113;-1:-1:-1;;;;;;;;;;;781:17727:82;6110:17;;781:17727;-1:-1:-1;;;;;781:17727:82;;;-1:-1:-1;;;;;781:17727:82;;;;;;;-1:-1:-1;;;;;781:17727:82;;;;;;;6740:113;:::o;781:17727::-;;;;;;;;;;:::o;:::-;-1:-1:-1;;781:17727:82;;;;;;;:::o;4964:204::-;-1:-1:-1;;;;;;;;;;;781:17727:82;4918:33;5296:21;;;781:17727;4918:33;;781:17727;;;;;;;;;;;;;;;;5148:4;781:17727;;;;;;;5156:5;781:17727;;4964:204;:::o;3405:215:24:-;-1:-1:-1;;;;;781:17727:82;3489:22:24;;3485:91;;-1:-1:-1;;;;;;;;;;;781:17727:82;;-1:-1:-1;;;;;;781:17727:82;;;;;;;-1:-1:-1;;;;;781:17727:82;3975:40:24;-1:-1:-1;;3975:40:24;3405:215::o;3485:91::-;3534:31;;;3509:1;3534:31;3509:1;3534:31;781:17727:82;;3509:1:24;3534:31;781:17727:82;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;781:17727:82;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;781:17727:82;;;;;;;;;;;;;;:::o;11063:844::-;;-1:-1:-1;;;;;;;;;;;781:17727:82;11231:21;;;:::i;:::-;781:17727;;;11331:26;;;;781:17727;;;11331:26;;;;781:17727;11331:26;;:::i;:::-;2858:45:56;781:17727:82;;;2858:45:56;;11331:26:82;2858:45:56;;781:17727:82;;;;;;11293:4;781:17727;;;;;;;;;;;;;;;-1:-1:-1;781:17727:82;;;;2858:45:56;;14274:80:82;;2858:45:56;;;;;;:::i;:::-;781:17727:82;2848:56:56;;-1:-1:-1;;11592:17:82;;;-1:-1:-1;11449:3:82;11426:21;;;;;;3915:8:55;3859:27;781:17727:82;;;;;;;;;:::i;:::-;;;;:::i;:::-;3859:27:55;;:::i;:::-;3915:8;;;;;:::i;:::-;-1:-1:-1;;;;;781:17727:82;-1:-1:-1;781:17727:82;;;;;;;;;;;;;;;;11644:17;;;:::i;:::-;:30;;;;11640:82;;781:17727;;11411:13;;;11640:82;11698:5;;;;;;;11406:416;11840:28;781:17727;;11063:844::o;781:17727::-;;;-1:-1:-1;;;781:17727:82;;11331:26;781:17727;;;;;;;;;;;;;;;;;11588:224;781:17727;;-1:-1:-1;;;781:17727:82;;11331:26;781:17727;;;;;;;;;-1:-1:-1;;;781:17727:82;;;;;;;11426:21;;;;;;;;;;2658:162:24;-1:-1:-1;;;;;;;;;;;781:17727:82;-1:-1:-1;;;;;781:17727:82;966:10:29;2717:23:24;2713:101;;2658:162::o;2713:101::-;2763:40;;;-1:-1:-1;2763:40:24;966:10:29;2763:40:24;781:17727:82;;-1:-1:-1;2763:40:24;781:17727:82;;-1:-1:-1;;;;;781:17727:82;;;;;;;-1:-1:-1;;;;;781:17727:82;;;;:::o;10106:951::-;;;;-1:-1:-1;;;;;;;;;;;781:17727:82;;;-1:-1:-1;781:17727:82;10312:12;;;781:17727;;;;-1:-1:-1;781:17727:82;;;;;;;;;10336:19;10312:43;781:17727;;10440:9;;:::i;:::-;781:17727;-1:-1:-1;;;;;781:17727:82;;;;-1:-1:-1;;;;;781:17727:82;;;;;;;10536:32;;:41;:32;;:::i;:::-;:41;:::i;:::-;781:17727;17379:18;;781:17727;;;-1:-1:-1;;;17372:73:82;;17412:9;17372:73;;;781:17727;17431:4;781:17727;;;;-1:-1:-1;;;;;781:17727:82;;;;;;;;;;;;17372:73;;781:17727;;-1:-1:-1;;;;;;;781:17727:82;17372:73;;;;;;;-1:-1:-1;17372:73:82;;;10106:951;781:17727;;;;3743:569:36;10336:19:82;10819:18;;781:17727;;;;;10849:30;;781:17727;;;;;;;;;10849:30;;;781:17727;10849:30;;:::i;:::-;781:17727;10839:41;;3743:569:36;;;;;;;;-1:-1:-1;3743:569:36;;;;;;;;781:17727:82;3743:569:36;;10312:12:82;-1:-1:-1;3743:569:36;781:17727:82;-1:-1:-1;;;;;781:17727:82;;;4325:22:36;;4321:85;;10973:31:82;10892:24;10935:20;781:17727;10892:24;781:17727;-1:-1:-1;781:17727:82;10892:15;;;781:17727;;;;-1:-1:-1;781:17727:82;1072:66;10935:20;:22;781:17727;;10935:22;:::i;:::-;1072:66;;781:17727;;;;;10973:31;11015:35;10106:951;:::o;4321:85:36:-;4370:25;;;-1:-1:-1;4370:25:36;17372:73:82;-1:-1:-1;4370:25:36;781:17727:82;;;-1:-1:-1;;;781:17727:82;;;17372:73;781:17727;;;;;;;;;;;;;17372:73;;781:17727;17372:73;;;;781:17727;17372:73;781:17727;17372:73;;;;;;;:::i;:::-;;;;781:17727;;;-1:-1:-1;;;781:17727:82;;;;;;;;;;;;;;;;;-1:-1:-1;;;781:17727:82;;;;;;;17836:442;-1:-1:-1;;;;;;;;;;;781:17727:82;17970:21;;;;781:17727;;;;;18059:13;;18175:17;;;-1:-1:-1;18103:3:82;781:17727;;18074:27;;;;;781:17727;;;;;;;;;;;-1:-1:-1;;;;;781:17727:82;-1:-1:-1;781:17727:82;;;;;;;;;;;;-1:-1:-1;;781:17727:82;;;;;;;;;18059:13;;18074:27;-1:-1:-1;781:17727:82;;;18074:27;-1:-1:-1;;;;;;781:17727:82;;;;;;;;;;;;;;;;;;;18054:167;781:17727;;;;-1:-1:-1;781:17727:82;;-1:-1:-1;781:17727:82;-1:-1:-1;781:17727:82;;;;;;17836:442;;;;:::o;781:17727::-;;;-1:-1:-1;;;;;781:17727:82;;;;;;;;;;;;;;;;-1:-1:-1;781:17727:82;;;-1:-1:-1;781:17727:82;;;;;;;;;;;;;;;;-1:-1:-1;781:17727:82;;;;;;;;;-1:-1:-1;;;781:17727:82;;;;;;;;;;;;;;;;;-1:-1:-1;;;781:17727:82;;;;;;;13163:338;;781:17727;;13260:12;781:17727;13260:12;781:17727;;;;13243:230;13278:5;;;13243:230;-1:-1:-1;781:17727:82;;-1:-1:-1;13163:338:82:o;13285:3::-;13318:12;;13348:11;;;;;-1:-1:-1;13275:1:82;;-1:-1:-1;;13379:11:82:o;13344:119::-;13415:8;13411:52;;781:17727;;;;-1:-1:-1;;781:17727:82;;13248:28;;13411:52;13443:5;;781:17727;;-1:-1:-1;;;;;781:17727:82;;;;;;;:::o;:::-;;-1:-1:-1;;;;;781:17727:82;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;781:17727:82;;;;;;;;;;;;;;;;:::o;:::-;;-1:-1:-1;;;;;;781:17727:82;;;;;;;:::o;7084:141:25:-;781:17727:82;-1:-1:-1;;;;;;;;;;;781:17727:82;;;;7150:18:25;7146:73;;7084:141::o;7146:73::-;7191:17;;;-1:-1:-1;7191:17:25;;-1:-1:-1;7191:17:25;2129:766:55;781:17727:82;;;2129:766:55;2276:2;2256:22;;2276:2;;2739:25;2539:180;;;;;;;;;;;;;;;-1:-1:-1;2539:180:55;2739:25;;:::i;:::-;2732:32;;;;;:::o;2252:637::-;2795:83;;2811:1;2795:83;2815:35;2795:83;;:::o;7196:532::-;781:17727:82;;;;;;7282:29:55;;;7327:7;;:::o;7278:444::-;781:17727:82;7378:38:55;;781:17727:82;;7439:23:55;;;7291:20;7439:23;781:17727:82;7291:20:55;7439:23;7374:348;7492:35;7483:44;;7492:35;;7550:46;;;;7291:20;7550:46;781:17727:82;;;7291:20:55;7550:46;7479:243;7626:30;7617:39;7613:109;;7479:243;7196:532::o;7613:109::-;7679:32;;;7291:20;7679:32;781:17727:82;;;7291:20:55;7679:32;5140:1530;;;6199:66;6186:79;;6182:164;;781:17727:82;;;;;;-1:-1:-1;781:17727:82;;;;;;;;;;;;;;;;;;;6457:24:55;;;;;;;;;-1:-1:-1;6457:24:55;-1:-1:-1;;;;;781:17727:82;;6495:20:55;6491:113;;6614:49;-1:-1:-1;6614:49:55;-1:-1:-1;5140:1530:55;:::o;6491:113::-;6531:62;-1:-1:-1;6531:62:55;6457:24;6531:62;-1:-1:-1;6531:62:55;:::o;6182:164::-;6281:54;;;6297:1;6281:54;6301:30;6281:54;;:::o","linkReferences":{}},"methodIdentifiers":{"baseFee()":"6ef25c3a","baseWeight()":"d3fd6364","codeState(bytes32)":"c13911e8","commitBlocks((bytes32,bytes32,bytes32,(address,bytes32,address,uint128,(bytes32,address,uint128)[],(bytes32,address,bytes,uint128,(bytes32,bytes4))[])[])[],bytes[])":"26637f6d","commitCodes((bytes32,bool)[],bytes[])":"e97d3eb3","createProgram(bytes32,bytes32,bytes,uint128)":"8074b455","createProgramWithDecoder(address,bytes32,bytes32,bytes,uint128)":"666d124c","genesisBlockHash()":"28e24b3d","getStorageSlot()":"96708226","initialize(address,address,address,address,address[])":"f8453e7c","lastBlockCommitmentHash()":"2dacfb69","mirror()":"444d9172","mirrorProxy()":"78ee5dec","owner()":"8da5cb5b","programCodeId(address)":"9067088e","programsCount()":"96a2ddfa","reinitialize()":"6c2eb350","renounceOwnership()":"715018a6","requestCodeValidation(bytes32,bytes32)":"1c149d8a","setBaseWeight(uint64)":"8028861a","setMirror(address)":"3d43b418","setStorageSlot(string)":"5686cad5","setValuePerWeight(uint128)":"a6bbbe1c","signingThresholdPercentage()":"efd81abc","transferOwnership(address)":"f2fde38b","updateValidators(address[])":"e71731e4","validatedCodesCount()":"007a32e7","validatorExists(address)":"8febbd59","validators()":"ca1e7819","validatorsCount()":"ed612f8c","validatorsThreshold()":"edc87225","valuePerWeight()":"0834fecc","wrappedVara()":"88f50cf0"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"ECDSAInvalidSignature\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"length\",\"type\":\"uint256\"}],\"name\":\"ECDSAInvalidSignatureLength\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"ECDSAInvalidSignatureS\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedDeployment\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"OwnableInvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"OwnableUnauthorizedAccount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ReentrancyGuardReentrantCall\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"baseWeight\",\"type\":\"uint64\"}],\"name\":\"BaseWeightChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"}],\"name\":\"BlockCommitted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"id\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bool\",\"name\":\"valid\",\"type\":\"bool\"}],\"name\":\"CodeGotValidated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"codeId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"blobTxHash\",\"type\":\"bytes32\"}],\"name\":\"CodeValidationRequested\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"actorId\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"codeId\",\"type\":\"bytes32\"}],\"name\":\"ProgramCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"StorageSlotChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"ValidatorsSetChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"valuePerWeight\",\"type\":\"uint128\"}],\"name\":\"ValuePerWeightChanged\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"baseFee\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"baseWeight\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"codeId\",\"type\":\"bytes32\"}],\"name\":\"codeState\",\"outputs\":[{\"internalType\":\"enum IRouter.CodeState\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"prevCommitmentHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"predBlockHash\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"actorId\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"newStateHash\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"inheritor\",\"type\":\"address\"},{\"internalType\":\"uint128\",\"name\":\"valueToReceive\",\"type\":\"uint128\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"messageId\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"destination\",\"type\":\"address\"},{\"internalType\":\"uint128\",\"name\":\"value\",\"type\":\"uint128\"}],\"internalType\":\"struct IRouter.ValueClaim[]\",\"name\":\"valueClaims\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"id\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"destination\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"payload\",\"type\":\"bytes\"},{\"internalType\":\"uint128\",\"name\":\"value\",\"type\":\"uint128\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"to\",\"type\":\"bytes32\"},{\"internalType\":\"bytes4\",\"name\":\"code\",\"type\":\"bytes4\"}],\"internalType\":\"struct IRouter.ReplyDetails\",\"name\":\"replyDetails\",\"type\":\"tuple\"}],\"internalType\":\"struct IRouter.OutgoingMessage[]\",\"name\":\"messages\",\"type\":\"tuple[]\"}],\"internalType\":\"struct IRouter.StateTransition[]\",\"name\":\"transitions\",\"type\":\"tuple[]\"}],\"internalType\":\"struct IRouter.BlockCommitment[]\",\"name\":\"blockCommitmentsArray\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes[]\",\"name\":\"signatures\",\"type\":\"bytes[]\"}],\"name\":\"commitBlocks\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"id\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"valid\",\"type\":\"bool\"}],\"internalType\":\"struct IRouter.CodeCommitment[]\",\"name\":\"codeCommitmentsArray\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes[]\",\"name\":\"signatures\",\"type\":\"bytes[]\"}],\"name\":\"commitCodes\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"codeId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"payload\",\"type\":\"bytes\"},{\"internalType\":\"uint128\",\"name\":\"_value\",\"type\":\"uint128\"}],\"name\":\"createProgram\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"decoderImplementation\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"codeId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"payload\",\"type\":\"bytes\"},{\"internalType\":\"uint128\",\"name\":\"_value\",\"type\":\"uint128\"}],\"name\":\"createProgramWithDecoder\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"genesisBlockHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getStorageSlot\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"initialOwner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_mirror\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_mirrorProxy\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_wrappedVara\",\"type\":\"address\"},{\"internalType\":\"address[]\",\"name\":\"_validatorsKeys\",\"type\":\"address[]\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"lastBlockCommitmentHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"mirror\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"mirrorProxy\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"program\",\"type\":\"address\"}],\"name\":\"programCodeId\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"programsCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"reinitialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"codeId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"blobTxHash\",\"type\":\"bytes32\"}],\"name\":\"requestCodeValidation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"_baseWeight\",\"type\":\"uint64\"}],\"name\":\"setBaseWeight\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_mirror\",\"type\":\"address\"}],\"name\":\"setMirror\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"namespace\",\"type\":\"string\"}],\"name\":\"setStorageSlot\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint128\",\"name\":\"_valuePerWeight\",\"type\":\"uint128\"}],\"name\":\"setValuePerWeight\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"signingThresholdPercentage\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"validatorsAddressArray\",\"type\":\"address[]\"}],\"name\":\"updateValidators\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"validatedCodesCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"validator\",\"type\":\"address\"}],\"name\":\"validatorExists\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"validators\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"validatorsCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"validatorsThreshold\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"valuePerWeight\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"wrappedVara\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"errors\":{\"ECDSAInvalidSignature()\":[{\"details\":\"The signature derives the `address(0)`.\"}],\"ECDSAInvalidSignatureLength(uint256)\":[{\"details\":\"The signature has an invalid length.\"}],\"ECDSAInvalidSignatureS(bytes32)\":[{\"details\":\"The signature has an S value that is in the upper half order.\"}],\"FailedDeployment()\":[{\"details\":\"The deployment failed.\"}],\"InsufficientBalance(uint256,uint256)\":[{\"details\":\"The ETH balance of the account is not enough to perform the operation.\"}],\"InvalidInitialization()\":[{\"details\":\"The contract is already initialized.\"}],\"NotInitializing()\":[{\"details\":\"The contract is not initializing.\"}],\"OwnableInvalidOwner(address)\":[{\"details\":\"The owner is not a valid owner account. (eg. `address(0)`)\"}],\"OwnableUnauthorizedAccount(address)\":[{\"details\":\"The caller account is not authorized to perform an operation.\"}],\"ReentrancyGuardReentrantCall()\":[{\"details\":\"Unauthorized reentrant call.\"}]},\"events\":{\"BaseWeightChanged(uint64)\":{\"details\":\"Emitted when the tx's base weight is changed. NOTE: It's event for USERS: it informs about new value of commission for each message sending. NOTE: It's event for NODES: it requires to update commission in programs execution parameters.\"},\"BlockCommitted(bytes32)\":{\"details\":\"Emitted when a new state transitions are applied. NOTE: It's event for USERS: it informs about new block outcome committed.\"},\"CodeGotValidated(bytes32,bool)\":{\"details\":\"Emitted when a code, previously requested to be validated, gets validated. NOTE: It's event for USERS: it informs about validation results of previously requested code.\"},\"CodeValidationRequested(bytes32,bytes32)\":{\"details\":\"Emitted when a new code validation request submitted. NOTE: It's event for NODES: it requires to download and validate code from blob.\"},\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"},\"ProgramCreated(address,bytes32)\":{\"details\":\"Emitted when a new program created. NOTE: It's event for USERS: it informs about new program creation and it's availability on Ethereum. NOTE: It's event for NODES: it requires to create associated gear program in local storage.\"},\"StorageSlotChanged()\":{\"details\":\"Emitted when the storage slot is changed. NOTE: It's event for USERS: it informs about router being wiped and all programs and codes deletion. NOTE: It's event for NODES: it requires to clean the local storage.\"},\"ValidatorsSetChanged()\":{\"details\":\"Emitted when the validators set is changed. NOTE: It's event for USERS: it informs about validators rotation. NOTE: It's event for NODES: it requires to update authorities that sign outcomes.\"},\"ValuePerWeightChanged(uint128)\":{\"details\":\"Emitted when the value per executable weight is changed. NOTE: It's event for USERS: it informs about new conversion rate between weight and it's WVara price. NOTE: It's event for NODES: it requires to update conversion rate in programs execution parameters.\"}},\"kind\":\"dev\",\"methods\":{\"constructor\":{\"custom:oz-upgrades-unsafe-allow\":\"constructor\"},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"programCodeId(address)\":{\"details\":\"Returns bytes32(0) in case of inexistent program.\"},\"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.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/Router.sol\":\"Router\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/openzeppelin-contracts-upgradeable/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts-upgradeable/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin-foundry-upgrades/=lib/openzeppelin-foundry-upgrades/src/\",\":solidity-stringutils/=lib/openzeppelin-foundry-upgrades/lib/solidity-stringutils/\"],\"viaIR\":true},\"sources\":{\"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":{\"keccak256\":\"0xc163fcf9bb10138631a9ba5564df1fa25db9adff73bd9ee868a8ae1858fe093a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9706d43a0124053d9880f6e31a59f31bc0a6a3dc1acd66ce0a16e1111658c5f6\",\"dweb:/ipfs/QmUFmfowzkRwGtDu36cXV9SPTBHJ3n7dG9xQiK5B28jTf2\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609\",\"dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://08e39f23d5b4692f9a40803e53a8156b72b4c1f9902a88cd65ba964db103dab9\",\"dweb:/ipfs/QmPKn6EYDgpga7KtpkA8wV2yJCYGMtc9K4LkJfhKX2RVSV\"]},\"lib/openzeppelin-contracts/contracts/proxy/Clones.sol\":{\"keccak256\":\"0x4cc853b89072428e406c60c6e8d5280b31f9d99d6caf7b041650e649746513a6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://38a1bbdb89a8f5d1820a2dcc34b5086a6e199c7a8965007345975b5db8997a64\",\"dweb:/ipfs/QmcN6yJBkoserTqAMpue55HmMCMf7dGJYUbGi8p366HqZq\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009\",\"dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x88f7b6f070ad1de2bf899da6978ed74b5038eac78c01b7359b92b60c3d965c28\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c436edb6733a036607c6f17cc590e8ee351363a8cb4c564a98d9a66392c89323\",\"dweb:/ipfs/QmcJvJR2K3EtYcKEXVpQ1WqT6TvAbVem5HR1FirAsqEXFR\"]},\"lib/openzeppelin-contracts/contracts/utils/Errors.sol\":{\"keccak256\":\"0xc452b8c0ab5a57e6ca49c4fbe6aead2460c2f8d60d58bc60af68e559b7ca1179\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0980b3b9e8cd9d9a0f2ae848f0f36a85158887e6fd961142a13b11299ae7f30a\",\"dweb:/ipfs/QmUrmDji3NR2V3YezV8xHSS3wjeBKq16FL7cHdBCnwLjKd\"]},\"lib/openzeppelin-contracts/contracts/utils/Panic.sol\":{\"keccak256\":\"0x29074fe5a74bb024c57b3570abf6c74d8bceed3438694d470fd0166a3ecd196a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f4f8435ccbc56e384f4cc9ac9ff491cf30a82f2beac00e33ccc2cf8af3f77cc3\",\"dweb:/ipfs/QmUKJXxTe6nn1qfgnX8xbnboNNAPUuEmJyGqMZCKNiFBgn\"]},\"lib/openzeppelin-contracts/contracts/utils/ReentrancyGuardTransient.sol\":{\"keccak256\":\"0x629828db7f6354641b2bc42f6f6742b07bed39959361f92b781224fd33cfb0c9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a2654b69b5d9b42ad4c981875add283a06db8bd02e01c614d4f0d498860d0c58\",\"dweb:/ipfs/QmWE3oD4Ti4UKrZTiA4cxAwprkFTpBYsLRrc62w5Lg16Q8\"]},\"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0xfd29ed7a01e9ef109cc31542ca0f51ba3e793740570b69172ec3d8bfbb1643b4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://99379e0649be8106d2708a2bde73b5cdaba4505f1001f1586b53788bf971d097\",\"dweb:/ipfs/QmV9cCnvFoVzV2cVDW4Zbs3JQ3ehxBcooQS52taVxR637S\"]},\"lib/openzeppelin-contracts/contracts/utils/Strings.sol\":{\"keccak256\":\"0x686a21b9be2594ccfda3a855270dd8ebc4288b8a9ed84ecd4ef1bca2ea3fc46b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7c0bbc37f4d1aaae086d73f13f41b8043a9ad5b07f30a2fd7b8a74ead99b1ef6\",\"dweb:/ipfs/QmZpFyfCCFpbrkNtfHTn18qV7VvptPdoLN82Qu5XtMCci6\"]},\"lib/openzeppelin-contracts/contracts/utils/cryptography/ECDSA.sol\":{\"keccak256\":\"0xa548dd62e9e17616ae80a1e7ac7b1447ae377efc27fb9f7b4f4fbf5c0b0a1dfb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d27e9ae3e67eb229444cd43d49db5be57c586155fd1d363b3b1f9bb1b7bb0087\",\"dweb:/ipfs/QmT2GFnpXsTWBs8bkeVJtQ4VNX7f3igxwB77JBCr4mDXb3\"]},\"lib/openzeppelin-contracts/contracts/utils/cryptography/MessageHashUtils.sol\":{\"keccak256\":\"0x3f1998a2904792ff2a576827876638b4917573186537f878d30b23277a3b8d38\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a8dfb08ed617c9d874de901e44ac8af7af7b13e7c84000a1da3cdaf6004593e8\",\"dweb:/ipfs/QmPX2hZAvCZJCQNSXcWqhxh3xp6UitwESrw3K2u3aYNqiu\"]},\"lib/openzeppelin-contracts/contracts/utils/math/Math.sol\":{\"keccak256\":\"0x2be34e47fc07baed68c4878618a6e13c13243753c3f656ca1b6e05287c5df4ee\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e0bc7f3ae934c76aae959cf061b9764a6dbb2313c4281944dde278cd418599da\",\"dweb:/ipfs/QmYtYLrwC1nPJd86kVrQFQAGeS3XGmhXjCj25LQGfGkugi\"]},\"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0x8cd59334ed58b8884cd1f775afc9400db702e674e5d6a7a438c655b9de788d7e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://99e62c7de7318f413b6352e3f2704ca23e7725ff144e43c8bd574d12dbf29047\",\"dweb:/ipfs/QmSEXG2rBx1VxU2uFTWdiChjDvA4osEY2mesjmoVeVhHko\"]},\"lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol\":{\"keccak256\":\"0x5c8d4114f077f6803bb89b8b07bfa26dfbf8f2001708e4e7fdf1e8d9ddd42f44\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b66c74efa1f994e3ea467b4165da1575857b29d81bec36e94678fe494ce5c615\",\"dweb:/ipfs/QmeXQFdzSJFmN8UdhxMqQwwUh1U2WEha5NoVLbSg3pCJc5\"]},\"src/IMirror.sol\":{\"keccak256\":\"0x78105f388516b83fcb68f7c006c5d9d685bc8ad7fadcdfa56c0919efa79a6373\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://3a8ab1264895b4f5c8fd3aa18524016c4e88712a50e0a9935f421e13f3e09601\",\"dweb:/ipfs/QmXyVe9k37fDFWmrfjYHisxmqnEynevYo88uVrnRAmYW6L\"]},\"src/IRouter.sol\":{\"keccak256\":\"0xb16e44a8917c8292c47779fdcb6a8fa23a394258370375d83774e324c159a8d2\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://356609e9f3ed19904806ba235c5fd247171754eea0f479d826558a9a7908cf05\",\"dweb:/ipfs/QmXPnJzKpk6AhqXjd2cKgReTvnZULcn2tdH2RiU8avLP7P\"]},\"src/IWrappedVara.sol\":{\"keccak256\":\"0xfc2f9955b1d8f74a98a087b490a03b86933c423eb58b840f1e3eb4cd58eac175\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://5942f66657786636ddb832587404810bf65fc757e12ddaa07393a0b3f885840f\",\"dweb:/ipfs/QmTEP15EF9zrA7bCj8cesNd8QyUPHM3XgtKJecCUjsA5Jf\"]},\"src/Router.sol\":{\"keccak256\":\"0xc381124067fb1c739e6d483bb7e6f41fcd1c3e5541c77664865511a7d4404005\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://7a3270fd3be39e2342990866436cdff925f93b98d2be4bf0145ec23e4e506fd4\",\"dweb:/ipfs/Qmcy8vdrxgHzuTLKv5ZrKfACfkvpNEHrzRvjH7kAzV7ZA4\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.26+commit.8a97fa7a"},"language":"Solidity","output":{"abi":[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"type":"error","name":"ECDSAInvalidSignature"},{"inputs":[{"internalType":"uint256","name":"length","type":"uint256"}],"type":"error","name":"ECDSAInvalidSignatureLength"},{"inputs":[{"internalType":"bytes32","name":"s","type":"bytes32"}],"type":"error","name":"ECDSAInvalidSignatureS"},{"inputs":[],"type":"error","name":"FailedDeployment"},{"inputs":[{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"type":"error","name":"InsufficientBalance"},{"inputs":[],"type":"error","name":"InvalidInitialization"},{"inputs":[],"type":"error","name":"NotInitializing"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"type":"error","name":"OwnableInvalidOwner"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"type":"error","name":"OwnableUnauthorizedAccount"},{"inputs":[],"type":"error","name":"ReentrancyGuardReentrantCall"},{"inputs":[{"internalType":"uint64","name":"baseWeight","type":"uint64","indexed":false}],"type":"event","name":"BaseWeightChanged","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"blockHash","type":"bytes32","indexed":false}],"type":"event","name":"BlockCommitted","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"id","type":"bytes32","indexed":false},{"internalType":"bool","name":"valid","type":"bool","indexed":true}],"type":"event","name":"CodeGotValidated","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"codeId","type":"bytes32","indexed":false},{"internalType":"bytes32","name":"blobTxHash","type":"bytes32","indexed":false}],"type":"event","name":"CodeValidationRequested","anonymous":false},{"inputs":[{"internalType":"uint64","name":"version","type":"uint64","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":"OwnershipTransferred","anonymous":false},{"inputs":[{"internalType":"address","name":"actorId","type":"address","indexed":false},{"internalType":"bytes32","name":"codeId","type":"bytes32","indexed":true}],"type":"event","name":"ProgramCreated","anonymous":false},{"inputs":[],"type":"event","name":"StorageSlotChanged","anonymous":false},{"inputs":[],"type":"event","name":"ValidatorsSetChanged","anonymous":false},{"inputs":[{"internalType":"uint128","name":"valuePerWeight","type":"uint128","indexed":false}],"type":"event","name":"ValuePerWeightChanged","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"baseFee","outputs":[{"internalType":"uint128","name":"","type":"uint128"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"baseWeight","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[{"internalType":"bytes32","name":"codeId","type":"bytes32"}],"stateMutability":"view","type":"function","name":"codeState","outputs":[{"internalType":"enum IRouter.CodeState","name":"","type":"uint8"}]},{"inputs":[{"internalType":"struct IRouter.BlockCommitment[]","name":"blockCommitmentsArray","type":"tuple[]","components":[{"internalType":"bytes32","name":"blockHash","type":"bytes32"},{"internalType":"bytes32","name":"prevCommitmentHash","type":"bytes32"},{"internalType":"bytes32","name":"predBlockHash","type":"bytes32"},{"internalType":"struct IRouter.StateTransition[]","name":"transitions","type":"tuple[]","components":[{"internalType":"address","name":"actorId","type":"address"},{"internalType":"bytes32","name":"newStateHash","type":"bytes32"},{"internalType":"address","name":"inheritor","type":"address"},{"internalType":"uint128","name":"valueToReceive","type":"uint128"},{"internalType":"struct IRouter.ValueClaim[]","name":"valueClaims","type":"tuple[]","components":[{"internalType":"bytes32","name":"messageId","type":"bytes32"},{"internalType":"address","name":"destination","type":"address"},{"internalType":"uint128","name":"value","type":"uint128"}]},{"internalType":"struct IRouter.OutgoingMessage[]","name":"messages","type":"tuple[]","components":[{"internalType":"bytes32","name":"id","type":"bytes32"},{"internalType":"address","name":"destination","type":"address"},{"internalType":"bytes","name":"payload","type":"bytes"},{"internalType":"uint128","name":"value","type":"uint128"},{"internalType":"struct IRouter.ReplyDetails","name":"replyDetails","type":"tuple","components":[{"internalType":"bytes32","name":"to","type":"bytes32"},{"internalType":"bytes4","name":"code","type":"bytes4"}]}]}]}]},{"internalType":"bytes[]","name":"signatures","type":"bytes[]"}],"stateMutability":"nonpayable","type":"function","name":"commitBlocks"},{"inputs":[{"internalType":"struct IRouter.CodeCommitment[]","name":"codeCommitmentsArray","type":"tuple[]","components":[{"internalType":"bytes32","name":"id","type":"bytes32"},{"internalType":"bool","name":"valid","type":"bool"}]},{"internalType":"bytes[]","name":"signatures","type":"bytes[]"}],"stateMutability":"nonpayable","type":"function","name":"commitCodes"},{"inputs":[{"internalType":"bytes32","name":"codeId","type":"bytes32"},{"internalType":"bytes32","name":"salt","type":"bytes32"},{"internalType":"bytes","name":"payload","type":"bytes"},{"internalType":"uint128","name":"_value","type":"uint128"}],"stateMutability":"payable","type":"function","name":"createProgram","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"decoderImplementation","type":"address"},{"internalType":"bytes32","name":"codeId","type":"bytes32"},{"internalType":"bytes32","name":"salt","type":"bytes32"},{"internalType":"bytes","name":"payload","type":"bytes"},{"internalType":"uint128","name":"_value","type":"uint128"}],"stateMutability":"payable","type":"function","name":"createProgramWithDecoder","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"genesisBlockHash","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getStorageSlot","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"address","name":"initialOwner","type":"address"},{"internalType":"address","name":"_mirror","type":"address"},{"internalType":"address","name":"_mirrorProxy","type":"address"},{"internalType":"address","name":"_wrappedVara","type":"address"},{"internalType":"address[]","name":"_validatorsKeys","type":"address[]"}],"stateMutability":"nonpayable","type":"function","name":"initialize"},{"inputs":[],"stateMutability":"view","type":"function","name":"lastBlockCommitmentHash","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"mirror","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"mirrorProxy","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"program","type":"address"}],"stateMutability":"view","type":"function","name":"programCodeId","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"programsCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"reinitialize"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"renounceOwnership"},{"inputs":[{"internalType":"bytes32","name":"codeId","type":"bytes32"},{"internalType":"bytes32","name":"blobTxHash","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"requestCodeValidation"},{"inputs":[{"internalType":"uint64","name":"_baseWeight","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"setBaseWeight"},{"inputs":[{"internalType":"address","name":"_mirror","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setMirror"},{"inputs":[{"internalType":"string","name":"namespace","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"setStorageSlot"},{"inputs":[{"internalType":"uint128","name":"_valuePerWeight","type":"uint128"}],"stateMutability":"nonpayable","type":"function","name":"setValuePerWeight"},{"inputs":[],"stateMutability":"view","type":"function","name":"signingThresholdPercentage","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"transferOwnership"},{"inputs":[{"internalType":"address[]","name":"validatorsAddressArray","type":"address[]"}],"stateMutability":"nonpayable","type":"function","name":"updateValidators"},{"inputs":[],"stateMutability":"view","type":"function","name":"validatedCodesCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"validator","type":"address"}],"stateMutability":"view","type":"function","name":"validatorExists","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"validators","outputs":[{"internalType":"address[]","name":"","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"validatorsCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"validatorsThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"valuePerWeight","outputs":[{"internalType":"uint128","name":"","type":"uint128"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"wrappedVara","outputs":[{"internalType":"address","name":"","type":"address"}]}],"devdoc":{"kind":"dev","methods":{"constructor":{"custom:oz-upgrades-unsafe-allow":"constructor"},"owner()":{"details":"Returns the address of the current owner."},"programCodeId(address)":{"details":"Returns bytes32(0) in case of inexistent program."},"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."},"transferOwnership(address)":{"details":"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."}},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/openzeppelin-contracts-upgradeable/lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","halmos-cheatcodes/=lib/openzeppelin-contracts-upgradeable/lib/halmos-cheatcodes/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/","openzeppelin-foundry-upgrades/=lib/openzeppelin-foundry-upgrades/src/","solidity-stringutils/=lib/openzeppelin-foundry-upgrades/lib/solidity-stringutils/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/Router.sol":"Router"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol":{"keccak256":"0xc163fcf9bb10138631a9ba5564df1fa25db9adff73bd9ee868a8ae1858fe093a","urls":["bzz-raw://9706d43a0124053d9880f6e31a59f31bc0a6a3dc1acd66ce0a16e1111658c5f6","dweb:/ipfs/QmUFmfowzkRwGtDu36cXV9SPTBHJ3n7dG9xQiK5B28jTf2"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol":{"keccak256":"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b","urls":["bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609","dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol":{"keccak256":"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397","urls":["bzz-raw://08e39f23d5b4692f9a40803e53a8156b72b4c1f9902a88cd65ba964db103dab9","dweb:/ipfs/QmPKn6EYDgpga7KtpkA8wV2yJCYGMtc9K4LkJfhKX2RVSV"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/proxy/Clones.sol":{"keccak256":"0x4cc853b89072428e406c60c6e8d5280b31f9d99d6caf7b041650e649746513a6","urls":["bzz-raw://38a1bbdb89a8f5d1820a2dcc34b5086a6e199c7a8965007345975b5db8997a64","dweb:/ipfs/QmcN6yJBkoserTqAMpue55HmMCMf7dGJYUbGi8p366HqZq"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4","urls":["bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009","dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"keccak256":"0x88f7b6f070ad1de2bf899da6978ed74b5038eac78c01b7359b92b60c3d965c28","urls":["bzz-raw://c436edb6733a036607c6f17cc590e8ee351363a8cb4c564a98d9a66392c89323","dweb:/ipfs/QmcJvJR2K3EtYcKEXVpQ1WqT6TvAbVem5HR1FirAsqEXFR"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Errors.sol":{"keccak256":"0xc452b8c0ab5a57e6ca49c4fbe6aead2460c2f8d60d58bc60af68e559b7ca1179","urls":["bzz-raw://0980b3b9e8cd9d9a0f2ae848f0f36a85158887e6fd961142a13b11299ae7f30a","dweb:/ipfs/QmUrmDji3NR2V3YezV8xHSS3wjeBKq16FL7cHdBCnwLjKd"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Panic.sol":{"keccak256":"0x29074fe5a74bb024c57b3570abf6c74d8bceed3438694d470fd0166a3ecd196a","urls":["bzz-raw://f4f8435ccbc56e384f4cc9ac9ff491cf30a82f2beac00e33ccc2cf8af3f77cc3","dweb:/ipfs/QmUKJXxTe6nn1qfgnX8xbnboNNAPUuEmJyGqMZCKNiFBgn"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/ReentrancyGuardTransient.sol":{"keccak256":"0x629828db7f6354641b2bc42f6f6742b07bed39959361f92b781224fd33cfb0c9","urls":["bzz-raw://a2654b69b5d9b42ad4c981875add283a06db8bd02e01c614d4f0d498860d0c58","dweb:/ipfs/QmWE3oD4Ti4UKrZTiA4cxAwprkFTpBYsLRrc62w5Lg16Q8"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol":{"keccak256":"0xfd29ed7a01e9ef109cc31542ca0f51ba3e793740570b69172ec3d8bfbb1643b4","urls":["bzz-raw://99379e0649be8106d2708a2bde73b5cdaba4505f1001f1586b53788bf971d097","dweb:/ipfs/QmV9cCnvFoVzV2cVDW4Zbs3JQ3ehxBcooQS52taVxR637S"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Strings.sol":{"keccak256":"0x686a21b9be2594ccfda3a855270dd8ebc4288b8a9ed84ecd4ef1bca2ea3fc46b","urls":["bzz-raw://7c0bbc37f4d1aaae086d73f13f41b8043a9ad5b07f30a2fd7b8a74ead99b1ef6","dweb:/ipfs/QmZpFyfCCFpbrkNtfHTn18qV7VvptPdoLN82Qu5XtMCci6"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/cryptography/ECDSA.sol":{"keccak256":"0xa548dd62e9e17616ae80a1e7ac7b1447ae377efc27fb9f7b4f4fbf5c0b0a1dfb","urls":["bzz-raw://d27e9ae3e67eb229444cd43d49db5be57c586155fd1d363b3b1f9bb1b7bb0087","dweb:/ipfs/QmT2GFnpXsTWBs8bkeVJtQ4VNX7f3igxwB77JBCr4mDXb3"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/cryptography/MessageHashUtils.sol":{"keccak256":"0x3f1998a2904792ff2a576827876638b4917573186537f878d30b23277a3b8d38","urls":["bzz-raw://a8dfb08ed617c9d874de901e44ac8af7af7b13e7c84000a1da3cdaf6004593e8","dweb:/ipfs/QmPX2hZAvCZJCQNSXcWqhxh3xp6UitwESrw3K2u3aYNqiu"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/Math.sol":{"keccak256":"0x2be34e47fc07baed68c4878618a6e13c13243753c3f656ca1b6e05287c5df4ee","urls":["bzz-raw://e0bc7f3ae934c76aae959cf061b9764a6dbb2313c4281944dde278cd418599da","dweb:/ipfs/QmYtYLrwC1nPJd86kVrQFQAGeS3XGmhXjCj25LQGfGkugi"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol":{"keccak256":"0x8cd59334ed58b8884cd1f775afc9400db702e674e5d6a7a438c655b9de788d7e","urls":["bzz-raw://99e62c7de7318f413b6352e3f2704ca23e7725ff144e43c8bd574d12dbf29047","dweb:/ipfs/QmSEXG2rBx1VxU2uFTWdiChjDvA4osEY2mesjmoVeVhHko"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol":{"keccak256":"0x5c8d4114f077f6803bb89b8b07bfa26dfbf8f2001708e4e7fdf1e8d9ddd42f44","urls":["bzz-raw://b66c74efa1f994e3ea467b4165da1575857b29d81bec36e94678fe494ce5c615","dweb:/ipfs/QmeXQFdzSJFmN8UdhxMqQwwUh1U2WEha5NoVLbSg3pCJc5"],"license":"MIT"},"src/IMirror.sol":{"keccak256":"0x78105f388516b83fcb68f7c006c5d9d685bc8ad7fadcdfa56c0919efa79a6373","urls":["bzz-raw://3a8ab1264895b4f5c8fd3aa18524016c4e88712a50e0a9935f421e13f3e09601","dweb:/ipfs/QmXyVe9k37fDFWmrfjYHisxmqnEynevYo88uVrnRAmYW6L"],"license":"UNLICENSED"},"src/IRouter.sol":{"keccak256":"0xb16e44a8917c8292c47779fdcb6a8fa23a394258370375d83774e324c159a8d2","urls":["bzz-raw://356609e9f3ed19904806ba235c5fd247171754eea0f479d826558a9a7908cf05","dweb:/ipfs/QmXPnJzKpk6AhqXjd2cKgReTvnZULcn2tdH2RiU8avLP7P"],"license":"UNLICENSED"},"src/IWrappedVara.sol":{"keccak256":"0xfc2f9955b1d8f74a98a087b490a03b86933c423eb58b840f1e3eb4cd58eac175","urls":["bzz-raw://5942f66657786636ddb832587404810bf65fc757e12ddaa07393a0b3f885840f","dweb:/ipfs/QmTEP15EF9zrA7bCj8cesNd8QyUPHM3XgtKJecCUjsA5Jf"],"license":"UNLICENSED"},"src/Router.sol":{"keccak256":"0xc381124067fb1c739e6d483bb7e6f41fcd1c3e5541c77664865511a7d4404005","urls":["bzz-raw://7a3270fd3be39e2342990866436cdff925f93b98d2be4bf0145ec23e4e506fd4","dweb:/ipfs/Qmcy8vdrxgHzuTLKv5ZrKfACfkvpNEHrzRvjH7kAzV7ZA4"],"license":"UNLICENSED"}},"version":1},"storageLayout":{"storage":[],"types":{}},"ast":{"absolutePath":"src/Router.sol","id":56402,"exportedSymbols":{"Clones":[41121],"ECDSA":[43387],"IERC20":[41906],"IMirror":[53656],"IRouter":[54023],"IWrappedVara":[54034],"MessageHashUtils":[43461],"OwnableUpgradeable":[39024],"ReentrancyGuardTransient":[42400],"Router":[56401],"StorageSlot":[42719]},"nodeType":"SourceUnit","src":"39:18470:82","nodes":[{"id":54675,"nodeType":"PragmaDirective","src":"39:24:82","nodes":[],"literals":["solidity","^","0.8",".26"]},{"id":54677,"nodeType":"ImportDirective","src":"65:74:82","nodes":[],"absolutePath":"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol","file":"@openzeppelin/contracts/utils/StorageSlot.sol","nameLocation":"-1:-1:-1","scope":56402,"sourceUnit":42720,"symbolAliases":[{"foreign":{"id":54676,"name":"StorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42719,"src":"73:11:82","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":54679,"nodeType":"ImportDirective","src":"140:101:82","nodes":[],"absolutePath":"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol","file":"@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol","nameLocation":"-1:-1:-1","scope":56402,"sourceUnit":39025,"symbolAliases":[{"foreign":{"id":54678,"name":"OwnableUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39024,"src":"148:18:82","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":54681,"nodeType":"ImportDirective","src":"242:64:82","nodes":[],"absolutePath":"lib/openzeppelin-contracts/contracts/proxy/Clones.sol","file":"@openzeppelin/contracts/proxy/Clones.sol","nameLocation":"-1:-1:-1","scope":56402,"sourceUnit":41122,"symbolAliases":[{"foreign":{"id":54680,"name":"Clones","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41121,"src":"250:6:82","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":54683,"nodeType":"ImportDirective","src":"307:75:82","nodes":[],"absolutePath":"lib/openzeppelin-contracts/contracts/utils/cryptography/ECDSA.sol","file":"@openzeppelin/contracts/utils/cryptography/ECDSA.sol","nameLocation":"-1:-1:-1","scope":56402,"sourceUnit":43388,"symbolAliases":[{"foreign":{"id":54682,"name":"ECDSA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43387,"src":"315:5:82","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":54685,"nodeType":"ImportDirective","src":"383:97:82","nodes":[],"absolutePath":"lib/openzeppelin-contracts/contracts/utils/cryptography/MessageHashUtils.sol","file":"@openzeppelin/contracts/utils/cryptography/MessageHashUtils.sol","nameLocation":"-1:-1:-1","scope":56402,"sourceUnit":43462,"symbolAliases":[{"foreign":{"id":54684,"name":"MessageHashUtils","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43461,"src":"391:16:82","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":54687,"nodeType":"ImportDirective","src":"481:100:82","nodes":[],"absolutePath":"lib/openzeppelin-contracts/contracts/utils/ReentrancyGuardTransient.sol","file":"@openzeppelin/contracts/utils/ReentrancyGuardTransient.sol","nameLocation":"-1:-1:-1","scope":56402,"sourceUnit":42401,"symbolAliases":[{"foreign":{"id":54686,"name":"ReentrancyGuardTransient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42400,"src":"489:24:82","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":54689,"nodeType":"ImportDirective","src":"582:38:82","nodes":[],"absolutePath":"src/IRouter.sol","file":"./IRouter.sol","nameLocation":"-1:-1:-1","scope":56402,"sourceUnit":54024,"symbolAliases":[{"foreign":{"id":54688,"name":"IRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54023,"src":"590:7:82","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":54691,"nodeType":"ImportDirective","src":"621:38:82","nodes":[],"absolutePath":"src/IMirror.sol","file":"./IMirror.sol","nameLocation":"-1:-1:-1","scope":56402,"sourceUnit":53657,"symbolAliases":[{"foreign":{"id":54690,"name":"IMirror","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53656,"src":"629:7:82","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":54693,"nodeType":"ImportDirective","src":"660:48:82","nodes":[],"absolutePath":"src/IWrappedVara.sol","file":"./IWrappedVara.sol","nameLocation":"-1:-1:-1","scope":56402,"sourceUnit":54035,"symbolAliases":[{"foreign":{"id":54692,"name":"IWrappedVara","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54034,"src":"668:12:82","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":54695,"nodeType":"ImportDirective","src":"709:70:82","nodes":[],"absolutePath":"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol","file":"@openzeppelin/contracts/token/ERC20/IERC20.sol","nameLocation":"-1:-1:-1","scope":56402,"sourceUnit":41907,"symbolAliases":[{"foreign":{"id":54694,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41906,"src":"717:6:82","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":56401,"nodeType":"ContractDefinition","src":"781:17727:82","nodes":[{"id":54704,"nodeType":"UsingForDirective","src":"860:24:82","nodes":[],"global":false,"libraryName":{"id":54702,"name":"ECDSA","nameLocations":["866:5:82"],"nodeType":"IdentifierPath","referencedDeclaration":43387,"src":"866:5:82"},"typeName":{"id":54703,"name":"bytes32","nodeType":"ElementaryTypeName","src":"876:7:82","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}},{"id":54707,"nodeType":"UsingForDirective","src":"889:35:82","nodes":[],"global":false,"libraryName":{"id":54705,"name":"MessageHashUtils","nameLocations":["895:16:82"],"nodeType":"IdentifierPath","referencedDeclaration":43461,"src":"895:16:82"},"typeName":{"id":54706,"name":"address","nodeType":"ElementaryTypeName","src":"916:7:82","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}},{"id":54710,"nodeType":"VariableDeclaration","src":"1032:106:82","nodes":[],"constant":true,"mutability":"constant","name":"SLOT_STORAGE","nameLocation":"1057:12:82","scope":56401,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":54708,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1032:7:82","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"hexValue":"307835633039636131623962383132376134666439663363333834616163353962363631343431653832306531373733333735336666356632653836653165303030","id":54709,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1072:66:82","typeDescriptions":{"typeIdentifier":"t_rational_41630078590300661333111585883568696735413380457407274925697692750148467286016_by_1","typeString":"int_const 4163...(69 digits omitted)...6016"},"value":"0x5c09ca1b9b8127a4fd9f3c384aac59b661441e820e17733753ff5f2e86e1e000"},"visibility":"private"},{"id":54718,"nodeType":"FunctionDefinition","src":"1198:53:82","nodes":[],"body":{"id":54717,"nodeType":"Block","src":"1212:39:82","nodes":[],"statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":54714,"name":"_disableInitializers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39246,"src":"1222:20:82","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":54715,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1222:22:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":54716,"nodeType":"ExpressionStatement","src":"1222:22:82"}]},"documentation":{"id":54711,"nodeType":"StructuredDocumentation","src":"1145:48:82","text":"@custom:oz-upgrades-unsafe-allow constructor"},"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":54712,"nodeType":"ParameterList","parameters":[],"src":"1209:2:82"},"returnParameters":{"id":54713,"nodeType":"ParameterList","parameters":[],"src":"1212:0:82"},"scope":56401,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":54800,"nodeType":"FunctionDefinition","src":"1257:728:82","nodes":[],"body":{"id":54799,"nodeType":"Block","src":"1459:526:82","nodes":[],"statements":[{"expression":{"arguments":[{"id":54735,"name":"initialOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54720,"src":"1484:12:82","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":54734,"name":"__Ownable_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38884,"src":"1469:14:82","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":54736,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1469:28:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":54737,"nodeType":"ExpressionStatement","src":"1469:28:82"},{"expression":{"arguments":[{"hexValue":"726f757465722e73746f726167652e526f757465725631","id":54739,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1523:25:82","typeDescriptions":{"typeIdentifier":"t_stringliteral_ebe34d7458caf9bba83b85ded6e7716871c7d6d7b9aa651344a78a4d0d1eb88b","typeString":"literal_string \"router.storage.RouterV1\""},"value":"router.storage.RouterV1"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_ebe34d7458caf9bba83b85ded6e7716871c7d6d7b9aa651344a78a4d0d1eb88b","typeString":"literal_string \"router.storage.RouterV1\""}],"id":54738,"name":"setStorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54941,"src":"1508:14:82","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory)"}},"id":54740,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1508:41:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":54741,"nodeType":"ExpressionStatement","src":"1508:41:82"},{"assignments":[54744],"declarations":[{"constant":false,"id":54744,"mutability":"mutable","name":"router","nameLocation":"1575:6:82","nodeType":"VariableDeclaration","scope":54799,"src":"1559:22:82","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53739_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":54743,"nodeType":"UserDefinedTypeName","pathNode":{"id":54742,"name":"Storage","nameLocations":["1559:7:82"],"nodeType":"IdentifierPath","referencedDeclaration":53739,"src":"1559:7:82"},"referencedDeclaration":53739,"src":"1559:7:82","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53739_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"}],"id":54747,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":54745,"name":"_getStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56400,"src":"1584:11:82","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$53739_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":54746,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1584:13:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53739_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"1559:38:82"},{"expression":{"id":54757,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":54748,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54744,"src":"1608:6:82","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53739_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":54750,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"1615:16:82","memberName":"genesisBlockHash","nodeType":"MemberAccess","referencedDeclaration":53704,"src":"1608:23:82","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":54755,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":54752,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"1644:5:82","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":54753,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1650:6:82","memberName":"number","nodeType":"MemberAccess","src":"1644:12:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":54754,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1659:1:82","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"1644:16:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":54751,"name":"blockhash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-5,"src":"1634:9:82","typeDescriptions":{"typeIdentifier":"t_function_blockhash_view$_t_uint256_$returns$_t_bytes32_$","typeString":"function (uint256) view returns (bytes32)"}},"id":54756,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1634:27:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"1608:53:82","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":54758,"nodeType":"ExpressionStatement","src":"1608:53:82"},{"expression":{"id":54763,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":54759,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54744,"src":"1671:6:82","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53739_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":54761,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"1678:6:82","memberName":"mirror","nodeType":"MemberAccess","referencedDeclaration":53706,"src":"1671:13:82","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":54762,"name":"_mirror","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54722,"src":"1687:7:82","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1671:23:82","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":54764,"nodeType":"ExpressionStatement","src":"1671:23:82"},{"expression":{"id":54769,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":54765,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54744,"src":"1704:6:82","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53739_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":54767,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"1711:11:82","memberName":"mirrorProxy","nodeType":"MemberAccess","referencedDeclaration":53708,"src":"1704:18:82","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":54768,"name":"_mirrorProxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54724,"src":"1725:12:82","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1704:33:82","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":54770,"nodeType":"ExpressionStatement","src":"1704:33:82"},{"expression":{"id":54775,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":54771,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54744,"src":"1747:6:82","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53739_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":54773,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"1754:11:82","memberName":"wrappedVara","nodeType":"MemberAccess","referencedDeclaration":53710,"src":"1747:18:82","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":54774,"name":"_wrappedVara","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54726,"src":"1768:12:82","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1747:33:82","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":54776,"nodeType":"ExpressionStatement","src":"1747:33:82"},{"expression":{"id":54781,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":54777,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54744,"src":"1790:6:82","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53739_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":54779,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"1797:26:82","memberName":"signingThresholdPercentage","nodeType":"MemberAccess","referencedDeclaration":53714,"src":"1790:33:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"36363636","id":54780,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1826:4:82","typeDescriptions":{"typeIdentifier":"t_rational_6666_by_1","typeString":"int_const 6666"},"value":"6666"},"src":"1790:40:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":54782,"nodeType":"ExpressionStatement","src":"1790:40:82"},{"expression":{"id":54787,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":54783,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54744,"src":"1868:6:82","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53739_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":54785,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"1875:10:82","memberName":"baseWeight","nodeType":"MemberAccess","referencedDeclaration":53716,"src":"1868:17:82","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"325f3530305f3030305f303030","id":54786,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1888:13:82","typeDescriptions":{"typeIdentifier":"t_rational_2500000000_by_1","typeString":"int_const 2500000000"},"value":"2_500_000_000"},"src":"1868:33:82","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"id":54788,"nodeType":"ExpressionStatement","src":"1868:33:82"},{"expression":{"id":54793,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":54789,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54744,"src":"1911:6:82","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53739_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":54791,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"1918:14:82","memberName":"valuePerWeight","nodeType":"MemberAccess","referencedDeclaration":53718,"src":"1911:21:82","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"3130","id":54792,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1935:2:82","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"src":"1911:26:82","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"id":54794,"nodeType":"ExpressionStatement","src":"1911:26:82"},{"expression":{"arguments":[{"id":54796,"name":"_validatorsKeys","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54729,"src":"1962:15:82","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}],"id":54795,"name":"_setValidators","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56387,"src":"1947:14:82","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_array$_t_address_$dyn_memory_ptr_$returns$__$","typeString":"function (address[] memory)"}},"id":54797,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1947:31:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":54798,"nodeType":"ExpressionStatement","src":"1947:31:82"}]},"functionSelector":"f8453e7c","implemented":true,"kind":"function","modifiers":[{"id":54732,"kind":"modifierInvocation","modifierName":{"id":54731,"name":"initializer","nameLocations":["1447:11:82"],"nodeType":"IdentifierPath","referencedDeclaration":39132,"src":"1447:11:82"},"nodeType":"ModifierInvocation","src":"1447:11:82"}],"name":"initialize","nameLocation":"1266:10:82","parameters":{"id":54730,"nodeType":"ParameterList","parameters":[{"constant":false,"id":54720,"mutability":"mutable","name":"initialOwner","nameLocation":"1294:12:82","nodeType":"VariableDeclaration","scope":54800,"src":"1286:20:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":54719,"name":"address","nodeType":"ElementaryTypeName","src":"1286:7:82","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":54722,"mutability":"mutable","name":"_mirror","nameLocation":"1324:7:82","nodeType":"VariableDeclaration","scope":54800,"src":"1316:15:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":54721,"name":"address","nodeType":"ElementaryTypeName","src":"1316:7:82","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":54724,"mutability":"mutable","name":"_mirrorProxy","nameLocation":"1349:12:82","nodeType":"VariableDeclaration","scope":54800,"src":"1341:20:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":54723,"name":"address","nodeType":"ElementaryTypeName","src":"1341:7:82","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":54726,"mutability":"mutable","name":"_wrappedVara","nameLocation":"1379:12:82","nodeType":"VariableDeclaration","scope":54800,"src":"1371:20:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":54725,"name":"address","nodeType":"ElementaryTypeName","src":"1371:7:82","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":54729,"mutability":"mutable","name":"_validatorsKeys","nameLocation":"1418:15:82","nodeType":"VariableDeclaration","scope":54800,"src":"1401:32:82","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":54727,"name":"address","nodeType":"ElementaryTypeName","src":"1401:7:82","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":54728,"nodeType":"ArrayTypeName","src":"1401:9:82","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"src":"1276:163:82"},"returnParameters":{"id":54733,"nodeType":"ParameterList","parameters":[],"src":"1459:0:82"},"scope":56401,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":54881,"nodeType":"FunctionDefinition","src":"1991:662:82","nodes":[],"body":{"id":54880,"nodeType":"Block","src":"2049:604:82","nodes":[],"statements":[{"assignments":[54810],"declarations":[{"constant":false,"id":54810,"mutability":"mutable","name":"oldRouter","nameLocation":"2075:9:82","nodeType":"VariableDeclaration","scope":54880,"src":"2059:25:82","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53739_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":54809,"nodeType":"UserDefinedTypeName","pathNode":{"id":54808,"name":"Storage","nameLocations":["2059:7:82"],"nodeType":"IdentifierPath","referencedDeclaration":53739,"src":"2059:7:82"},"referencedDeclaration":53739,"src":"2059:7:82","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53739_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"}],"id":54813,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":54811,"name":"_getStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56400,"src":"2087:11:82","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$53739_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":54812,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2087:13:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53739_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"2059:41:82"},{"assignments":[54815],"declarations":[{"constant":false,"id":54815,"mutability":"mutable","name":"_mirror","nameLocation":"2119:7:82","nodeType":"VariableDeclaration","scope":54880,"src":"2111:15:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":54814,"name":"address","nodeType":"ElementaryTypeName","src":"2111:7:82","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":54818,"initialValue":{"expression":{"id":54816,"name":"oldRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54810,"src":"2129:9:82","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53739_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":54817,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2139:6:82","memberName":"mirror","nodeType":"MemberAccess","referencedDeclaration":53706,"src":"2129:16:82","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"2111:34:82"},{"assignments":[54820],"declarations":[{"constant":false,"id":54820,"mutability":"mutable","name":"_mirrorProxy","nameLocation":"2163:12:82","nodeType":"VariableDeclaration","scope":54880,"src":"2155:20:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":54819,"name":"address","nodeType":"ElementaryTypeName","src":"2155:7:82","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":54823,"initialValue":{"expression":{"id":54821,"name":"oldRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54810,"src":"2178:9:82","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53739_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":54822,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2188:11:82","memberName":"mirrorProxy","nodeType":"MemberAccess","referencedDeclaration":53708,"src":"2178:21:82","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"2155:44:82"},{"assignments":[54825],"declarations":[{"constant":false,"id":54825,"mutability":"mutable","name":"_wrappedVara","nameLocation":"2217:12:82","nodeType":"VariableDeclaration","scope":54880,"src":"2209:20:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":54824,"name":"address","nodeType":"ElementaryTypeName","src":"2209:7:82","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":54828,"initialValue":{"expression":{"id":54826,"name":"oldRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54810,"src":"2232:9:82","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53739_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":54827,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2242:11:82","memberName":"wrappedVara","nodeType":"MemberAccess","referencedDeclaration":53710,"src":"2232:21:82","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"2209:44:82"},{"assignments":[54833],"declarations":[{"constant":false,"id":54833,"mutability":"mutable","name":"_validatorsKeys","nameLocation":"2280:15:82","nodeType":"VariableDeclaration","scope":54880,"src":"2263:32:82","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":54831,"name":"address","nodeType":"ElementaryTypeName","src":"2263:7:82","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":54832,"nodeType":"ArrayTypeName","src":"2263:9:82","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"id":54836,"initialValue":{"expression":{"id":54834,"name":"oldRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54810,"src":"2298:9:82","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53739_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":54835,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2308:14:82","memberName":"validatorsKeys","nodeType":"MemberAccess","referencedDeclaration":53725,"src":"2298:24:82","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"nodeType":"VariableDeclarationStatement","src":"2263:59:82"},{"expression":{"arguments":[{"hexValue":"726f757465722e73746f726167652e526f757465725632","id":54838,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2348:25:82","typeDescriptions":{"typeIdentifier":"t_stringliteral_07554b5a957f065078e703cffe06326f3995e4f57feb37a649312406c8f4f44a","typeString":"literal_string \"router.storage.RouterV2\""},"value":"router.storage.RouterV2"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_07554b5a957f065078e703cffe06326f3995e4f57feb37a649312406c8f4f44a","typeString":"literal_string \"router.storage.RouterV2\""}],"id":54837,"name":"setStorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54941,"src":"2333:14:82","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory)"}},"id":54839,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2333:41:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":54840,"nodeType":"ExpressionStatement","src":"2333:41:82"},{"assignments":[54843],"declarations":[{"constant":false,"id":54843,"mutability":"mutable","name":"router","nameLocation":"2400:6:82","nodeType":"VariableDeclaration","scope":54880,"src":"2384:22:82","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53739_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":54842,"nodeType":"UserDefinedTypeName","pathNode":{"id":54841,"name":"Storage","nameLocations":["2384:7:82"],"nodeType":"IdentifierPath","referencedDeclaration":53739,"src":"2384:7:82"},"referencedDeclaration":53739,"src":"2384:7:82","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53739_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"}],"id":54846,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":54844,"name":"_getStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56400,"src":"2409:11:82","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$53739_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":54845,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2409:13:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53739_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"2384:38:82"},{"expression":{"id":54856,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":54847,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54843,"src":"2433:6:82","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53739_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":54849,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"2440:16:82","memberName":"genesisBlockHash","nodeType":"MemberAccess","referencedDeclaration":53704,"src":"2433:23:82","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":54854,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":54851,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"2469:5:82","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":54852,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2475:6:82","memberName":"number","nodeType":"MemberAccess","src":"2469:12:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":54853,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2484:1:82","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"2469:16:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":54850,"name":"blockhash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-5,"src":"2459:9:82","typeDescriptions":{"typeIdentifier":"t_function_blockhash_view$_t_uint256_$returns$_t_bytes32_$","typeString":"function (uint256) view returns (bytes32)"}},"id":54855,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2459:27:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"2433:53:82","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":54857,"nodeType":"ExpressionStatement","src":"2433:53:82"},{"expression":{"id":54862,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":54858,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54843,"src":"2496:6:82","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53739_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":54860,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"2503:6:82","memberName":"mirror","nodeType":"MemberAccess","referencedDeclaration":53706,"src":"2496:13:82","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":54861,"name":"_mirror","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54815,"src":"2512:7:82","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2496:23:82","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":54863,"nodeType":"ExpressionStatement","src":"2496:23:82"},{"expression":{"id":54868,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":54864,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54843,"src":"2529:6:82","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53739_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":54866,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"2536:11:82","memberName":"mirrorProxy","nodeType":"MemberAccess","referencedDeclaration":53708,"src":"2529:18:82","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":54867,"name":"_mirrorProxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54820,"src":"2550:12:82","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2529:33:82","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":54869,"nodeType":"ExpressionStatement","src":"2529:33:82"},{"expression":{"id":54874,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":54870,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54843,"src":"2572:6:82","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53739_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":54872,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"2579:11:82","memberName":"wrappedVara","nodeType":"MemberAccess","referencedDeclaration":53710,"src":"2572:18:82","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":54873,"name":"_wrappedVara","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54825,"src":"2593:12:82","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2572:33:82","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":54875,"nodeType":"ExpressionStatement","src":"2572:33:82"},{"expression":{"arguments":[{"id":54877,"name":"_validatorsKeys","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54833,"src":"2630:15:82","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}],"id":54876,"name":"_setValidators","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56387,"src":"2615:14:82","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_array$_t_address_$dyn_memory_ptr_$returns$__$","typeString":"function (address[] memory)"}},"id":54878,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2615:31:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":54879,"nodeType":"ExpressionStatement","src":"2615:31:82"}]},"functionSelector":"6c2eb350","implemented":true,"kind":"function","modifiers":[{"id":54803,"kind":"modifierInvocation","modifierName":{"id":54802,"name":"onlyOwner","nameLocations":["2022:9:82"],"nodeType":"IdentifierPath","referencedDeclaration":38919,"src":"2022:9:82"},"nodeType":"ModifierInvocation","src":"2022:9:82"},{"arguments":[{"hexValue":"32","id":54805,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2046:1:82","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"}],"id":54806,"kind":"modifierInvocation","modifierName":{"id":54804,"name":"reinitializer","nameLocations":["2032:13:82"],"nodeType":"IdentifierPath","referencedDeclaration":39179,"src":"2032:13:82"},"nodeType":"ModifierInvocation","src":"2032:16:82"}],"name":"reinitialize","nameLocation":"2000:12:82","parameters":{"id":54801,"nodeType":"ParameterList","parameters":[],"src":"2012:2:82"},"returnParameters":{"id":54807,"nodeType":"ParameterList","parameters":[],"src":"2049:0:82"},"scope":56401,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":54893,"nodeType":"FunctionDefinition","src":"2692:126:82","nodes":[],"body":{"id":54892,"nodeType":"Block","src":"2748:70:82","nodes":[],"statements":[{"expression":{"expression":{"arguments":[{"id":54888,"name":"SLOT_STORAGE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54710,"src":"2792:12:82","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":54886,"name":"StorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42719,"src":"2765:11:82","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_StorageSlot_$42719_$","typeString":"type(library StorageSlot)"}},"id":54887,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2777:14:82","memberName":"getBytes32Slot","nodeType":"MemberAccess","referencedDeclaration":42457,"src":"2765:26:82","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_struct$_Bytes32Slot_$42412_storage_ptr_$","typeString":"function (bytes32) pure returns (struct StorageSlot.Bytes32Slot storage pointer)"}},"id":54889,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2765:40:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Slot_$42412_storage_ptr","typeString":"struct StorageSlot.Bytes32Slot storage pointer"}},"id":54890,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2806:5:82","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":42411,"src":"2765:46:82","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":54885,"id":54891,"nodeType":"Return","src":"2758:53:82"}]},"baseFunctions":[53847],"functionSelector":"96708226","implemented":true,"kind":"function","modifiers":[],"name":"getStorageSlot","nameLocation":"2701:14:82","parameters":{"id":54882,"nodeType":"ParameterList","parameters":[],"src":"2715:2:82"},"returnParameters":{"id":54885,"nodeType":"ParameterList","parameters":[{"constant":false,"id":54884,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":54893,"src":"2739:7:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":54883,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2739:7:82","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2738:9:82"},"scope":56401,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":54941,"nodeType":"FunctionDefinition","src":"2824:287:82","nodes":[],"body":{"id":54940,"nodeType":"Block","src":"2890:221:82","nodes":[],"statements":[{"assignments":[54901],"declarations":[{"constant":false,"id":54901,"mutability":"mutable","name":"slot","nameLocation":"2908:4:82","nodeType":"VariableDeclaration","scope":54940,"src":"2900:12:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":54900,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2900:7:82","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":54927,"initialValue":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":54926,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":54915,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"arguments":[{"arguments":[{"id":54910,"name":"namespace","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54895,"src":"2960:9:82","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":54909,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2954:5:82","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":54908,"name":"bytes","nodeType":"ElementaryTypeName","src":"2954:5:82","typeDescriptions":{}}},"id":54911,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2954:16:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":54907,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"2944:9:82","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":54912,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2944:27:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":54906,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2936:7:82","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":54905,"name":"uint256","nodeType":"ElementaryTypeName","src":"2936:7:82","typeDescriptions":{}}},"id":54913,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2936:36:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":54914,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2975:1:82","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"2936:40:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":54903,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"2925:3:82","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":54904,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2929:6:82","memberName":"encode","nodeType":"MemberAccess","src":"2925:10:82","typeDescriptions":{"typeIdentifier":"t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":54916,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2925:52:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":54902,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"2915:9:82","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":54917,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2915:63:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"id":54925,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"~","prefix":true,"src":"2981:23:82","subExpression":{"arguments":[{"arguments":[{"hexValue":"30786666","id":54922,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2998:4:82","typeDescriptions":{"typeIdentifier":"t_rational_255_by_1","typeString":"int_const 255"},"value":"0xff"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_255_by_1","typeString":"int_const 255"}],"id":54921,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2990:7:82","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":54920,"name":"uint256","nodeType":"ElementaryTypeName","src":"2990:7:82","typeDescriptions":{}}},"id":54923,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2990:13:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":54919,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2982:7:82","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":54918,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2982:7:82","typeDescriptions":{}}},"id":54924,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2982:22:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"2915:89:82","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"2900:104:82"},{"expression":{"id":54935,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"arguments":[{"id":54931,"name":"SLOT_STORAGE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54710,"src":"3042:12:82","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":54928,"name":"StorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42719,"src":"3015:11:82","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_StorageSlot_$42719_$","typeString":"type(library StorageSlot)"}},"id":54930,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3027:14:82","memberName":"getBytes32Slot","nodeType":"MemberAccess","referencedDeclaration":42457,"src":"3015:26:82","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_struct$_Bytes32Slot_$42412_storage_ptr_$","typeString":"function (bytes32) pure returns (struct StorageSlot.Bytes32Slot storage pointer)"}},"id":54932,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3015:40:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Slot_$42412_storage_ptr","typeString":"struct StorageSlot.Bytes32Slot storage pointer"}},"id":54933,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"3056:5:82","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":42411,"src":"3015:46:82","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":54934,"name":"slot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54901,"src":"3064:4:82","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"3015:53:82","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":54936,"nodeType":"ExpressionStatement","src":"3015:53:82"},{"eventCall":{"arguments":[],"expression":{"argumentTypes":[],"id":54937,"name":"StorageSlotChanged","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53832,"src":"3084:18:82","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$__$returns$__$","typeString":"function ()"}},"id":54938,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3084:20:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":54939,"nodeType":"EmitStatement","src":"3079:25:82"}]},"baseFunctions":[53852],"functionSelector":"5686cad5","implemented":true,"kind":"function","modifiers":[{"id":54898,"kind":"modifierInvocation","modifierName":{"id":54897,"name":"onlyOwner","nameLocations":["2880:9:82"],"nodeType":"IdentifierPath","referencedDeclaration":38919,"src":"2880:9:82"},"nodeType":"ModifierInvocation","src":"2880:9:82"}],"name":"setStorageSlot","nameLocation":"2833:14:82","parameters":{"id":54896,"nodeType":"ParameterList","parameters":[{"constant":false,"id":54895,"mutability":"mutable","name":"namespace","nameLocation":"2862:9:82","nodeType":"VariableDeclaration","scope":54941,"src":"2848:23:82","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":54894,"name":"string","nodeType":"ElementaryTypeName","src":"2848:6:82","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"2847:25:82"},"returnParameters":{"id":54899,"nodeType":"ParameterList","parameters":[],"src":"2890:0:82"},"scope":56401,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":54956,"nodeType":"FunctionDefinition","src":"3117:153:82","nodes":[],"body":{"id":54955,"nodeType":"Block","src":"3175:95:82","nodes":[],"statements":[{"assignments":[54948],"declarations":[{"constant":false,"id":54948,"mutability":"mutable","name":"router","nameLocation":"3201:6:82","nodeType":"VariableDeclaration","scope":54955,"src":"3185:22:82","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53739_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":54947,"nodeType":"UserDefinedTypeName","pathNode":{"id":54946,"name":"Storage","nameLocations":["3185:7:82"],"nodeType":"IdentifierPath","referencedDeclaration":53739,"src":"3185:7:82"},"referencedDeclaration":53739,"src":"3185:7:82","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53739_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"}],"id":54951,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":54949,"name":"_getStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56400,"src":"3210:11:82","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$53739_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":54950,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3210:13:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53739_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"3185:38:82"},{"expression":{"expression":{"id":54952,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54948,"src":"3240:6:82","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53739_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":54953,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3247:16:82","memberName":"genesisBlockHash","nodeType":"MemberAccess","referencedDeclaration":53704,"src":"3240:23:82","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":54945,"id":54954,"nodeType":"Return","src":"3233:30:82"}]},"baseFunctions":[53857],"functionSelector":"28e24b3d","implemented":true,"kind":"function","modifiers":[],"name":"genesisBlockHash","nameLocation":"3126:16:82","parameters":{"id":54942,"nodeType":"ParameterList","parameters":[],"src":"3142:2:82"},"returnParameters":{"id":54945,"nodeType":"ParameterList","parameters":[{"constant":false,"id":54944,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":54956,"src":"3166:7:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":54943,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3166:7:82","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"3165:9:82"},"scope":56401,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":54971,"nodeType":"FunctionDefinition","src":"3276:167:82","nodes":[],"body":{"id":54970,"nodeType":"Block","src":"3341:102:82","nodes":[],"statements":[{"assignments":[54963],"declarations":[{"constant":false,"id":54963,"mutability":"mutable","name":"router","nameLocation":"3367:6:82","nodeType":"VariableDeclaration","scope":54970,"src":"3351:22:82","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53739_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":54962,"nodeType":"UserDefinedTypeName","pathNode":{"id":54961,"name":"Storage","nameLocations":["3351:7:82"],"nodeType":"IdentifierPath","referencedDeclaration":53739,"src":"3351:7:82"},"referencedDeclaration":53739,"src":"3351:7:82","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53739_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"}],"id":54966,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":54964,"name":"_getStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56400,"src":"3376:11:82","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$53739_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":54965,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3376:13:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53739_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"3351:38:82"},{"expression":{"expression":{"id":54967,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54963,"src":"3406:6:82","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53739_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":54968,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3413:23:82","memberName":"lastBlockCommitmentHash","nodeType":"MemberAccess","referencedDeclaration":53712,"src":"3406:30:82","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":54960,"id":54969,"nodeType":"Return","src":"3399:37:82"}]},"baseFunctions":[53862],"functionSelector":"2dacfb69","implemented":true,"kind":"function","modifiers":[],"name":"lastBlockCommitmentHash","nameLocation":"3285:23:82","parameters":{"id":54957,"nodeType":"ParameterList","parameters":[],"src":"3308:2:82"},"returnParameters":{"id":54960,"nodeType":"ParameterList","parameters":[{"constant":false,"id":54959,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":54971,"src":"3332:7:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":54958,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3332:7:82","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"3331:9:82"},"scope":56401,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":54986,"nodeType":"FunctionDefinition","src":"3449:143:82","nodes":[],"body":{"id":54985,"nodeType":"Block","src":"3502:90:82","nodes":[],"statements":[{"assignments":[54978],"declarations":[{"constant":false,"id":54978,"mutability":"mutable","name":"router","nameLocation":"3528:6:82","nodeType":"VariableDeclaration","scope":54985,"src":"3512:22:82","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53739_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":54977,"nodeType":"UserDefinedTypeName","pathNode":{"id":54976,"name":"Storage","nameLocations":["3512:7:82"],"nodeType":"IdentifierPath","referencedDeclaration":53739,"src":"3512:7:82"},"referencedDeclaration":53739,"src":"3512:7:82","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53739_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"}],"id":54981,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":54979,"name":"_getStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56400,"src":"3537:11:82","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$53739_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":54980,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3537:13:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53739_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"3512:38:82"},{"expression":{"expression":{"id":54982,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54978,"src":"3567:6:82","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53739_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":54983,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3574:11:82","memberName":"wrappedVara","nodeType":"MemberAccess","referencedDeclaration":53710,"src":"3567:18:82","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":54975,"id":54984,"nodeType":"Return","src":"3560:25:82"}]},"baseFunctions":[53867],"functionSelector":"88f50cf0","implemented":true,"kind":"function","modifiers":[],"name":"wrappedVara","nameLocation":"3458:11:82","parameters":{"id":54972,"nodeType":"ParameterList","parameters":[],"src":"3469:2:82"},"returnParameters":{"id":54975,"nodeType":"ParameterList","parameters":[{"constant":false,"id":54974,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":54986,"src":"3493:7:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":54973,"name":"address","nodeType":"ElementaryTypeName","src":"3493:7:82","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3492:9:82"},"scope":56401,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":55001,"nodeType":"FunctionDefinition","src":"3598:143:82","nodes":[],"body":{"id":55000,"nodeType":"Block","src":"3651:90:82","nodes":[],"statements":[{"assignments":[54993],"declarations":[{"constant":false,"id":54993,"mutability":"mutable","name":"router","nameLocation":"3677:6:82","nodeType":"VariableDeclaration","scope":55000,"src":"3661:22:82","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53739_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":54992,"nodeType":"UserDefinedTypeName","pathNode":{"id":54991,"name":"Storage","nameLocations":["3661:7:82"],"nodeType":"IdentifierPath","referencedDeclaration":53739,"src":"3661:7:82"},"referencedDeclaration":53739,"src":"3661:7:82","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53739_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"}],"id":54996,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":54994,"name":"_getStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56400,"src":"3686:11:82","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$53739_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":54995,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3686:13:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53739_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"3661:38:82"},{"expression":{"expression":{"id":54997,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54993,"src":"3716:6:82","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53739_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":54998,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3723:11:82","memberName":"mirrorProxy","nodeType":"MemberAccess","referencedDeclaration":53708,"src":"3716:18:82","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":54990,"id":54999,"nodeType":"Return","src":"3709:25:82"}]},"baseFunctions":[53872],"functionSelector":"78ee5dec","implemented":true,"kind":"function","modifiers":[],"name":"mirrorProxy","nameLocation":"3607:11:82","parameters":{"id":54987,"nodeType":"ParameterList","parameters":[],"src":"3618:2:82"},"returnParameters":{"id":54990,"nodeType":"ParameterList","parameters":[{"constant":false,"id":54989,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":55001,"src":"3642:7:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":54988,"name":"address","nodeType":"ElementaryTypeName","src":"3642:7:82","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3641:9:82"},"scope":56401,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":55016,"nodeType":"FunctionDefinition","src":"3747:133:82","nodes":[],"body":{"id":55015,"nodeType":"Block","src":"3795:85:82","nodes":[],"statements":[{"assignments":[55008],"declarations":[{"constant":false,"id":55008,"mutability":"mutable","name":"router","nameLocation":"3821:6:82","nodeType":"VariableDeclaration","scope":55015,"src":"3805:22:82","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53739_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":55007,"nodeType":"UserDefinedTypeName","pathNode":{"id":55006,"name":"Storage","nameLocations":["3805:7:82"],"nodeType":"IdentifierPath","referencedDeclaration":53739,"src":"3805:7:82"},"referencedDeclaration":53739,"src":"3805:7:82","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53739_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"}],"id":55011,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":55009,"name":"_getStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56400,"src":"3830:11:82","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$53739_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":55010,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3830:13:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53739_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"3805:38:82"},{"expression":{"expression":{"id":55012,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55008,"src":"3860:6:82","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53739_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":55013,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3867:6:82","memberName":"mirror","nodeType":"MemberAccess","referencedDeclaration":53706,"src":"3860:13:82","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":55005,"id":55014,"nodeType":"Return","src":"3853:20:82"}]},"baseFunctions":[53877],"functionSelector":"444d9172","implemented":true,"kind":"function","modifiers":[],"name":"mirror","nameLocation":"3756:6:82","parameters":{"id":55002,"nodeType":"ParameterList","parameters":[],"src":"3762:2:82"},"returnParameters":{"id":55005,"nodeType":"ParameterList","parameters":[{"constant":false,"id":55004,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":55016,"src":"3786:7:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":55003,"name":"address","nodeType":"ElementaryTypeName","src":"3786:7:82","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3785:9:82"},"scope":56401,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":55036,"nodeType":"FunctionDefinition","src":"3886:143:82","nodes":[],"body":{"id":55035,"nodeType":"Block","src":"3941:88:82","nodes":[],"statements":[{"assignments":[55025],"declarations":[{"constant":false,"id":55025,"mutability":"mutable","name":"router","nameLocation":"3967:6:82","nodeType":"VariableDeclaration","scope":55035,"src":"3951:22:82","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53739_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":55024,"nodeType":"UserDefinedTypeName","pathNode":{"id":55023,"name":"Storage","nameLocations":["3951:7:82"],"nodeType":"IdentifierPath","referencedDeclaration":53739,"src":"3951:7:82"},"referencedDeclaration":53739,"src":"3951:7:82","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53739_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"}],"id":55028,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":55026,"name":"_getStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56400,"src":"3976:11:82","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$53739_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":55027,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3976:13:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53739_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"3951:38:82"},{"expression":{"id":55033,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":55029,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55025,"src":"3999:6:82","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53739_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":55031,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"4006:6:82","memberName":"mirror","nodeType":"MemberAccess","referencedDeclaration":53706,"src":"3999:13:82","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":55032,"name":"_mirror","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55018,"src":"4015:7:82","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3999:23:82","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":55034,"nodeType":"ExpressionStatement","src":"3999:23:82"}]},"baseFunctions":[53882],"functionSelector":"3d43b418","implemented":true,"kind":"function","modifiers":[{"id":55021,"kind":"modifierInvocation","modifierName":{"id":55020,"name":"onlyOwner","nameLocations":["3931:9:82"],"nodeType":"IdentifierPath","referencedDeclaration":38919,"src":"3931:9:82"},"nodeType":"ModifierInvocation","src":"3931:9:82"}],"name":"setMirror","nameLocation":"3895:9:82","parameters":{"id":55019,"nodeType":"ParameterList","parameters":[{"constant":false,"id":55018,"mutability":"mutable","name":"_mirror","nameLocation":"3913:7:82","nodeType":"VariableDeclaration","scope":55036,"src":"3905:15:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":55017,"name":"address","nodeType":"ElementaryTypeName","src":"3905:7:82","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3904:17:82"},"returnParameters":{"id":55022,"nodeType":"ParameterList","parameters":[],"src":"3941:0:82"},"scope":56401,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":55051,"nodeType":"FunctionDefinition","src":"4085:159:82","nodes":[],"body":{"id":55050,"nodeType":"Block","src":"4146:98:82","nodes":[],"statements":[{"assignments":[55043],"declarations":[{"constant":false,"id":55043,"mutability":"mutable","name":"router","nameLocation":"4172:6:82","nodeType":"VariableDeclaration","scope":55050,"src":"4156:22:82","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53739_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":55042,"nodeType":"UserDefinedTypeName","pathNode":{"id":55041,"name":"Storage","nameLocations":["4156:7:82"],"nodeType":"IdentifierPath","referencedDeclaration":53739,"src":"4156:7:82"},"referencedDeclaration":53739,"src":"4156:7:82","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53739_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"}],"id":55046,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":55044,"name":"_getStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56400,"src":"4181:11:82","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$53739_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":55045,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4181:13:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53739_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"4156:38:82"},{"expression":{"expression":{"id":55047,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55043,"src":"4211:6:82","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53739_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":55048,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4218:19:82","memberName":"validatedCodesCount","nodeType":"MemberAccess","referencedDeclaration":53732,"src":"4211:26:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":55040,"id":55049,"nodeType":"Return","src":"4204:33:82"}]},"baseFunctions":[53887],"functionSelector":"007a32e7","implemented":true,"kind":"function","modifiers":[],"name":"validatedCodesCount","nameLocation":"4094:19:82","parameters":{"id":55037,"nodeType":"ParameterList","parameters":[],"src":"4113:2:82"},"returnParameters":{"id":55040,"nodeType":"ParameterList","parameters":[{"constant":false,"id":55039,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":55051,"src":"4137:7:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":55038,"name":"uint256","nodeType":"ElementaryTypeName","src":"4137:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4136:9:82"},"scope":56401,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":55071,"nodeType":"FunctionDefinition","src":"4250:159:82","nodes":[],"body":{"id":55070,"nodeType":"Block","src":"4317:92:82","nodes":[],"statements":[{"assignments":[55061],"declarations":[{"constant":false,"id":55061,"mutability":"mutable","name":"router","nameLocation":"4343:6:82","nodeType":"VariableDeclaration","scope":55070,"src":"4327:22:82","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53739_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":55060,"nodeType":"UserDefinedTypeName","pathNode":{"id":55059,"name":"Storage","nameLocations":["4327:7:82"],"nodeType":"IdentifierPath","referencedDeclaration":53739,"src":"4327:7:82"},"referencedDeclaration":53739,"src":"4327:7:82","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53739_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"}],"id":55064,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":55062,"name":"_getStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56400,"src":"4352:11:82","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$53739_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":55063,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4352:13:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53739_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"4327:38:82"},{"expression":{"baseExpression":{"expression":{"id":55065,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55061,"src":"4382:6:82","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53739_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":55066,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4389:5:82","memberName":"codes","nodeType":"MemberAccess","referencedDeclaration":53730,"src":"4382:12:82","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_enum$_CodeState_$53743_$","typeString":"mapping(bytes32 => enum IRouter.CodeState)"}},"id":55068,"indexExpression":{"id":55067,"name":"codeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55053,"src":"4395:6:82","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4382:20:82","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$53743","typeString":"enum IRouter.CodeState"}},"functionReturnParameters":55058,"id":55069,"nodeType":"Return","src":"4375:27:82"}]},"baseFunctions":[53895],"functionSelector":"c13911e8","implemented":true,"kind":"function","modifiers":[],"name":"codeState","nameLocation":"4259:9:82","parameters":{"id":55054,"nodeType":"ParameterList","parameters":[{"constant":false,"id":55053,"mutability":"mutable","name":"codeId","nameLocation":"4277:6:82","nodeType":"VariableDeclaration","scope":55071,"src":"4269:14:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":55052,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4269:7:82","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"4268:16:82"},"returnParameters":{"id":55058,"nodeType":"ParameterList","parameters":[{"constant":false,"id":55057,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":55071,"src":"4306:9:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$53743","typeString":"enum IRouter.CodeState"},"typeName":{"id":55056,"nodeType":"UserDefinedTypeName","pathNode":{"id":55055,"name":"CodeState","nameLocations":["4306:9:82"],"nodeType":"IdentifierPath","referencedDeclaration":53743,"src":"4306:9:82"},"referencedDeclaration":53743,"src":"4306:9:82","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$53743","typeString":"enum IRouter.CodeState"}},"visibility":"internal"}],"src":"4305:11:82"},"scope":56401,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":55086,"nodeType":"FunctionDefinition","src":"4415:147:82","nodes":[],"body":{"id":55085,"nodeType":"Block","src":"4470:92:82","nodes":[],"statements":[{"assignments":[55078],"declarations":[{"constant":false,"id":55078,"mutability":"mutable","name":"router","nameLocation":"4496:6:82","nodeType":"VariableDeclaration","scope":55085,"src":"4480:22:82","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53739_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":55077,"nodeType":"UserDefinedTypeName","pathNode":{"id":55076,"name":"Storage","nameLocations":["4480:7:82"],"nodeType":"IdentifierPath","referencedDeclaration":53739,"src":"4480:7:82"},"referencedDeclaration":53739,"src":"4480:7:82","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53739_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"}],"id":55081,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":55079,"name":"_getStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56400,"src":"4505:11:82","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$53739_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":55080,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4505:13:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53739_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"4480:38:82"},{"expression":{"expression":{"id":55082,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55078,"src":"4535:6:82","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53739_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":55083,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4542:13:82","memberName":"programsCount","nodeType":"MemberAccess","referencedDeclaration":53738,"src":"4535:20:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":55075,"id":55084,"nodeType":"Return","src":"4528:27:82"}]},"baseFunctions":[53900],"functionSelector":"96a2ddfa","implemented":true,"kind":"function","modifiers":[],"name":"programsCount","nameLocation":"4424:13:82","parameters":{"id":55072,"nodeType":"ParameterList","parameters":[],"src":"4437:2:82"},"returnParameters":{"id":55075,"nodeType":"ParameterList","parameters":[{"constant":false,"id":55074,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":55086,"src":"4461:7:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":55073,"name":"uint256","nodeType":"ElementaryTypeName","src":"4461:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4460:9:82"},"scope":56401,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":55105,"nodeType":"FunctionDefinition","src":"4568:166:82","nodes":[],"body":{"id":55104,"nodeType":"Block","src":"4638:96:82","nodes":[],"statements":[{"assignments":[55095],"declarations":[{"constant":false,"id":55095,"mutability":"mutable","name":"router","nameLocation":"4664:6:82","nodeType":"VariableDeclaration","scope":55104,"src":"4648:22:82","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53739_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":55094,"nodeType":"UserDefinedTypeName","pathNode":{"id":55093,"name":"Storage","nameLocations":["4648:7:82"],"nodeType":"IdentifierPath","referencedDeclaration":53739,"src":"4648:7:82"},"referencedDeclaration":53739,"src":"4648:7:82","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53739_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"}],"id":55098,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":55096,"name":"_getStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56400,"src":"4673:11:82","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$53739_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":55097,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4673:13:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53739_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"4648:38:82"},{"expression":{"baseExpression":{"expression":{"id":55099,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55095,"src":"4703:6:82","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53739_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":55100,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4710:8:82","memberName":"programs","nodeType":"MemberAccess","referencedDeclaration":53736,"src":"4703:15:82","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bytes32_$","typeString":"mapping(address => bytes32)"}},"id":55102,"indexExpression":{"id":55101,"name":"program","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55088,"src":"4719:7:82","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4703:24:82","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":55092,"id":55103,"nodeType":"Return","src":"4696:31:82"}]},"baseFunctions":[53908],"functionSelector":"9067088e","implemented":true,"kind":"function","modifiers":[],"name":"programCodeId","nameLocation":"4577:13:82","parameters":{"id":55089,"nodeType":"ParameterList","parameters":[{"constant":false,"id":55088,"mutability":"mutable","name":"program","nameLocation":"4599:7:82","nodeType":"VariableDeclaration","scope":55105,"src":"4591:15:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":55087,"name":"address","nodeType":"ElementaryTypeName","src":"4591:7:82","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4590:17:82"},"returnParameters":{"id":55092,"nodeType":"ParameterList","parameters":[{"constant":false,"id":55091,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":55105,"src":"4629:7:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":55090,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4629:7:82","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"4628:9:82"},"scope":56401,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":55120,"nodeType":"FunctionDefinition","src":"4785:173:82","nodes":[],"body":{"id":55119,"nodeType":"Block","src":"4853:105:82","nodes":[],"statements":[{"assignments":[55112],"declarations":[{"constant":false,"id":55112,"mutability":"mutable","name":"router","nameLocation":"4879:6:82","nodeType":"VariableDeclaration","scope":55119,"src":"4863:22:82","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53739_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":55111,"nodeType":"UserDefinedTypeName","pathNode":{"id":55110,"name":"Storage","nameLocations":["4863:7:82"],"nodeType":"IdentifierPath","referencedDeclaration":53739,"src":"4863:7:82"},"referencedDeclaration":53739,"src":"4863:7:82","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53739_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"}],"id":55115,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":55113,"name":"_getStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56400,"src":"4888:11:82","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$53739_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":55114,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4888:13:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53739_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"4863:38:82"},{"expression":{"expression":{"id":55116,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55112,"src":"4918:6:82","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53739_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":55117,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4925:26:82","memberName":"signingThresholdPercentage","nodeType":"MemberAccess","referencedDeclaration":53714,"src":"4918:33:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":55109,"id":55118,"nodeType":"Return","src":"4911:40:82"}]},"baseFunctions":[53913],"functionSelector":"efd81abc","implemented":true,"kind":"function","modifiers":[],"name":"signingThresholdPercentage","nameLocation":"4794:26:82","parameters":{"id":55106,"nodeType":"ParameterList","parameters":[],"src":"4820:2:82"},"returnParameters":{"id":55109,"nodeType":"ParameterList","parameters":[{"constant":false,"id":55108,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":55120,"src":"4844:7:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":55107,"name":"uint256","nodeType":"ElementaryTypeName","src":"4844:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4843:9:82"},"scope":56401,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":55137,"nodeType":"FunctionDefinition","src":"4964:204:82","nodes":[],"body":{"id":55136,"nodeType":"Block","src":"5025:143:82","nodes":[],"statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":55134,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":55131,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":55129,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":55125,"name":"validatorsCount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55153,"src":"5097:15:82","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":55126,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5097:17:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":55127,"name":"signingThresholdPercentage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55120,"src":"5117:26:82","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":55128,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5117:28:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5097:48:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"39393939","id":55130,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5148:4:82","typeDescriptions":{"typeIdentifier":"t_rational_9999_by_1","typeString":"int_const 9999"},"value":"9999"},"src":"5097:55:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":55132,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"5096:57:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"3130303030","id":55133,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5156:5:82","typeDescriptions":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"},"value":"10000"},"src":"5096:65:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":55124,"id":55135,"nodeType":"Return","src":"5089:72:82"}]},"baseFunctions":[53918],"functionSelector":"edc87225","implemented":true,"kind":"function","modifiers":[],"name":"validatorsThreshold","nameLocation":"4973:19:82","parameters":{"id":55121,"nodeType":"ParameterList","parameters":[],"src":"4992:2:82"},"returnParameters":{"id":55124,"nodeType":"ParameterList","parameters":[{"constant":false,"id":55123,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":55137,"src":"5016:7:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":55122,"name":"uint256","nodeType":"ElementaryTypeName","src":"5016:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5015:9:82"},"scope":56401,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":55153,"nodeType":"FunctionDefinition","src":"5174:157:82","nodes":[],"body":{"id":55152,"nodeType":"Block","src":"5231:100:82","nodes":[],"statements":[{"assignments":[55144],"declarations":[{"constant":false,"id":55144,"mutability":"mutable","name":"router","nameLocation":"5257:6:82","nodeType":"VariableDeclaration","scope":55152,"src":"5241:22:82","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53739_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":55143,"nodeType":"UserDefinedTypeName","pathNode":{"id":55142,"name":"Storage","nameLocations":["5241:7:82"],"nodeType":"IdentifierPath","referencedDeclaration":53739,"src":"5241:7:82"},"referencedDeclaration":53739,"src":"5241:7:82","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53739_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"}],"id":55147,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":55145,"name":"_getStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56400,"src":"5266:11:82","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$53739_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":55146,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5266:13:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53739_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"5241:38:82"},{"expression":{"expression":{"expression":{"id":55148,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55144,"src":"5296:6:82","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53739_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":55149,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5303:14:82","memberName":"validatorsKeys","nodeType":"MemberAccess","referencedDeclaration":53725,"src":"5296:21:82","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":55150,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5318:6:82","memberName":"length","nodeType":"MemberAccess","src":"5296:28:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":55141,"id":55151,"nodeType":"Return","src":"5289:35:82"}]},"baseFunctions":[53923],"functionSelector":"ed612f8c","implemented":true,"kind":"function","modifiers":[],"name":"validatorsCount","nameLocation":"5183:15:82","parameters":{"id":55138,"nodeType":"ParameterList","parameters":[],"src":"5198:2:82"},"returnParameters":{"id":55141,"nodeType":"ParameterList","parameters":[{"constant":false,"id":55140,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":55153,"src":"5222:7:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":55139,"name":"uint256","nodeType":"ElementaryTypeName","src":"5222:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5221:9:82"},"scope":56401,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":55172,"nodeType":"FunctionDefinition","src":"5337:171:82","nodes":[],"body":{"id":55171,"nodeType":"Block","src":"5408:100:82","nodes":[],"statements":[{"assignments":[55162],"declarations":[{"constant":false,"id":55162,"mutability":"mutable","name":"router","nameLocation":"5434:6:82","nodeType":"VariableDeclaration","scope":55171,"src":"5418:22:82","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53739_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":55161,"nodeType":"UserDefinedTypeName","pathNode":{"id":55160,"name":"Storage","nameLocations":["5418:7:82"],"nodeType":"IdentifierPath","referencedDeclaration":53739,"src":"5418:7:82"},"referencedDeclaration":53739,"src":"5418:7:82","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53739_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"}],"id":55165,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":55163,"name":"_getStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56400,"src":"5443:11:82","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$53739_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":55164,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5443:13:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53739_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"5418:38:82"},{"expression":{"baseExpression":{"expression":{"id":55166,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55162,"src":"5473:6:82","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53739_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":55167,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5480:10:82","memberName":"validators","nodeType":"MemberAccess","referencedDeclaration":53722,"src":"5473:17:82","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":55169,"indexExpression":{"id":55168,"name":"validator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55155,"src":"5491:9:82","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5473:28:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":55159,"id":55170,"nodeType":"Return","src":"5466:35:82"}]},"baseFunctions":[53930],"functionSelector":"8febbd59","implemented":true,"kind":"function","modifiers":[],"name":"validatorExists","nameLocation":"5346:15:82","parameters":{"id":55156,"nodeType":"ParameterList","parameters":[{"constant":false,"id":55155,"mutability":"mutable","name":"validator","nameLocation":"5370:9:82","nodeType":"VariableDeclaration","scope":55172,"src":"5362:17:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":55154,"name":"address","nodeType":"ElementaryTypeName","src":"5362:7:82","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5361:19:82"},"returnParameters":{"id":55159,"nodeType":"ParameterList","parameters":[{"constant":false,"id":55158,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":55172,"src":"5402:4:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":55157,"name":"bool","nodeType":"ElementaryTypeName","src":"5402:4:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"5401:6:82"},"scope":56401,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":55188,"nodeType":"FunctionDefinition","src":"5514:154:82","nodes":[],"body":{"id":55187,"nodeType":"Block","src":"5575:93:82","nodes":[],"statements":[{"assignments":[55180],"declarations":[{"constant":false,"id":55180,"mutability":"mutable","name":"router","nameLocation":"5601:6:82","nodeType":"VariableDeclaration","scope":55187,"src":"5585:22:82","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53739_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":55179,"nodeType":"UserDefinedTypeName","pathNode":{"id":55178,"name":"Storage","nameLocations":["5585:7:82"],"nodeType":"IdentifierPath","referencedDeclaration":53739,"src":"5585:7:82"},"referencedDeclaration":53739,"src":"5585:7:82","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53739_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"}],"id":55183,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":55181,"name":"_getStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56400,"src":"5610:11:82","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$53739_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":55182,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5610:13:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53739_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"5585:38:82"},{"expression":{"expression":{"id":55184,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55180,"src":"5640:6:82","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53739_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":55185,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5647:14:82","memberName":"validatorsKeys","nodeType":"MemberAccess","referencedDeclaration":53725,"src":"5640:21:82","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"functionReturnParameters":55177,"id":55186,"nodeType":"Return","src":"5633:28:82"}]},"baseFunctions":[53936],"functionSelector":"ca1e7819","implemented":true,"kind":"function","modifiers":[],"name":"validators","nameLocation":"5523:10:82","parameters":{"id":55173,"nodeType":"ParameterList","parameters":[],"src":"5533:2:82"},"returnParameters":{"id":55177,"nodeType":"ParameterList","parameters":[{"constant":false,"id":55176,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":55188,"src":"5557:16:82","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":55174,"name":"address","nodeType":"ElementaryTypeName","src":"5557:7:82","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":55175,"nodeType":"ArrayTypeName","src":"5557:9:82","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"src":"5556:18:82"},"scope":56401,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":55207,"nodeType":"FunctionDefinition","src":"5731:209:82","nodes":[],"body":{"id":55206,"nodeType":"Block","src":"5819:121:82","nodes":[],"statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":55196,"name":"_cleanValidators","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56332,"src":"5829:16:82","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":55197,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5829:18:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":55198,"nodeType":"ExpressionStatement","src":"5829:18:82"},{"expression":{"arguments":[{"id":55200,"name":"validatorsAddressArray","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55191,"src":"5872:22:82","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}],"id":55199,"name":"_setValidators","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56387,"src":"5857:14:82","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_array$_t_address_$dyn_memory_ptr_$returns$__$","typeString":"function (address[] memory)"}},"id":55201,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5857:38:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":55202,"nodeType":"ExpressionStatement","src":"5857:38:82"},{"eventCall":{"arguments":[],"expression":{"argumentTypes":[],"id":55203,"name":"ValidatorsSetChanged","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53829,"src":"5911:20:82","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$__$returns$__$","typeString":"function ()"}},"id":55204,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5911:22:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":55205,"nodeType":"EmitStatement","src":"5906:27:82"}]},"baseFunctions":[53942],"functionSelector":"e71731e4","implemented":true,"kind":"function","modifiers":[{"id":55194,"kind":"modifierInvocation","modifierName":{"id":55193,"name":"onlyOwner","nameLocations":["5809:9:82"],"nodeType":"IdentifierPath","referencedDeclaration":38919,"src":"5809:9:82"},"nodeType":"ModifierInvocation","src":"5809:9:82"}],"name":"updateValidators","nameLocation":"5740:16:82","parameters":{"id":55192,"nodeType":"ParameterList","parameters":[{"constant":false,"id":55191,"mutability":"mutable","name":"validatorsAddressArray","nameLocation":"5776:22:82","nodeType":"VariableDeclaration","scope":55207,"src":"5757:41:82","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":55189,"name":"address","nodeType":"ElementaryTypeName","src":"5757:7:82","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":55190,"nodeType":"ArrayTypeName","src":"5757:9:82","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"src":"5756:43:82"},"returnParameters":{"id":55195,"nodeType":"ParameterList","parameters":[],"src":"5819:0:82"},"scope":56401,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":55222,"nodeType":"FunctionDefinition","src":"5994:140:82","nodes":[],"body":{"id":55221,"nodeType":"Block","src":"6045:89:82","nodes":[],"statements":[{"assignments":[55214],"declarations":[{"constant":false,"id":55214,"mutability":"mutable","name":"router","nameLocation":"6071:6:82","nodeType":"VariableDeclaration","scope":55221,"src":"6055:22:82","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53739_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":55213,"nodeType":"UserDefinedTypeName","pathNode":{"id":55212,"name":"Storage","nameLocations":["6055:7:82"],"nodeType":"IdentifierPath","referencedDeclaration":53739,"src":"6055:7:82"},"referencedDeclaration":53739,"src":"6055:7:82","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53739_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"}],"id":55217,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":55215,"name":"_getStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56400,"src":"6080:11:82","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$53739_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":55216,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6080:13:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53739_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"6055:38:82"},{"expression":{"expression":{"id":55218,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55214,"src":"6110:6:82","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53739_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":55219,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6117:10:82","memberName":"baseWeight","nodeType":"MemberAccess","referencedDeclaration":53716,"src":"6110:17:82","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"functionReturnParameters":55211,"id":55220,"nodeType":"Return","src":"6103:24:82"}]},"baseFunctions":[53947],"functionSelector":"d3fd6364","implemented":true,"kind":"function","modifiers":[],"name":"baseWeight","nameLocation":"6003:10:82","parameters":{"id":55208,"nodeType":"ParameterList","parameters":[],"src":"6013:2:82"},"returnParameters":{"id":55211,"nodeType":"ParameterList","parameters":[{"constant":false,"id":55210,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":55222,"src":"6037:6:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":55209,"name":"uint64","nodeType":"ElementaryTypeName","src":"6037:6:82","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"src":"6036:8:82"},"scope":56401,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":55246,"nodeType":"FunctionDefinition","src":"6140:204:82","nodes":[],"body":{"id":55245,"nodeType":"Block","src":"6202:142:82","nodes":[],"statements":[{"assignments":[55231],"declarations":[{"constant":false,"id":55231,"mutability":"mutable","name":"router","nameLocation":"6228:6:82","nodeType":"VariableDeclaration","scope":55245,"src":"6212:22:82","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53739_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":55230,"nodeType":"UserDefinedTypeName","pathNode":{"id":55229,"name":"Storage","nameLocations":["6212:7:82"],"nodeType":"IdentifierPath","referencedDeclaration":53739,"src":"6212:7:82"},"referencedDeclaration":53739,"src":"6212:7:82","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53739_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"}],"id":55234,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":55232,"name":"_getStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56400,"src":"6237:11:82","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$53739_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":55233,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6237:13:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53739_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"6212:38:82"},{"expression":{"id":55239,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":55235,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55231,"src":"6260:6:82","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53739_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":55237,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"6267:10:82","memberName":"baseWeight","nodeType":"MemberAccess","referencedDeclaration":53716,"src":"6260:17:82","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":55238,"name":"_baseWeight","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55224,"src":"6280:11:82","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"src":"6260:31:82","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"id":55240,"nodeType":"ExpressionStatement","src":"6260:31:82"},{"eventCall":{"arguments":[{"id":55242,"name":"_baseWeight","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55224,"src":"6325:11:82","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint64","typeString":"uint64"}],"id":55241,"name":"BaseWeightChanged","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53837,"src":"6307:17:82","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint64_$returns$__$","typeString":"function (uint64)"}},"id":55243,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6307:30:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":55244,"nodeType":"EmitStatement","src":"6302:35:82"}]},"baseFunctions":[53952],"functionSelector":"8028861a","implemented":true,"kind":"function","modifiers":[{"id":55227,"kind":"modifierInvocation","modifierName":{"id":55226,"name":"onlyOwner","nameLocations":["6192:9:82"],"nodeType":"IdentifierPath","referencedDeclaration":38919,"src":"6192:9:82"},"nodeType":"ModifierInvocation","src":"6192:9:82"}],"name":"setBaseWeight","nameLocation":"6149:13:82","parameters":{"id":55225,"nodeType":"ParameterList","parameters":[{"constant":false,"id":55224,"mutability":"mutable","name":"_baseWeight","nameLocation":"6170:11:82","nodeType":"VariableDeclaration","scope":55246,"src":"6163:18:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":55223,"name":"uint64","nodeType":"ElementaryTypeName","src":"6163:6:82","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"src":"6162:20:82"},"returnParameters":{"id":55228,"nodeType":"ParameterList","parameters":[],"src":"6202:0:82"},"scope":56401,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":55261,"nodeType":"FunctionDefinition","src":"6350:149:82","nodes":[],"body":{"id":55260,"nodeType":"Block","src":"6406:93:82","nodes":[],"statements":[{"assignments":[55253],"declarations":[{"constant":false,"id":55253,"mutability":"mutable","name":"router","nameLocation":"6432:6:82","nodeType":"VariableDeclaration","scope":55260,"src":"6416:22:82","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53739_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":55252,"nodeType":"UserDefinedTypeName","pathNode":{"id":55251,"name":"Storage","nameLocations":["6416:7:82"],"nodeType":"IdentifierPath","referencedDeclaration":53739,"src":"6416:7:82"},"referencedDeclaration":53739,"src":"6416:7:82","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53739_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"}],"id":55256,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":55254,"name":"_getStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56400,"src":"6441:11:82","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$53739_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":55255,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6441:13:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53739_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"6416:38:82"},{"expression":{"expression":{"id":55257,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55253,"src":"6471:6:82","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53739_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":55258,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6478:14:82","memberName":"valuePerWeight","nodeType":"MemberAccess","referencedDeclaration":53718,"src":"6471:21:82","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"functionReturnParameters":55250,"id":55259,"nodeType":"Return","src":"6464:28:82"}]},"baseFunctions":[53957],"functionSelector":"0834fecc","implemented":true,"kind":"function","modifiers":[],"name":"valuePerWeight","nameLocation":"6359:14:82","parameters":{"id":55247,"nodeType":"ParameterList","parameters":[],"src":"6373:2:82"},"returnParameters":{"id":55250,"nodeType":"ParameterList","parameters":[{"constant":false,"id":55249,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":55261,"src":"6397:7:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":55248,"name":"uint128","nodeType":"ElementaryTypeName","src":"6397:7:82","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"6396:9:82"},"scope":56401,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":55285,"nodeType":"FunctionDefinition","src":"6505:229:82","nodes":[],"body":{"id":55284,"nodeType":"Block","src":"6576:158:82","nodes":[],"statements":[{"assignments":[55270],"declarations":[{"constant":false,"id":55270,"mutability":"mutable","name":"router","nameLocation":"6602:6:82","nodeType":"VariableDeclaration","scope":55284,"src":"6586:22:82","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53739_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":55269,"nodeType":"UserDefinedTypeName","pathNode":{"id":55268,"name":"Storage","nameLocations":["6586:7:82"],"nodeType":"IdentifierPath","referencedDeclaration":53739,"src":"6586:7:82"},"referencedDeclaration":53739,"src":"6586:7:82","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53739_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"}],"id":55273,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":55271,"name":"_getStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56400,"src":"6611:11:82","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$53739_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":55272,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6611:13:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53739_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"6586:38:82"},{"expression":{"id":55278,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":55274,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55270,"src":"6634:6:82","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53739_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":55276,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"6641:14:82","memberName":"valuePerWeight","nodeType":"MemberAccess","referencedDeclaration":53718,"src":"6634:21:82","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":55277,"name":"_valuePerWeight","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55263,"src":"6658:15:82","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"src":"6634:39:82","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"id":55279,"nodeType":"ExpressionStatement","src":"6634:39:82"},{"eventCall":{"arguments":[{"id":55281,"name":"_valuePerWeight","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55263,"src":"6711:15:82","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint128","typeString":"uint128"}],"id":55280,"name":"ValuePerWeightChanged","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53842,"src":"6689:21:82","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint128_$returns$__$","typeString":"function (uint128)"}},"id":55282,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6689:38:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":55283,"nodeType":"EmitStatement","src":"6684:43:82"}]},"baseFunctions":[53962],"functionSelector":"a6bbbe1c","implemented":true,"kind":"function","modifiers":[{"id":55266,"kind":"modifierInvocation","modifierName":{"id":55265,"name":"onlyOwner","nameLocations":["6566:9:82"],"nodeType":"IdentifierPath","referencedDeclaration":38919,"src":"6566:9:82"},"nodeType":"ModifierInvocation","src":"6566:9:82"}],"name":"setValuePerWeight","nameLocation":"6514:17:82","parameters":{"id":55264,"nodeType":"ParameterList","parameters":[{"constant":false,"id":55263,"mutability":"mutable","name":"_valuePerWeight","nameLocation":"6540:15:82","nodeType":"VariableDeclaration","scope":55285,"src":"6532:23:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":55262,"name":"uint128","nodeType":"ElementaryTypeName","src":"6532:7:82","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"6531:25:82"},"returnParameters":{"id":55267,"nodeType":"ParameterList","parameters":[],"src":"6576:0:82"},"scope":56401,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":55300,"nodeType":"FunctionDefinition","src":"6740:113:82","nodes":[],"body":{"id":55299,"nodeType":"Block","src":"6789:64:82","nodes":[],"statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint128","typeString":"uint128"},"id":55297,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":55292,"name":"baseWeight","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55222,"src":"6814:10:82","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint64_$","typeString":"function () view returns (uint64)"}},"id":55293,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6814:12:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint64","typeString":"uint64"}],"id":55291,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6806:7:82","typeDescriptions":{"typeIdentifier":"t_type$_t_uint128_$","typeString":"type(uint128)"},"typeName":{"id":55290,"name":"uint128","nodeType":"ElementaryTypeName","src":"6806:7:82","typeDescriptions":{}}},"id":55294,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6806:21:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":55295,"name":"valuePerWeight","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55261,"src":"6830:14:82","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint128_$","typeString":"function () view returns (uint128)"}},"id":55296,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6830:16:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"src":"6806:40:82","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"functionReturnParameters":55289,"id":55298,"nodeType":"Return","src":"6799:47:82"}]},"baseFunctions":[53967],"functionSelector":"6ef25c3a","implemented":true,"kind":"function","modifiers":[],"name":"baseFee","nameLocation":"6749:7:82","parameters":{"id":55286,"nodeType":"ParameterList","parameters":[],"src":"6756:2:82"},"returnParameters":{"id":55289,"nodeType":"ParameterList","parameters":[{"constant":false,"id":55288,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":55300,"src":"6780:7:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":55287,"name":"uint128","nodeType":"ElementaryTypeName","src":"6780:7:82","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"6779:9:82"},"scope":56401,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":55352,"nodeType":"FunctionDefinition","src":"6889:453:82","nodes":[],"body":{"id":55351,"nodeType":"Block","src":"6965:377:82","nodes":[],"statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":55316,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":55310,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":55308,"name":"blobTxHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55304,"src":"6983:10:82","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":55309,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6997:1:82","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"6983:15:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":55315,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"hexValue":"30","id":55312,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7011:1:82","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":55311,"name":"blobhash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-29,"src":"7002:8:82","typeDescriptions":{"typeIdentifier":"t_function_blobhash_view$_t_uint256_$returns$_t_bytes32_$","typeString":"function (uint256) view returns (bytes32)"}},"id":55313,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7002:11:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":55314,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7017:1:82","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"7002:16:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"6983:35:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"626c6f6254784861736820636f756c646e277420626520666f756e64","id":55317,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"7020:30:82","typeDescriptions":{"typeIdentifier":"t_stringliteral_944fe86403884466c74284042289853a231d438ed298af2a81bff9b6914f84e1","typeString":"literal_string \"blobTxHash couldn't be found\""},"value":"blobTxHash couldn't be found"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_944fe86403884466c74284042289853a231d438ed298af2a81bff9b6914f84e1","typeString":"literal_string \"blobTxHash couldn't be found\""}],"id":55307,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"6975:7:82","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":55318,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6975:76:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":55319,"nodeType":"ExpressionStatement","src":"6975:76:82"},{"assignments":[55322],"declarations":[{"constant":false,"id":55322,"mutability":"mutable","name":"router","nameLocation":"7078:6:82","nodeType":"VariableDeclaration","scope":55351,"src":"7062:22:82","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53739_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":55321,"nodeType":"UserDefinedTypeName","pathNode":{"id":55320,"name":"Storage","nameLocations":["7062:7:82"],"nodeType":"IdentifierPath","referencedDeclaration":53739,"src":"7062:7:82"},"referencedDeclaration":53739,"src":"7062:7:82","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53739_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"}],"id":55325,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":55323,"name":"_getStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56400,"src":"7087:11:82","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$53739_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":55324,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7087:13:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53739_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"7062:38:82"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_enum$_CodeState_$53743","typeString":"enum IRouter.CodeState"},"id":55333,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"expression":{"id":55327,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55322,"src":"7119:6:82","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53739_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":55328,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7126:5:82","memberName":"codes","nodeType":"MemberAccess","referencedDeclaration":53730,"src":"7119:12:82","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_enum$_CodeState_$53743_$","typeString":"mapping(bytes32 => enum IRouter.CodeState)"}},"id":55330,"indexExpression":{"id":55329,"name":"codeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55302,"src":"7132:6:82","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7119:20:82","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$53743","typeString":"enum IRouter.CodeState"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":55331,"name":"CodeState","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53743,"src":"7143:9:82","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_CodeState_$53743_$","typeString":"type(enum IRouter.CodeState)"}},"id":55332,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"7153:7:82","memberName":"Unknown","nodeType":"MemberAccess","referencedDeclaration":53740,"src":"7143:17:82","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$53743","typeString":"enum IRouter.CodeState"}},"src":"7119:41:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"636f64652077697468207375636820696420616c726561647920726571756573746564206f722076616c696461746564","id":55334,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"7162:50:82","typeDescriptions":{"typeIdentifier":"t_stringliteral_86d0efc10a98e1b7506967b99e345a37d8ca52b6f212bb7eaafd6d43a903647b","typeString":"literal_string \"code with such id already requested or validated\""},"value":"code with such id already requested or validated"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_86d0efc10a98e1b7506967b99e345a37d8ca52b6f212bb7eaafd6d43a903647b","typeString":"literal_string \"code with such id already requested or validated\""}],"id":55326,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"7111:7:82","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":55335,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7111:102:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":55336,"nodeType":"ExpressionStatement","src":"7111:102:82"},{"expression":{"id":55344,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"id":55337,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55322,"src":"7224:6:82","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53739_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":55340,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7231:5:82","memberName":"codes","nodeType":"MemberAccess","referencedDeclaration":53730,"src":"7224:12:82","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_enum$_CodeState_$53743_$","typeString":"mapping(bytes32 => enum IRouter.CodeState)"}},"id":55341,"indexExpression":{"id":55339,"name":"codeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55302,"src":"7237:6:82","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"7224:20:82","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$53743","typeString":"enum IRouter.CodeState"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":55342,"name":"CodeState","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53743,"src":"7247:9:82","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_CodeState_$53743_$","typeString":"type(enum IRouter.CodeState)"}},"id":55343,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"7257:19:82","memberName":"ValidationRequested","nodeType":"MemberAccess","referencedDeclaration":53741,"src":"7247:29:82","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$53743","typeString":"enum IRouter.CodeState"}},"src":"7224:52:82","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$53743","typeString":"enum IRouter.CodeState"}},"id":55345,"nodeType":"ExpressionStatement","src":"7224:52:82"},{"eventCall":{"arguments":[{"id":55347,"name":"codeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55302,"src":"7316:6:82","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":55348,"name":"blobTxHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55304,"src":"7324:10:82","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":55346,"name":"CodeValidationRequested","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53812,"src":"7292:23:82","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$_t_bytes32_$returns$__$","typeString":"function (bytes32,bytes32)"}},"id":55349,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7292:43:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":55350,"nodeType":"EmitStatement","src":"7287:48:82"}]},"baseFunctions":[53974],"functionSelector":"1c149d8a","implemented":true,"kind":"function","modifiers":[],"name":"requestCodeValidation","nameLocation":"6898:21:82","parameters":{"id":55305,"nodeType":"ParameterList","parameters":[{"constant":false,"id":55302,"mutability":"mutable","name":"codeId","nameLocation":"6928:6:82","nodeType":"VariableDeclaration","scope":55352,"src":"6920:14:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":55301,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6920:7:82","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":55304,"mutability":"mutable","name":"blobTxHash","nameLocation":"6944:10:82","nodeType":"VariableDeclaration","scope":55352,"src":"6936:18:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":55303,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6936:7:82","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"6919:36:82"},"returnParameters":{"id":55306,"nodeType":"ParameterList","parameters":[],"src":"6965:0:82"},"scope":56401,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":55389,"nodeType":"FunctionDefinition","src":"7348:381:82","nodes":[],"body":{"id":55388,"nodeType":"Block","src":"7504:225:82","nodes":[],"statements":[{"assignments":[55366,55368],"declarations":[{"constant":false,"id":55366,"mutability":"mutable","name":"actorId","nameLocation":"7523:7:82","nodeType":"VariableDeclaration","scope":55388,"src":"7515:15:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":55365,"name":"address","nodeType":"ElementaryTypeName","src":"7515:7:82","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":55368,"mutability":"mutable","name":"executableBalance","nameLocation":"7540:17:82","nodeType":"VariableDeclaration","scope":55388,"src":"7532:25:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":55367,"name":"uint128","nodeType":"ElementaryTypeName","src":"7532:7:82","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"id":55374,"initialValue":{"arguments":[{"id":55370,"name":"codeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55354,"src":"7590:6:82","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":55371,"name":"salt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55356,"src":"7598:4:82","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":55372,"name":"_value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55360,"src":"7604:6:82","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint128","typeString":"uint128"}],"id":55369,"name":"_createProgramWithoutMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55709,"src":"7561:28:82","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$_t_bytes32_$_t_uint128_$returns$_t_address_$_t_uint128_$","typeString":"function (bytes32,bytes32,uint128) returns (address,uint128)"}},"id":55373,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7561:50:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_uint128_$","typeString":"tuple(address,uint128)"}},"nodeType":"VariableDeclarationStatement","src":"7514:97:82"},{"expression":{"arguments":[{"expression":{"id":55379,"name":"tx","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-26,"src":"7651:2:82","typeDescriptions":{"typeIdentifier":"t_magic_transaction","typeString":"tx"}},"id":55380,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7654:6:82","memberName":"origin","nodeType":"MemberAccess","src":"7651:9:82","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":55381,"name":"payload","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55358,"src":"7662:7:82","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},{"id":55382,"name":"_value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55360,"src":"7671:6:82","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"id":55383,"name":"executableBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55368,"src":"7679:17:82","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"},{"typeIdentifier":"t_uint128","typeString":"uint128"},{"typeIdentifier":"t_uint128","typeString":"uint128"}],"expression":{"arguments":[{"id":55376,"name":"actorId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55366,"src":"7630:7:82","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":55375,"name":"IMirror","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53656,"src":"7622:7:82","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IMirror_$53656_$","typeString":"type(contract IMirror)"}},"id":55377,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7622:16:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IMirror_$53656","typeString":"contract IMirror"}},"id":55378,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7639:11:82","memberName":"initMessage","nodeType":"MemberAccess","referencedDeclaration":53655,"src":"7622:28:82","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_uint128_$_t_uint128_$returns$__$","typeString":"function (address,bytes memory,uint128,uint128) external"}},"id":55384,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7622:75:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":55385,"nodeType":"ExpressionStatement","src":"7622:75:82"},{"expression":{"id":55386,"name":"actorId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55366,"src":"7715:7:82","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":55364,"id":55387,"nodeType":"Return","src":"7708:14:82"}]},"baseFunctions":[53987],"functionSelector":"8074b455","implemented":true,"kind":"function","modifiers":[],"name":"createProgram","nameLocation":"7357:13:82","parameters":{"id":55361,"nodeType":"ParameterList","parameters":[{"constant":false,"id":55354,"mutability":"mutable","name":"codeId","nameLocation":"7379:6:82","nodeType":"VariableDeclaration","scope":55389,"src":"7371:14:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":55353,"name":"bytes32","nodeType":"ElementaryTypeName","src":"7371:7:82","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":55356,"mutability":"mutable","name":"salt","nameLocation":"7395:4:82","nodeType":"VariableDeclaration","scope":55389,"src":"7387:12:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":55355,"name":"bytes32","nodeType":"ElementaryTypeName","src":"7387:7:82","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":55358,"mutability":"mutable","name":"payload","nameLocation":"7416:7:82","nodeType":"VariableDeclaration","scope":55389,"src":"7401:22:82","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":55357,"name":"bytes","nodeType":"ElementaryTypeName","src":"7401:5:82","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":55360,"mutability":"mutable","name":"_value","nameLocation":"7433:6:82","nodeType":"VariableDeclaration","scope":55389,"src":"7425:14:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":55359,"name":"uint128","nodeType":"ElementaryTypeName","src":"7425:7:82","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"7370:70:82"},"returnParameters":{"id":55364,"nodeType":"ParameterList","parameters":[{"constant":false,"id":55363,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":55389,"src":"7491:7:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":55362,"name":"address","nodeType":"ElementaryTypeName","src":"7491:7:82","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"7490:9:82"},"scope":56401,"stateMutability":"payable","virtual":false,"visibility":"external"},{"id":55447,"nodeType":"FunctionDefinition","src":"7735:596:82","nodes":[],"body":{"id":55446,"nodeType":"Block","src":"7951:380:82","nodes":[],"statements":[{"assignments":[55405,55407],"declarations":[{"constant":false,"id":55405,"mutability":"mutable","name":"actorId","nameLocation":"7970:7:82","nodeType":"VariableDeclaration","scope":55446,"src":"7962:15:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":55404,"name":"address","nodeType":"ElementaryTypeName","src":"7962:7:82","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":55407,"mutability":"mutable","name":"executableBalance","nameLocation":"7987:17:82","nodeType":"VariableDeclaration","scope":55446,"src":"7979:25:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":55406,"name":"uint128","nodeType":"ElementaryTypeName","src":"7979:7:82","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"id":55413,"initialValue":{"arguments":[{"id":55409,"name":"codeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55393,"src":"8037:6:82","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":55410,"name":"salt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55395,"src":"8045:4:82","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":55411,"name":"_value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55399,"src":"8051:6:82","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint128","typeString":"uint128"}],"id":55408,"name":"_createProgramWithoutMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55709,"src":"8008:28:82","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$_t_bytes32_$_t_uint128_$returns$_t_address_$_t_uint128_$","typeString":"function (bytes32,bytes32,uint128) returns (address,uint128)"}},"id":55412,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8008:50:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_uint128_$","typeString":"tuple(address,uint128)"}},"nodeType":"VariableDeclarationStatement","src":"7961:97:82"},{"assignments":[55416],"declarations":[{"constant":false,"id":55416,"mutability":"mutable","name":"mirrorInstance","nameLocation":"8077:14:82","nodeType":"VariableDeclaration","scope":55446,"src":"8069:22:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IMirror_$53656","typeString":"contract IMirror"},"typeName":{"id":55415,"nodeType":"UserDefinedTypeName","pathNode":{"id":55414,"name":"IMirror","nameLocations":["8069:7:82"],"nodeType":"IdentifierPath","referencedDeclaration":53656,"src":"8069:7:82"},"referencedDeclaration":53656,"src":"8069:7:82","typeDescriptions":{"typeIdentifier":"t_contract$_IMirror_$53656","typeString":"contract IMirror"}},"visibility":"internal"}],"id":55420,"initialValue":{"arguments":[{"id":55418,"name":"actorId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55405,"src":"8102:7:82","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":55417,"name":"IMirror","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53656,"src":"8094:7:82","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IMirror_$53656_$","typeString":"type(contract IMirror)"}},"id":55419,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8094:16:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IMirror_$53656","typeString":"contract IMirror"}},"nodeType":"VariableDeclarationStatement","src":"8069:41:82"},{"expression":{"arguments":[{"id":55424,"name":"decoderImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55391,"src":"8150:21:82","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"arguments":[{"id":55428,"name":"codeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55393,"src":"8200:6:82","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":55429,"name":"salt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55395,"src":"8208:4:82","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":55426,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"8183:3:82","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":55427,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"8187:12:82","memberName":"encodePacked","nodeType":"MemberAccess","src":"8183:16:82","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":55430,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8183:30:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":55425,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"8173:9:82","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":55431,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8173:41:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":55421,"name":"mirrorInstance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55416,"src":"8121:14:82","typeDescriptions":{"typeIdentifier":"t_contract$_IMirror_$53656","typeString":"contract IMirror"}},"id":55423,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8136:13:82","memberName":"createDecoder","nodeType":"MemberAccess","referencedDeclaration":53644,"src":"8121:28:82","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_bytes32_$returns$__$","typeString":"function (address,bytes32) external"}},"id":55432,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8121:94:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":55433,"nodeType":"ExpressionStatement","src":"8121:94:82"},{"expression":{"arguments":[{"expression":{"id":55437,"name":"tx","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-26,"src":"8253:2:82","typeDescriptions":{"typeIdentifier":"t_magic_transaction","typeString":"tx"}},"id":55438,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8256:6:82","memberName":"origin","nodeType":"MemberAccess","src":"8253:9:82","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":55439,"name":"payload","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55397,"src":"8264:7:82","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},{"id":55440,"name":"_value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55399,"src":"8273:6:82","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"id":55441,"name":"executableBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55407,"src":"8281:17:82","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"},{"typeIdentifier":"t_uint128","typeString":"uint128"},{"typeIdentifier":"t_uint128","typeString":"uint128"}],"expression":{"id":55434,"name":"mirrorInstance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55416,"src":"8226:14:82","typeDescriptions":{"typeIdentifier":"t_contract$_IMirror_$53656","typeString":"contract IMirror"}},"id":55436,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8241:11:82","memberName":"initMessage","nodeType":"MemberAccess","referencedDeclaration":53655,"src":"8226:26:82","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_uint128_$_t_uint128_$returns$__$","typeString":"function (address,bytes memory,uint128,uint128) external"}},"id":55442,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8226:73:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":55443,"nodeType":"ExpressionStatement","src":"8226:73:82"},{"expression":{"id":55444,"name":"actorId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55405,"src":"8317:7:82","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":55403,"id":55445,"nodeType":"Return","src":"8310:14:82"}]},"baseFunctions":[54002],"functionSelector":"666d124c","implemented":true,"kind":"function","modifiers":[],"name":"createProgramWithDecoder","nameLocation":"7744:24:82","parameters":{"id":55400,"nodeType":"ParameterList","parameters":[{"constant":false,"id":55391,"mutability":"mutable","name":"decoderImplementation","nameLocation":"7786:21:82","nodeType":"VariableDeclaration","scope":55447,"src":"7778:29:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":55390,"name":"address","nodeType":"ElementaryTypeName","src":"7778:7:82","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":55393,"mutability":"mutable","name":"codeId","nameLocation":"7825:6:82","nodeType":"VariableDeclaration","scope":55447,"src":"7817:14:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":55392,"name":"bytes32","nodeType":"ElementaryTypeName","src":"7817:7:82","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":55395,"mutability":"mutable","name":"salt","nameLocation":"7849:4:82","nodeType":"VariableDeclaration","scope":55447,"src":"7841:12:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":55394,"name":"bytes32","nodeType":"ElementaryTypeName","src":"7841:7:82","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":55397,"mutability":"mutable","name":"payload","nameLocation":"7878:7:82","nodeType":"VariableDeclaration","scope":55447,"src":"7863:22:82","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":55396,"name":"bytes","nodeType":"ElementaryTypeName","src":"7863:5:82","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":55399,"mutability":"mutable","name":"_value","nameLocation":"7903:6:82","nodeType":"VariableDeclaration","scope":55447,"src":"7895:14:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":55398,"name":"uint128","nodeType":"ElementaryTypeName","src":"7895:7:82","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"7768:147:82"},"returnParameters":{"id":55403,"nodeType":"ParameterList","parameters":[{"constant":false,"id":55402,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":55447,"src":"7942:7:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":55401,"name":"address","nodeType":"ElementaryTypeName","src":"7942:7:82","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"7941:9:82"},"scope":56401,"stateMutability":"payable","virtual":false,"visibility":"external"},{"id":55560,"nodeType":"FunctionDefinition","src":"8337:1117:82","nodes":[],"body":{"id":55559,"nodeType":"Block","src":"8444:1010:82","nodes":[],"statements":[{"assignments":[55459],"declarations":[{"constant":false,"id":55459,"mutability":"mutable","name":"router","nameLocation":"8470:6:82","nodeType":"VariableDeclaration","scope":55559,"src":"8454:22:82","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53739_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":55458,"nodeType":"UserDefinedTypeName","pathNode":{"id":55457,"name":"Storage","nameLocations":["8454:7:82"],"nodeType":"IdentifierPath","referencedDeclaration":53739,"src":"8454:7:82"},"referencedDeclaration":53739,"src":"8454:7:82","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53739_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"}],"id":55462,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":55460,"name":"_getStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56400,"src":"8479:11:82","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$53739_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":55461,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8479:13:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53739_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"8454:38:82"},{"assignments":[55464],"declarations":[{"constant":false,"id":55464,"mutability":"mutable","name":"codeCommetmentsHashes","nameLocation":"8516:21:82","nodeType":"VariableDeclaration","scope":55559,"src":"8503:34:82","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":55463,"name":"bytes","nodeType":"ElementaryTypeName","src":"8503:5:82","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":55465,"nodeType":"VariableDeclarationStatement","src":"8503:34:82"},{"body":{"id":55550,"nodeType":"Block","src":"8606:766:82","statements":[{"assignments":[55479],"declarations":[{"constant":false,"id":55479,"mutability":"mutable","name":"codeCommitment","nameLocation":"8644:14:82","nodeType":"VariableDeclaration","scope":55550,"src":"8620:38:82","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_CodeCommitment_$53748_calldata_ptr","typeString":"struct IRouter.CodeCommitment"},"typeName":{"id":55478,"nodeType":"UserDefinedTypeName","pathNode":{"id":55477,"name":"CodeCommitment","nameLocations":["8620:14:82"],"nodeType":"IdentifierPath","referencedDeclaration":53748,"src":"8620:14:82"},"referencedDeclaration":53748,"src":"8620:14:82","typeDescriptions":{"typeIdentifier":"t_struct$_CodeCommitment_$53748_storage_ptr","typeString":"struct IRouter.CodeCommitment"}},"visibility":"internal"}],"id":55483,"initialValue":{"baseExpression":{"id":55480,"name":"codeCommitmentsArray","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55451,"src":"8661:20:82","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_CodeCommitment_$53748_calldata_ptr_$dyn_calldata_ptr","typeString":"struct IRouter.CodeCommitment calldata[] calldata"}},"id":55482,"indexExpression":{"id":55481,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55467,"src":"8682:1:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"8661:23:82","typeDescriptions":{"typeIdentifier":"t_struct$_CodeCommitment_$53748_calldata_ptr","typeString":"struct IRouter.CodeCommitment calldata"}},"nodeType":"VariableDeclarationStatement","src":"8620:64:82"},{"assignments":[55485],"declarations":[{"constant":false,"id":55485,"mutability":"mutable","name":"codeCommitmentHash","nameLocation":"8707:18:82","nodeType":"VariableDeclaration","scope":55550,"src":"8699:26:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":55484,"name":"bytes32","nodeType":"ElementaryTypeName","src":"8699:7:82","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":55489,"initialValue":{"arguments":[{"id":55487,"name":"codeCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55479,"src":"8748:14:82","typeDescriptions":{"typeIdentifier":"t_struct$_CodeCommitment_$53748_calldata_ptr","typeString":"struct IRouter.CodeCommitment calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_CodeCommitment_$53748_calldata_ptr","typeString":"struct IRouter.CodeCommitment calldata"}],"id":55486,"name":"_codeCommitmentHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56258,"src":"8728:19:82","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_struct$_CodeCommitment_$53748_calldata_ptr_$returns$_t_bytes32_$","typeString":"function (struct IRouter.CodeCommitment calldata) pure returns (bytes32)"}},"id":55488,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8728:35:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"8699:64:82"},{"expression":{"id":55497,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":55490,"name":"codeCommetmentsHashes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55464,"src":"8778:21:82","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":55494,"name":"codeCommetmentsHashes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55464,"src":"8815:21:82","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":55495,"name":"codeCommitmentHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55485,"src":"8838:18:82","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":55492,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8802:5:82","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":55491,"name":"bytes","nodeType":"ElementaryTypeName","src":"8802:5:82","typeDescriptions":{}}},"id":55493,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8808:6:82","memberName":"concat","nodeType":"MemberAccess","src":"8802:12:82","typeDescriptions":{"typeIdentifier":"t_function_bytesconcat_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":55496,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8802:55:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"src":"8778:79:82","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":55498,"nodeType":"ExpressionStatement","src":"8778:79:82"},{"assignments":[55500],"declarations":[{"constant":false,"id":55500,"mutability":"mutable","name":"codeId","nameLocation":"8880:6:82","nodeType":"VariableDeclaration","scope":55550,"src":"8872:14:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":55499,"name":"bytes32","nodeType":"ElementaryTypeName","src":"8872:7:82","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":55503,"initialValue":{"expression":{"id":55501,"name":"codeCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55479,"src":"8889:14:82","typeDescriptions":{"typeIdentifier":"t_struct$_CodeCommitment_$53748_calldata_ptr","typeString":"struct IRouter.CodeCommitment calldata"}},"id":55502,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8904:2:82","memberName":"id","nodeType":"MemberAccess","referencedDeclaration":53745,"src":"8889:17:82","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"8872:34:82"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_enum$_CodeState_$53743","typeString":"enum IRouter.CodeState"},"id":55511,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"expression":{"id":55505,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55459,"src":"8928:6:82","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53739_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":55506,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8935:5:82","memberName":"codes","nodeType":"MemberAccess","referencedDeclaration":53730,"src":"8928:12:82","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_enum$_CodeState_$53743_$","typeString":"mapping(bytes32 => enum IRouter.CodeState)"}},"id":55508,"indexExpression":{"id":55507,"name":"codeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55500,"src":"8941:6:82","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"8928:20:82","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$53743","typeString":"enum IRouter.CodeState"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":55509,"name":"CodeState","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53743,"src":"8952:9:82","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_CodeState_$53743_$","typeString":"type(enum IRouter.CodeState)"}},"id":55510,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"8962:19:82","memberName":"ValidationRequested","nodeType":"MemberAccess","referencedDeclaration":53741,"src":"8952:29:82","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$53743","typeString":"enum IRouter.CodeState"}},"src":"8928:53:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"636f64652073686f756c642062652072657175657374656420666f722076616c69646174696f6e","id":55512,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"8983:41:82","typeDescriptions":{"typeIdentifier":"t_stringliteral_9f0f0146c5c6578abd878317fc7dbe7872a552fba3ce3a30a1e42dfd172e27f7","typeString":"literal_string \"code should be requested for validation\""},"value":"code should be requested for validation"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_9f0f0146c5c6578abd878317fc7dbe7872a552fba3ce3a30a1e42dfd172e27f7","typeString":"literal_string \"code should be requested for validation\""}],"id":55504,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"8920:7:82","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":55513,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8920:105:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":55514,"nodeType":"ExpressionStatement","src":"8920:105:82"},{"condition":{"expression":{"id":55515,"name":"codeCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55479,"src":"9044:14:82","typeDescriptions":{"typeIdentifier":"t_struct$_CodeCommitment_$53748_calldata_ptr","typeString":"struct IRouter.CodeCommitment calldata"}},"id":55516,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9059:5:82","memberName":"valid","nodeType":"MemberAccess","referencedDeclaration":53747,"src":"9044:20:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":55548,"nodeType":"Block","src":"9247:115:82","statements":[{"expression":{"id":55541,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"delete","prefix":true,"src":"9265:27:82","subExpression":{"baseExpression":{"expression":{"id":55537,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55459,"src":"9272:6:82","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53739_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":55538,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9279:5:82","memberName":"codes","nodeType":"MemberAccess","referencedDeclaration":53730,"src":"9272:12:82","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_enum$_CodeState_$53743_$","typeString":"mapping(bytes32 => enum IRouter.CodeState)"}},"id":55540,"indexExpression":{"id":55539,"name":"codeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55500,"src":"9285:6:82","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"9272:20:82","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$53743","typeString":"enum IRouter.CodeState"}},"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":55542,"nodeType":"ExpressionStatement","src":"9265:27:82"},{"eventCall":{"arguments":[{"id":55544,"name":"codeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55500,"src":"9333:6:82","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"hexValue":"66616c7365","id":55545,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"9341:5:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":55543,"name":"CodeGotValidated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53819,"src":"9316:16:82","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$_t_bool_$returns$__$","typeString":"function (bytes32,bool)"}},"id":55546,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9316:31:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":55547,"nodeType":"EmitStatement","src":"9311:36:82"}]},"id":55549,"nodeType":"IfStatement","src":"9040:322:82","trueBody":{"id":55536,"nodeType":"Block","src":"9066:175:82","statements":[{"expression":{"id":55524,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"id":55517,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55459,"src":"9084:6:82","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53739_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":55520,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9091:5:82","memberName":"codes","nodeType":"MemberAccess","referencedDeclaration":53730,"src":"9084:12:82","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_enum$_CodeState_$53743_$","typeString":"mapping(bytes32 => enum IRouter.CodeState)"}},"id":55521,"indexExpression":{"id":55519,"name":"codeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55500,"src":"9097:6:82","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"9084:20:82","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$53743","typeString":"enum IRouter.CodeState"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":55522,"name":"CodeState","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53743,"src":"9107:9:82","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_CodeState_$53743_$","typeString":"type(enum IRouter.CodeState)"}},"id":55523,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"9117:9:82","memberName":"Validated","nodeType":"MemberAccess","referencedDeclaration":53742,"src":"9107:19:82","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$53743","typeString":"enum IRouter.CodeState"}},"src":"9084:42:82","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$53743","typeString":"enum IRouter.CodeState"}},"id":55525,"nodeType":"ExpressionStatement","src":"9084:42:82"},{"expression":{"id":55529,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"9144:28:82","subExpression":{"expression":{"id":55526,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55459,"src":"9144:6:82","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53739_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":55528,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"9151:19:82","memberName":"validatedCodesCount","nodeType":"MemberAccess","referencedDeclaration":53732,"src":"9144:26:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":55530,"nodeType":"ExpressionStatement","src":"9144:28:82"},{"eventCall":{"arguments":[{"id":55532,"name":"codeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55500,"src":"9213:6:82","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"hexValue":"74727565","id":55533,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"9221:4:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":55531,"name":"CodeGotValidated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53819,"src":"9196:16:82","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$_t_bool_$returns$__$","typeString":"function (bytes32,bool)"}},"id":55534,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9196:30:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":55535,"nodeType":"EmitStatement","src":"9191:35:82"}]}}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":55473,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":55470,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55467,"src":"8568:1:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":55471,"name":"codeCommitmentsArray","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55451,"src":"8572:20:82","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_CodeCommitment_$53748_calldata_ptr_$dyn_calldata_ptr","typeString":"struct IRouter.CodeCommitment calldata[] calldata"}},"id":55472,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8593:6:82","memberName":"length","nodeType":"MemberAccess","src":"8572:27:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8568:31:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":55551,"initializationExpression":{"assignments":[55467],"declarations":[{"constant":false,"id":55467,"mutability":"mutable","name":"i","nameLocation":"8561:1:82","nodeType":"VariableDeclaration","scope":55551,"src":"8553:9:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":55466,"name":"uint256","nodeType":"ElementaryTypeName","src":"8553:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":55469,"initialValue":{"hexValue":"30","id":55468,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8565:1:82","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"8553:13:82"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":55475,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"8601:3:82","subExpression":{"id":55474,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55467,"src":"8601:1:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":55476,"nodeType":"ExpressionStatement","src":"8601:3:82"},"nodeType":"ForStatement","src":"8548:824:82"},{"expression":{"arguments":[{"arguments":[{"id":55554,"name":"codeCommetmentsHashes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55464,"src":"9412:21:82","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":55553,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"9402:9:82","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":55555,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9402:32:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":55556,"name":"signatures","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55454,"src":"9436:10:82","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr","typeString":"bytes calldata[] calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr","typeString":"bytes calldata[] calldata"}],"id":55552,"name":"_validateSignatures","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55798,"src":"9382:19:82","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$_t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr_$returns$__$","typeString":"function (bytes32,bytes calldata[] calldata) view"}},"id":55557,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9382:65:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":55558,"nodeType":"ExpressionStatement","src":"9382:65:82"}]},"baseFunctions":[54012],"functionSelector":"e97d3eb3","implemented":true,"kind":"function","modifiers":[],"name":"commitCodes","nameLocation":"8346:11:82","parameters":{"id":55455,"nodeType":"ParameterList","parameters":[{"constant":false,"id":55451,"mutability":"mutable","name":"codeCommitmentsArray","nameLocation":"8384:20:82","nodeType":"VariableDeclaration","scope":55560,"src":"8358:46:82","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_CodeCommitment_$53748_calldata_ptr_$dyn_calldata_ptr","typeString":"struct IRouter.CodeCommitment[]"},"typeName":{"baseType":{"id":55449,"nodeType":"UserDefinedTypeName","pathNode":{"id":55448,"name":"CodeCommitment","nameLocations":["8358:14:82"],"nodeType":"IdentifierPath","referencedDeclaration":53748,"src":"8358:14:82"},"referencedDeclaration":53748,"src":"8358:14:82","typeDescriptions":{"typeIdentifier":"t_struct$_CodeCommitment_$53748_storage_ptr","typeString":"struct IRouter.CodeCommitment"}},"id":55450,"nodeType":"ArrayTypeName","src":"8358:16:82","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_CodeCommitment_$53748_storage_$dyn_storage_ptr","typeString":"struct IRouter.CodeCommitment[]"}},"visibility":"internal"},{"constant":false,"id":55454,"mutability":"mutable","name":"signatures","nameLocation":"8423:10:82","nodeType":"VariableDeclaration","scope":55560,"src":"8406:27:82","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr","typeString":"bytes[]"},"typeName":{"baseType":{"id":55452,"name":"bytes","nodeType":"ElementaryTypeName","src":"8406:5:82","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"id":55453,"nodeType":"ArrayTypeName","src":"8406:7:82","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_storage_$dyn_storage_ptr","typeString":"bytes[]"}},"visibility":"internal"}],"src":"8357:77:82"},"returnParameters":{"id":55456,"nodeType":"ParameterList","parameters":[],"src":"8444:0:82"},"scope":56401,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":55618,"nodeType":"FunctionDefinition","src":"9460:604:82","nodes":[],"body":{"id":55617,"nodeType":"Block","src":"9603:461:82","nodes":[],"statements":[{"assignments":[55573],"declarations":[{"constant":false,"id":55573,"mutability":"mutable","name":"blockCommitmentsHashes","nameLocation":"9626:22:82","nodeType":"VariableDeclaration","scope":55617,"src":"9613:35:82","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":55572,"name":"bytes","nodeType":"ElementaryTypeName","src":"9613:5:82","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":55574,"nodeType":"VariableDeclarationStatement","src":"9613:35:82"},{"body":{"id":55608,"nodeType":"Block","src":"9718:263:82","statements":[{"assignments":[55588],"declarations":[{"constant":false,"id":55588,"mutability":"mutable","name":"blockCommitment","nameLocation":"9757:15:82","nodeType":"VariableDeclaration","scope":55608,"src":"9732:40:82","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_BlockCommitment_$53759_calldata_ptr","typeString":"struct IRouter.BlockCommitment"},"typeName":{"id":55587,"nodeType":"UserDefinedTypeName","pathNode":{"id":55586,"name":"BlockCommitment","nameLocations":["9732:15:82"],"nodeType":"IdentifierPath","referencedDeclaration":53759,"src":"9732:15:82"},"referencedDeclaration":53759,"src":"9732:15:82","typeDescriptions":{"typeIdentifier":"t_struct$_BlockCommitment_$53759_storage_ptr","typeString":"struct IRouter.BlockCommitment"}},"visibility":"internal"}],"id":55592,"initialValue":{"baseExpression":{"id":55589,"name":"blockCommitmentsArray","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55564,"src":"9775:21:82","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_BlockCommitment_$53759_calldata_ptr_$dyn_calldata_ptr","typeString":"struct IRouter.BlockCommitment calldata[] calldata"}},"id":55591,"indexExpression":{"id":55590,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55576,"src":"9797:1:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"9775:24:82","typeDescriptions":{"typeIdentifier":"t_struct$_BlockCommitment_$53759_calldata_ptr","typeString":"struct IRouter.BlockCommitment calldata"}},"nodeType":"VariableDeclarationStatement","src":"9732:67:82"},{"assignments":[55594],"declarations":[{"constant":false,"id":55594,"mutability":"mutable","name":"blockCommitmentHash","nameLocation":"9822:19:82","nodeType":"VariableDeclaration","scope":55608,"src":"9814:27:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":55593,"name":"bytes32","nodeType":"ElementaryTypeName","src":"9814:7:82","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":55598,"initialValue":{"arguments":[{"id":55596,"name":"blockCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55588,"src":"9857:15:82","typeDescriptions":{"typeIdentifier":"t_struct$_BlockCommitment_$53759_calldata_ptr","typeString":"struct IRouter.BlockCommitment calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_BlockCommitment_$53759_calldata_ptr","typeString":"struct IRouter.BlockCommitment calldata"}],"id":55595,"name":"_commitBlock","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55894,"src":"9844:12:82","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_BlockCommitment_$53759_calldata_ptr_$returns$_t_bytes32_$","typeString":"function (struct IRouter.BlockCommitment calldata) returns (bytes32)"}},"id":55597,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9844:29:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"9814:59:82"},{"expression":{"id":55606,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":55599,"name":"blockCommitmentsHashes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55573,"src":"9888:22:82","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":55603,"name":"blockCommitmentsHashes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55573,"src":"9926:22:82","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":55604,"name":"blockCommitmentHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55594,"src":"9950:19:82","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":55601,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9913:5:82","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":55600,"name":"bytes","nodeType":"ElementaryTypeName","src":"9913:5:82","typeDescriptions":{}}},"id":55602,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9919:6:82","memberName":"concat","nodeType":"MemberAccess","src":"9913:12:82","typeDescriptions":{"typeIdentifier":"t_function_bytesconcat_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":55605,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9913:57:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"src":"9888:82:82","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":55607,"nodeType":"ExpressionStatement","src":"9888:82:82"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":55582,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":55579,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55576,"src":"9679:1:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":55580,"name":"blockCommitmentsArray","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55564,"src":"9683:21:82","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_BlockCommitment_$53759_calldata_ptr_$dyn_calldata_ptr","typeString":"struct IRouter.BlockCommitment calldata[] calldata"}},"id":55581,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9705:6:82","memberName":"length","nodeType":"MemberAccess","src":"9683:28:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9679:32:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":55609,"initializationExpression":{"assignments":[55576],"declarations":[{"constant":false,"id":55576,"mutability":"mutable","name":"i","nameLocation":"9672:1:82","nodeType":"VariableDeclaration","scope":55609,"src":"9664:9:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":55575,"name":"uint256","nodeType":"ElementaryTypeName","src":"9664:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":55578,"initialValue":{"hexValue":"30","id":55577,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9676:1:82","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"9664:13:82"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":55584,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"9713:3:82","subExpression":{"id":55583,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55576,"src":"9713:1:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":55585,"nodeType":"ExpressionStatement","src":"9713:3:82"},"nodeType":"ForStatement","src":"9659:322:82"},{"expression":{"arguments":[{"arguments":[{"id":55612,"name":"blockCommitmentsHashes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55573,"src":"10021:22:82","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":55611,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"10011:9:82","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":55613,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10011:33:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":55614,"name":"signatures","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55567,"src":"10046:10:82","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr","typeString":"bytes calldata[] calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr","typeString":"bytes calldata[] calldata"}],"id":55610,"name":"_validateSignatures","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55798,"src":"9991:19:82","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$_t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr_$returns$__$","typeString":"function (bytes32,bytes calldata[] calldata) view"}},"id":55615,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9991:66:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":55616,"nodeType":"ExpressionStatement","src":"9991:66:82"}]},"baseFunctions":[54022],"functionSelector":"26637f6d","implemented":true,"kind":"function","modifiers":[{"id":55570,"kind":"modifierInvocation","modifierName":{"id":55569,"name":"nonReentrant","nameLocations":["9586:12:82"],"nodeType":"IdentifierPath","referencedDeclaration":42355,"src":"9586:12:82"},"nodeType":"ModifierInvocation","src":"9586:12:82"}],"name":"commitBlocks","nameLocation":"9469:12:82","parameters":{"id":55568,"nodeType":"ParameterList","parameters":[{"constant":false,"id":55564,"mutability":"mutable","name":"blockCommitmentsArray","nameLocation":"9509:21:82","nodeType":"VariableDeclaration","scope":55618,"src":"9482:48:82","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_BlockCommitment_$53759_calldata_ptr_$dyn_calldata_ptr","typeString":"struct IRouter.BlockCommitment[]"},"typeName":{"baseType":{"id":55562,"nodeType":"UserDefinedTypeName","pathNode":{"id":55561,"name":"BlockCommitment","nameLocations":["9482:15:82"],"nodeType":"IdentifierPath","referencedDeclaration":53759,"src":"9482:15:82"},"referencedDeclaration":53759,"src":"9482:15:82","typeDescriptions":{"typeIdentifier":"t_struct$_BlockCommitment_$53759_storage_ptr","typeString":"struct IRouter.BlockCommitment"}},"id":55563,"nodeType":"ArrayTypeName","src":"9482:17:82","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_BlockCommitment_$53759_storage_$dyn_storage_ptr","typeString":"struct IRouter.BlockCommitment[]"}},"visibility":"internal"},{"constant":false,"id":55567,"mutability":"mutable","name":"signatures","nameLocation":"9549:10:82","nodeType":"VariableDeclaration","scope":55618,"src":"9532:27:82","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr","typeString":"bytes[]"},"typeName":{"baseType":{"id":55565,"name":"bytes","nodeType":"ElementaryTypeName","src":"9532:5:82","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"id":55566,"nodeType":"ArrayTypeName","src":"9532:7:82","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_storage_$dyn_storage_ptr","typeString":"bytes[]"}},"visibility":"internal"}],"src":"9481:79:82"},"returnParameters":{"id":55571,"nodeType":"ParameterList","parameters":[],"src":"9603:0:82"},"scope":56401,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":55709,"nodeType":"FunctionDefinition","src":"10106:951:82","nodes":[],"body":{"id":55708,"nodeType":"Block","src":"10245:812:82","nodes":[],"statements":[{"assignments":[55633],"declarations":[{"constant":false,"id":55633,"mutability":"mutable","name":"router","nameLocation":"10271:6:82","nodeType":"VariableDeclaration","scope":55708,"src":"10255:22:82","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53739_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":55632,"nodeType":"UserDefinedTypeName","pathNode":{"id":55631,"name":"Storage","nameLocations":["10255:7:82"],"nodeType":"IdentifierPath","referencedDeclaration":53739,"src":"10255:7:82"},"referencedDeclaration":53739,"src":"10255:7:82","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53739_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"}],"id":55636,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":55634,"name":"_getStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56400,"src":"10280:11:82","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$53739_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":55635,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10280:13:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53739_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"10255:38:82"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_enum$_CodeState_$53743","typeString":"enum IRouter.CodeState"},"id":55644,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"expression":{"id":55638,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55633,"src":"10312:6:82","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53739_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":55639,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"10319:5:82","memberName":"codes","nodeType":"MemberAccess","referencedDeclaration":53730,"src":"10312:12:82","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_enum$_CodeState_$53743_$","typeString":"mapping(bytes32 => enum IRouter.CodeState)"}},"id":55641,"indexExpression":{"id":55640,"name":"codeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55620,"src":"10325:6:82","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"10312:20:82","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$53743","typeString":"enum IRouter.CodeState"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":55642,"name":"CodeState","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53743,"src":"10336:9:82","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_CodeState_$53743_$","typeString":"type(enum IRouter.CodeState)"}},"id":55643,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"10346:9:82","memberName":"Validated","nodeType":"MemberAccess","referencedDeclaration":53742,"src":"10336:19:82","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$53743","typeString":"enum IRouter.CodeState"}},"src":"10312:43:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"636f6465206d7573742062652076616c696461746564206265666f72652070726f6772616d206372656174696f6e","id":55645,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"10357:48:82","typeDescriptions":{"typeIdentifier":"t_stringliteral_b5148f5f8f63c81848fb75aafb9815f0b7600419fddac60bd483eec7cf08a631","typeString":"literal_string \"code must be validated before program creation\""},"value":"code must be validated before program creation"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_b5148f5f8f63c81848fb75aafb9815f0b7600419fddac60bd483eec7cf08a631","typeString":"literal_string \"code must be validated before program creation\""}],"id":55637,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"10304:7:82","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":55646,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10304:102:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":55647,"nodeType":"ExpressionStatement","src":"10304:102:82"},{"assignments":[55649],"declarations":[{"constant":false,"id":55649,"mutability":"mutable","name":"baseFeeValue","nameLocation":"10425:12:82","nodeType":"VariableDeclaration","scope":55708,"src":"10417:20:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":55648,"name":"uint128","nodeType":"ElementaryTypeName","src":"10417:7:82","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"id":55652,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":55650,"name":"baseFee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55300,"src":"10440:7:82","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint128_$","typeString":"function () view returns (uint128)"}},"id":55651,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10440:9:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"VariableDeclarationStatement","src":"10417:32:82"},{"assignments":[55654],"declarations":[{"constant":false,"id":55654,"mutability":"mutable","name":"executableBalance","nameLocation":"10467:17:82","nodeType":"VariableDeclaration","scope":55708,"src":"10459:25:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":55653,"name":"uint128","nodeType":"ElementaryTypeName","src":"10459:7:82","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"id":55658,"initialValue":{"commonType":{"typeIdentifier":"t_uint128","typeString":"uint128"},"id":55657,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":55655,"name":"baseFeeValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55649,"src":"10487:12:82","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"3130","id":55656,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10502:2:82","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"src":"10487:17:82","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"VariableDeclarationStatement","src":"10459:45:82"},{"assignments":[55660],"declarations":[{"constant":false,"id":55660,"mutability":"mutable","name":"totalValue","nameLocation":"10523:10:82","nodeType":"VariableDeclaration","scope":55708,"src":"10515:18:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":55659,"name":"uint128","nodeType":"ElementaryTypeName","src":"10515:7:82","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"id":55666,"initialValue":{"commonType":{"typeIdentifier":"t_uint128","typeString":"uint128"},"id":55665,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint128","typeString":"uint128"},"id":55663,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":55661,"name":"baseFeeValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55649,"src":"10536:12:82","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":55662,"name":"executableBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55654,"src":"10551:17:82","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"src":"10536:32:82","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":55664,"name":"_value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55624,"src":"10571:6:82","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"src":"10536:41:82","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"VariableDeclarationStatement","src":"10515:62:82"},{"expression":{"arguments":[{"id":55668,"name":"totalValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55660,"src":"10603:10:82","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint128","typeString":"uint128"}],"id":55667,"name":"_retrieveValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56291,"src":"10588:14:82","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint128_$returns$__$","typeString":"function (uint128)"}},"id":55669,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10588:26:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":55670,"nodeType":"ExpressionStatement","src":"10588:26:82"},{"assignments":[55672],"declarations":[{"constant":false,"id":55672,"mutability":"mutable","name":"actorId","nameLocation":"10783:7:82","nodeType":"VariableDeclaration","scope":55708,"src":"10775:15:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":55671,"name":"address","nodeType":"ElementaryTypeName","src":"10775:7:82","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":55685,"initialValue":{"arguments":[{"expression":{"id":55675,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55633,"src":"10819:6:82","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53739_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":55676,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"10826:11:82","memberName":"mirrorProxy","nodeType":"MemberAccess","referencedDeclaration":53708,"src":"10819:18:82","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"arguments":[{"id":55680,"name":"codeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55620,"src":"10866:6:82","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":55681,"name":"salt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55622,"src":"10874:4:82","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":55678,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"10849:3:82","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":55679,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"10853:12:82","memberName":"encodePacked","nodeType":"MemberAccess","src":"10849:16:82","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":55682,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10849:30:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":55677,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"10839:9:82","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":55683,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10839:41:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":55673,"name":"Clones","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41121,"src":"10793:6:82","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Clones_$41121_$","typeString":"type(library Clones)"}},"id":55674,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10800:18:82","memberName":"cloneDeterministic","nodeType":"MemberAccess","referencedDeclaration":41039,"src":"10793:25:82","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes32_$returns$_t_address_$","typeString":"function (address,bytes32) returns (address)"}},"id":55684,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10793:88:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"10775:106:82"},{"expression":{"id":55692,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"id":55686,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55633,"src":"10892:6:82","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53739_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":55689,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"10899:8:82","memberName":"programs","nodeType":"MemberAccess","referencedDeclaration":53736,"src":"10892:15:82","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bytes32_$","typeString":"mapping(address => bytes32)"}},"id":55690,"indexExpression":{"id":55688,"name":"actorId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55672,"src":"10908:7:82","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"10892:24:82","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":55691,"name":"codeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55620,"src":"10919:6:82","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"10892:33:82","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":55693,"nodeType":"ExpressionStatement","src":"10892:33:82"},{"expression":{"id":55697,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"10935:22:82","subExpression":{"expression":{"id":55694,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55633,"src":"10935:6:82","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53739_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":55696,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"10942:13:82","memberName":"programsCount","nodeType":"MemberAccess","referencedDeclaration":53738,"src":"10935:20:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":55698,"nodeType":"ExpressionStatement","src":"10935:22:82"},{"eventCall":{"arguments":[{"id":55700,"name":"actorId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55672,"src":"10988:7:82","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":55701,"name":"codeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55620,"src":"10997:6:82","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":55699,"name":"ProgramCreated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53826,"src":"10973:14:82","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_bytes32_$returns$__$","typeString":"function (address,bytes32)"}},"id":55702,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10973:31:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":55703,"nodeType":"EmitStatement","src":"10968:36:82"},{"expression":{"components":[{"id":55704,"name":"actorId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55672,"src":"11023:7:82","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":55705,"name":"executableBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55654,"src":"11032:17:82","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"id":55706,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"11022:28:82","typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_uint128_$","typeString":"tuple(address,uint128)"}},"functionReturnParameters":55630,"id":55707,"nodeType":"Return","src":"11015:35:82"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_createProgramWithoutMessage","nameLocation":"10115:28:82","parameters":{"id":55625,"nodeType":"ParameterList","parameters":[{"constant":false,"id":55620,"mutability":"mutable","name":"codeId","nameLocation":"10152:6:82","nodeType":"VariableDeclaration","scope":55709,"src":"10144:14:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":55619,"name":"bytes32","nodeType":"ElementaryTypeName","src":"10144:7:82","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":55622,"mutability":"mutable","name":"salt","nameLocation":"10168:4:82","nodeType":"VariableDeclaration","scope":55709,"src":"10160:12:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":55621,"name":"bytes32","nodeType":"ElementaryTypeName","src":"10160:7:82","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":55624,"mutability":"mutable","name":"_value","nameLocation":"10182:6:82","nodeType":"VariableDeclaration","scope":55709,"src":"10174:14:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":55623,"name":"uint128","nodeType":"ElementaryTypeName","src":"10174:7:82","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"10143:46:82"},"returnParameters":{"id":55630,"nodeType":"ParameterList","parameters":[{"constant":false,"id":55627,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":55709,"src":"10223:7:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":55626,"name":"address","nodeType":"ElementaryTypeName","src":"10223:7:82","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":55629,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":55709,"src":"10232:7:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":55628,"name":"uint128","nodeType":"ElementaryTypeName","src":"10232:7:82","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"10222:18:82"},"scope":56401,"stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"id":55798,"nodeType":"FunctionDefinition","src":"11063:844:82","nodes":[],"body":{"id":55797,"nodeType":"Block","src":"11152:755:82","nodes":[],"statements":[{"assignments":[55719],"declarations":[{"constant":false,"id":55719,"mutability":"mutable","name":"router","nameLocation":"11178:6:82","nodeType":"VariableDeclaration","scope":55797,"src":"11162:22:82","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53739_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":55718,"nodeType":"UserDefinedTypeName","pathNode":{"id":55717,"name":"Storage","nameLocations":["11162:7:82"],"nodeType":"IdentifierPath","referencedDeclaration":53739,"src":"11162:7:82"},"referencedDeclaration":53739,"src":"11162:7:82","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53739_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"}],"id":55722,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":55720,"name":"_getStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56400,"src":"11187:11:82","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$53739_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":55721,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11187:13:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53739_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"11162:38:82"},{"assignments":[55724],"declarations":[{"constant":false,"id":55724,"mutability":"mutable","name":"threshold","nameLocation":"11219:9:82","nodeType":"VariableDeclaration","scope":55797,"src":"11211:17:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":55723,"name":"uint256","nodeType":"ElementaryTypeName","src":"11211:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":55727,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":55725,"name":"validatorsThreshold","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55137,"src":"11231:19:82","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":55726,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11231:21:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"11211:41:82"},{"assignments":[55729],"declarations":[{"constant":false,"id":55729,"mutability":"mutable","name":"messageHash","nameLocation":"11271:11:82","nodeType":"VariableDeclaration","scope":55797,"src":"11263:19:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":55728,"name":"bytes32","nodeType":"ElementaryTypeName","src":"11263:7:82","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":55740,"initialValue":{"arguments":[{"arguments":[{"id":55737,"name":"dataHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55711,"src":"11348:8:82","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":55735,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"11331:3:82","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":55736,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"11335:12:82","memberName":"encodePacked","nodeType":"MemberAccess","src":"11331:16:82","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":55738,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11331:26:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"arguments":[{"id":55732,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"11293:4:82","typeDescriptions":{"typeIdentifier":"t_contract$_Router_$56401","typeString":"contract Router"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Router_$56401","typeString":"contract Router"}],"id":55731,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11285:7:82","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":55730,"name":"address","nodeType":"ElementaryTypeName","src":"11285:7:82","typeDescriptions":{}}},"id":55733,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11285:13:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":55734,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11299:31:82","memberName":"toDataWithIntendedValidatorHash","nodeType":"MemberAccess","referencedDeclaration":43448,"src":"11285:45:82","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_address_$_t_bytes_memory_ptr_$returns$_t_bytes32_$attached_to$_t_address_$","typeString":"function (address,bytes memory) pure returns (bytes32)"}},"id":55739,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11285:73:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"11263:95:82"},{"assignments":[55742],"declarations":[{"constant":false,"id":55742,"mutability":"mutable","name":"validSignatures","nameLocation":"11376:15:82","nodeType":"VariableDeclaration","scope":55797,"src":"11368:23:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":55741,"name":"uint256","nodeType":"ElementaryTypeName","src":"11368:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":55744,"initialValue":{"hexValue":"30","id":55743,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11394:1:82","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"11368:27:82"},{"body":{"id":55788,"nodeType":"Block","src":"11454:368:82","statements":[{"assignments":[55757],"declarations":[{"constant":false,"id":55757,"mutability":"mutable","name":"signature","nameLocation":"11483:9:82","nodeType":"VariableDeclaration","scope":55788,"src":"11468:24:82","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":55756,"name":"bytes","nodeType":"ElementaryTypeName","src":"11468:5:82","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":55761,"initialValue":{"baseExpression":{"id":55758,"name":"signatures","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55714,"src":"11495:10:82","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr","typeString":"bytes calldata[] calldata"}},"id":55760,"indexExpression":{"id":55759,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55746,"src":"11506:1:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"11495:13:82","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"nodeType":"VariableDeclarationStatement","src":"11468:40:82"},{"assignments":[55763],"declarations":[{"constant":false,"id":55763,"mutability":"mutable","name":"validator","nameLocation":"11531:9:82","nodeType":"VariableDeclaration","scope":55788,"src":"11523:17:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":55762,"name":"address","nodeType":"ElementaryTypeName","src":"11523:7:82","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":55768,"initialValue":{"arguments":[{"id":55766,"name":"signature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55757,"src":"11563:9:82","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"expression":{"id":55764,"name":"messageHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55729,"src":"11543:11:82","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":55765,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11555:7:82","memberName":"recover","nodeType":"MemberAccess","referencedDeclaration":43143,"src":"11543:19:82","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$_t_bytes_memory_ptr_$returns$_t_address_$attached_to$_t_bytes32_$","typeString":"function (bytes32,bytes memory) pure returns (address)"}},"id":55767,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11543:30:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"11523:50:82"},{"condition":{"baseExpression":{"expression":{"id":55769,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55719,"src":"11592:6:82","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53739_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":55770,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"11599:10:82","memberName":"validators","nodeType":"MemberAccess","referencedDeclaration":53722,"src":"11592:17:82","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":55772,"indexExpression":{"id":55771,"name":"validator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55763,"src":"11610:9:82","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"11592:28:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":55786,"nodeType":"Block","src":"11742:70:82","statements":[{"expression":{"arguments":[{"hexValue":"66616c7365","id":55782,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"11768:5:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"696e636f7272656374207369676e6174757265","id":55783,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"11775:21:82","typeDescriptions":{"typeIdentifier":"t_stringliteral_641ab7289dc6df3dff0edafbede614b21294e2bb9f09800443d88f57818afe8f","typeString":"literal_string \"incorrect signature\""},"value":"incorrect signature"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_641ab7289dc6df3dff0edafbede614b21294e2bb9f09800443d88f57818afe8f","typeString":"literal_string \"incorrect signature\""}],"id":55781,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"11760:7:82","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":55784,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11760:37:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":55785,"nodeType":"ExpressionStatement","src":"11760:37:82"}]},"id":55787,"nodeType":"IfStatement","src":"11588:224:82","trueBody":{"id":55780,"nodeType":"Block","src":"11622:114:82","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":55776,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":55774,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"11644:17:82","subExpression":{"id":55773,"name":"validSignatures","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55742,"src":"11646:15:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":55775,"name":"threshold","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55724,"src":"11665:9:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11644:30:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":55779,"nodeType":"IfStatement","src":"11640:82:82","trueBody":{"id":55778,"nodeType":"Block","src":"11676:46:82","statements":[{"id":55777,"nodeType":"Break","src":"11698:5:82"}]}}]}}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":55752,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":55749,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55746,"src":"11426:1:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":55750,"name":"signatures","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55714,"src":"11430:10:82","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr","typeString":"bytes calldata[] calldata"}},"id":55751,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11441:6:82","memberName":"length","nodeType":"MemberAccess","src":"11430:17:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11426:21:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":55789,"initializationExpression":{"assignments":[55746],"declarations":[{"constant":false,"id":55746,"mutability":"mutable","name":"i","nameLocation":"11419:1:82","nodeType":"VariableDeclaration","scope":55789,"src":"11411:9:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":55745,"name":"uint256","nodeType":"ElementaryTypeName","src":"11411:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":55748,"initialValue":{"hexValue":"30","id":55747,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11423:1:82","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"11411:13:82"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":55754,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"11449:3:82","subExpression":{"id":55753,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55746,"src":"11449:1:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":55755,"nodeType":"ExpressionStatement","src":"11449:3:82"},"nodeType":"ForStatement","src":"11406:416:82"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":55793,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":55791,"name":"validSignatures","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55742,"src":"11840:15:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":55792,"name":"threshold","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55724,"src":"11859:9:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11840:28:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"6e6f7420656e6f7567682076616c6964207369676e617475726573","id":55794,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"11870:29:82","typeDescriptions":{"typeIdentifier":"t_stringliteral_8852ba723d98bcf316aab69f38fb5da08e0bfb912ef589b19218c396aac3c0bc","typeString":"literal_string \"not enough valid signatures\""},"value":"not enough valid signatures"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_8852ba723d98bcf316aab69f38fb5da08e0bfb912ef589b19218c396aac3c0bc","typeString":"literal_string \"not enough valid signatures\""}],"id":55790,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"11832:7:82","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":55795,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11832:68:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":55796,"nodeType":"ExpressionStatement","src":"11832:68:82"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_validateSignatures","nameLocation":"11072:19:82","parameters":{"id":55715,"nodeType":"ParameterList","parameters":[{"constant":false,"id":55711,"mutability":"mutable","name":"dataHash","nameLocation":"11100:8:82","nodeType":"VariableDeclaration","scope":55798,"src":"11092:16:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":55710,"name":"bytes32","nodeType":"ElementaryTypeName","src":"11092:7:82","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":55714,"mutability":"mutable","name":"signatures","nameLocation":"11127:10:82","nodeType":"VariableDeclaration","scope":55798,"src":"11110:27:82","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr","typeString":"bytes[]"},"typeName":{"baseType":{"id":55712,"name":"bytes","nodeType":"ElementaryTypeName","src":"11110:5:82","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"id":55713,"nodeType":"ArrayTypeName","src":"11110:7:82","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_storage_$dyn_storage_ptr","typeString":"bytes[]"}},"visibility":"internal"}],"src":"11091:47:82"},"returnParameters":{"id":55716,"nodeType":"ParameterList","parameters":[],"src":"11152:0:82"},"scope":56401,"stateMutability":"view","virtual":false,"visibility":"private"},{"id":55894,"nodeType":"FunctionDefinition","src":"11913:1244:82","nodes":[],"body":{"id":55893,"nodeType":"Block","src":"12003:1154:82","nodes":[],"statements":[{"assignments":[55808],"declarations":[{"constant":false,"id":55808,"mutability":"mutable","name":"router","nameLocation":"12029:6:82","nodeType":"VariableDeclaration","scope":55893,"src":"12013:22:82","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53739_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":55807,"nodeType":"UserDefinedTypeName","pathNode":{"id":55806,"name":"Storage","nameLocations":["12013:7:82"],"nodeType":"IdentifierPath","referencedDeclaration":53739,"src":"12013:7:82"},"referencedDeclaration":53739,"src":"12013:7:82","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53739_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"}],"id":55811,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":55809,"name":"_getStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56400,"src":"12038:11:82","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$53739_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":55810,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12038:13:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53739_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"12013:38:82"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":55817,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":55813,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55808,"src":"12083:6:82","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53739_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":55814,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"12090:23:82","memberName":"lastBlockCommitmentHash","nodeType":"MemberAccess","referencedDeclaration":53712,"src":"12083:30:82","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":55815,"name":"blockCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55801,"src":"12117:15:82","typeDescriptions":{"typeIdentifier":"t_struct$_BlockCommitment_$53759_calldata_ptr","typeString":"struct IRouter.BlockCommitment calldata"}},"id":55816,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12133:18:82","memberName":"prevCommitmentHash","nodeType":"MemberAccess","referencedDeclaration":53752,"src":"12117:34:82","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"12083:68:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"696e76616c69642070726576696f757320636f6d6d69746d656e742068617368","id":55818,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"12153:34:82","typeDescriptions":{"typeIdentifier":"t_stringliteral_fef95c9e1944529fb91083689c978504d88f59fdb02e6fd241a073fa572e7d3e","typeString":"literal_string \"invalid previous commitment hash\""},"value":"invalid previous commitment hash"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_fef95c9e1944529fb91083689c978504d88f59fdb02e6fd241a073fa572e7d3e","typeString":"literal_string \"invalid previous commitment hash\""}],"id":55812,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"12062:7:82","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":55819,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12062:135:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":55820,"nodeType":"ExpressionStatement","src":"12062:135:82"},{"expression":{"arguments":[{"arguments":[{"expression":{"id":55823,"name":"blockCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55801,"src":"12234:15:82","typeDescriptions":{"typeIdentifier":"t_struct$_BlockCommitment_$53759_calldata_ptr","typeString":"struct IRouter.BlockCommitment calldata"}},"id":55824,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12250:13:82","memberName":"predBlockHash","nodeType":"MemberAccess","referencedDeclaration":53754,"src":"12234:29:82","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":55822,"name":"_isPredecessorHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55938,"src":"12215:18:82","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$returns$_t_bool_$","typeString":"function (bytes32) view returns (bool)"}},"id":55825,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12215:49:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"616c6c6f776564207072656465636573736f7220626c6f636b206e6f7420666f756e64","id":55826,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"12266:37:82","typeDescriptions":{"typeIdentifier":"t_stringliteral_7d09fbc5a1c193a0826cadcc2903c8170aac2d31f22b53e69a64923153c8207e","typeString":"literal_string \"allowed predecessor block not found\""},"value":"allowed predecessor block not found"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_7d09fbc5a1c193a0826cadcc2903c8170aac2d31f22b53e69a64923153c8207e","typeString":"literal_string \"allowed predecessor block not found\""}],"id":55821,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"12207:7:82","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":55827,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12207:97:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":55828,"nodeType":"ExpressionStatement","src":"12207:97:82"},{"expression":{"id":55834,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":55829,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55808,"src":"12444:6:82","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53739_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":55831,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"12451:23:82","memberName":"lastBlockCommitmentHash","nodeType":"MemberAccess","referencedDeclaration":53712,"src":"12444:30:82","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":55832,"name":"blockCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55801,"src":"12477:15:82","typeDescriptions":{"typeIdentifier":"t_struct$_BlockCommitment_$53759_calldata_ptr","typeString":"struct IRouter.BlockCommitment calldata"}},"id":55833,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12493:9:82","memberName":"blockHash","nodeType":"MemberAccess","referencedDeclaration":53750,"src":"12477:25:82","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"12444:58:82","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":55835,"nodeType":"ExpressionStatement","src":"12444:58:82"},{"assignments":[55837],"declarations":[{"constant":false,"id":55837,"mutability":"mutable","name":"transitionsHashes","nameLocation":"12526:17:82","nodeType":"VariableDeclaration","scope":55893,"src":"12513:30:82","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":55836,"name":"bytes","nodeType":"ElementaryTypeName","src":"12513:5:82","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":55838,"nodeType":"VariableDeclarationStatement","src":"12513:30:82"},{"body":{"id":55874,"nodeType":"Block","src":"12619:255:82","statements":[{"assignments":[55853],"declarations":[{"constant":false,"id":55853,"mutability":"mutable","name":"stateTransition","nameLocation":"12658:15:82","nodeType":"VariableDeclaration","scope":55874,"src":"12633:40:82","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$53776_calldata_ptr","typeString":"struct IRouter.StateTransition"},"typeName":{"id":55852,"nodeType":"UserDefinedTypeName","pathNode":{"id":55851,"name":"StateTransition","nameLocations":["12633:15:82"],"nodeType":"IdentifierPath","referencedDeclaration":53776,"src":"12633:15:82"},"referencedDeclaration":53776,"src":"12633:15:82","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$53776_storage_ptr","typeString":"struct IRouter.StateTransition"}},"visibility":"internal"}],"id":55858,"initialValue":{"baseExpression":{"expression":{"id":55854,"name":"blockCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55801,"src":"12676:15:82","typeDescriptions":{"typeIdentifier":"t_struct$_BlockCommitment_$53759_calldata_ptr","typeString":"struct IRouter.BlockCommitment calldata"}},"id":55855,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12692:11:82","memberName":"transitions","nodeType":"MemberAccess","referencedDeclaration":53758,"src":"12676:27:82","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_StateTransition_$53776_calldata_ptr_$dyn_calldata_ptr","typeString":"struct IRouter.StateTransition calldata[] calldata"}},"id":55857,"indexExpression":{"id":55856,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55840,"src":"12704:1:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"12676:30:82","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$53776_calldata_ptr","typeString":"struct IRouter.StateTransition calldata"}},"nodeType":"VariableDeclarationStatement","src":"12633:73:82"},{"assignments":[55860],"declarations":[{"constant":false,"id":55860,"mutability":"mutable","name":"transitionHash","nameLocation":"12729:14:82","nodeType":"VariableDeclaration","scope":55874,"src":"12721:22:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":55859,"name":"bytes32","nodeType":"ElementaryTypeName","src":"12721:7:82","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":55864,"initialValue":{"arguments":[{"id":55862,"name":"stateTransition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55853,"src":"12765:15:82","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$53776_calldata_ptr","typeString":"struct IRouter.StateTransition calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_StateTransition_$53776_calldata_ptr","typeString":"struct IRouter.StateTransition calldata"}],"id":55861,"name":"_doStateTransition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56156,"src":"12746:18:82","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_StateTransition_$53776_calldata_ptr_$returns$_t_bytes32_$","typeString":"function (struct IRouter.StateTransition calldata) returns (bytes32)"}},"id":55863,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12746:35:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"12721:60:82"},{"expression":{"id":55872,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":55865,"name":"transitionsHashes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55837,"src":"12796:17:82","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":55869,"name":"transitionsHashes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55837,"src":"12829:17:82","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":55870,"name":"transitionHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55860,"src":"12848:14:82","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":55867,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"12816:5:82","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":55866,"name":"bytes","nodeType":"ElementaryTypeName","src":"12816:5:82","typeDescriptions":{}}},"id":55868,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12822:6:82","memberName":"concat","nodeType":"MemberAccess","src":"12816:12:82","typeDescriptions":{"typeIdentifier":"t_function_bytesconcat_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":55871,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12816:47:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"src":"12796:67:82","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":55873,"nodeType":"ExpressionStatement","src":"12796:67:82"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":55847,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":55843,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55840,"src":"12574:1:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"expression":{"id":55844,"name":"blockCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55801,"src":"12578:15:82","typeDescriptions":{"typeIdentifier":"t_struct$_BlockCommitment_$53759_calldata_ptr","typeString":"struct IRouter.BlockCommitment calldata"}},"id":55845,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12594:11:82","memberName":"transitions","nodeType":"MemberAccess","referencedDeclaration":53758,"src":"12578:27:82","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_StateTransition_$53776_calldata_ptr_$dyn_calldata_ptr","typeString":"struct IRouter.StateTransition calldata[] calldata"}},"id":55846,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12606:6:82","memberName":"length","nodeType":"MemberAccess","src":"12578:34:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12574:38:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":55875,"initializationExpression":{"assignments":[55840],"declarations":[{"constant":false,"id":55840,"mutability":"mutable","name":"i","nameLocation":"12567:1:82","nodeType":"VariableDeclaration","scope":55875,"src":"12559:9:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":55839,"name":"uint256","nodeType":"ElementaryTypeName","src":"12559:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":55842,"initialValue":{"hexValue":"30","id":55841,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12571:1:82","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"12559:13:82"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":55849,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"12614:3:82","subExpression":{"id":55848,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55840,"src":"12614:1:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":55850,"nodeType":"ExpressionStatement","src":"12614:3:82"},"nodeType":"ForStatement","src":"12554:320:82"},{"eventCall":{"arguments":[{"expression":{"id":55877,"name":"blockCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55801,"src":"12904:15:82","typeDescriptions":{"typeIdentifier":"t_struct$_BlockCommitment_$53759_calldata_ptr","typeString":"struct IRouter.BlockCommitment calldata"}},"id":55878,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12920:9:82","memberName":"blockHash","nodeType":"MemberAccess","referencedDeclaration":53750,"src":"12904:25:82","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":55876,"name":"BlockCommitted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53805,"src":"12889:14:82","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$returns$__$","typeString":"function (bytes32)"}},"id":55879,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12889:41:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":55880,"nodeType":"EmitStatement","src":"12884:46:82"},{"expression":{"arguments":[{"expression":{"id":55882,"name":"blockCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55801,"src":"12982:15:82","typeDescriptions":{"typeIdentifier":"t_struct$_BlockCommitment_$53759_calldata_ptr","typeString":"struct IRouter.BlockCommitment calldata"}},"id":55883,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12998:9:82","memberName":"blockHash","nodeType":"MemberAccess","referencedDeclaration":53750,"src":"12982:25:82","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":55884,"name":"blockCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55801,"src":"13021:15:82","typeDescriptions":{"typeIdentifier":"t_struct$_BlockCommitment_$53759_calldata_ptr","typeString":"struct IRouter.BlockCommitment calldata"}},"id":55885,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13037:18:82","memberName":"prevCommitmentHash","nodeType":"MemberAccess","referencedDeclaration":53752,"src":"13021:34:82","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":55886,"name":"blockCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55801,"src":"13069:15:82","typeDescriptions":{"typeIdentifier":"t_struct$_BlockCommitment_$53759_calldata_ptr","typeString":"struct IRouter.BlockCommitment calldata"}},"id":55887,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13085:13:82","memberName":"predBlockHash","nodeType":"MemberAccess","referencedDeclaration":53754,"src":"13069:29:82","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"arguments":[{"id":55889,"name":"transitionsHashes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55837,"src":"13122:17:82","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":55888,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"13112:9:82","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":55890,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13112:28:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":55881,"name":"_blockCommitmentHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56180,"src":"12948:20:82","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$_t_bytes32_$_t_bytes32_$_t_bytes32_$returns$_t_bytes32_$","typeString":"function (bytes32,bytes32,bytes32,bytes32) pure returns (bytes32)"}},"id":55891,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12948:202:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":55805,"id":55892,"nodeType":"Return","src":"12941:209:82"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_commitBlock","nameLocation":"11922:12:82","parameters":{"id":55802,"nodeType":"ParameterList","parameters":[{"constant":false,"id":55801,"mutability":"mutable","name":"blockCommitment","nameLocation":"11960:15:82","nodeType":"VariableDeclaration","scope":55894,"src":"11935:40:82","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_BlockCommitment_$53759_calldata_ptr","typeString":"struct IRouter.BlockCommitment"},"typeName":{"id":55800,"nodeType":"UserDefinedTypeName","pathNode":{"id":55799,"name":"BlockCommitment","nameLocations":["11935:15:82"],"nodeType":"IdentifierPath","referencedDeclaration":53759,"src":"11935:15:82"},"referencedDeclaration":53759,"src":"11935:15:82","typeDescriptions":{"typeIdentifier":"t_struct$_BlockCommitment_$53759_storage_ptr","typeString":"struct IRouter.BlockCommitment"}},"visibility":"internal"}],"src":"11934:42:82"},"returnParameters":{"id":55805,"nodeType":"ParameterList","parameters":[{"constant":false,"id":55804,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":55894,"src":"11994:7:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":55803,"name":"bytes32","nodeType":"ElementaryTypeName","src":"11994:7:82","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"11993:9:82"},"scope":56401,"stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"id":55938,"nodeType":"FunctionDefinition","src":"13163:338:82","nodes":[],"body":{"id":55937,"nodeType":"Block","src":"13233:268:82","nodes":[],"statements":[{"body":{"id":55933,"nodeType":"Block","src":"13290:183:82","statements":[{"assignments":[55915],"declarations":[{"constant":false,"id":55915,"mutability":"mutable","name":"ret","nameLocation":"13312:3:82","nodeType":"VariableDeclaration","scope":55933,"src":"13304:11:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":55914,"name":"bytes32","nodeType":"ElementaryTypeName","src":"13304:7:82","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":55919,"initialValue":{"arguments":[{"id":55917,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55902,"src":"13328:1:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":55916,"name":"blockhash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-5,"src":"13318:9:82","typeDescriptions":{"typeIdentifier":"t_function_blockhash_view$_t_uint256_$returns$_t_bytes32_$","typeString":"function (uint256) view returns (bytes32)"}},"id":55918,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13318:12:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"13304:26:82"},{"condition":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":55922,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":55920,"name":"ret","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55915,"src":"13348:3:82","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":55921,"name":"hash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55896,"src":"13355:4:82","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"13348:11:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":55928,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":55926,"name":"ret","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55915,"src":"13415:3:82","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":55927,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13422:1:82","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"13415:8:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":55931,"nodeType":"IfStatement","src":"13411:52:82","trueBody":{"id":55930,"nodeType":"Block","src":"13425:38:82","statements":[{"id":55929,"nodeType":"Break","src":"13443:5:82"}]}},"id":55932,"nodeType":"IfStatement","src":"13344:119:82","trueBody":{"id":55925,"nodeType":"Block","src":"13361:44:82","statements":[{"expression":{"hexValue":"74727565","id":55923,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"13386:4:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":55900,"id":55924,"nodeType":"Return","src":"13379:11:82"}]}}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":55910,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":55908,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55902,"src":"13278:1:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":55909,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13282:1:82","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"13278:5:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":55934,"initializationExpression":{"assignments":[55902],"declarations":[{"constant":false,"id":55902,"mutability":"mutable","name":"i","nameLocation":"13256:1:82","nodeType":"VariableDeclaration","scope":55934,"src":"13248:9:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":55901,"name":"uint256","nodeType":"ElementaryTypeName","src":"13248:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":55907,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":55906,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":55903,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"13260:5:82","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":55904,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13266:6:82","memberName":"number","nodeType":"MemberAccess","src":"13260:12:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":55905,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13275:1:82","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"13260:16:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"13248:28:82"},"isSimpleCounterLoop":false,"loopExpression":{"expression":{"id":55912,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"--","prefix":false,"src":"13285:3:82","subExpression":{"id":55911,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55902,"src":"13285:1:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":55913,"nodeType":"ExpressionStatement","src":"13285:3:82"},"nodeType":"ForStatement","src":"13243:230:82"},{"expression":{"hexValue":"66616c7365","id":55935,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"13489:5:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"functionReturnParameters":55900,"id":55936,"nodeType":"Return","src":"13482:12:82"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_isPredecessorHash","nameLocation":"13172:18:82","parameters":{"id":55897,"nodeType":"ParameterList","parameters":[{"constant":false,"id":55896,"mutability":"mutable","name":"hash","nameLocation":"13199:4:82","nodeType":"VariableDeclaration","scope":55938,"src":"13191:12:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":55895,"name":"bytes32","nodeType":"ElementaryTypeName","src":"13191:7:82","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"13190:14:82"},"returnParameters":{"id":55900,"nodeType":"ParameterList","parameters":[{"constant":false,"id":55899,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":55938,"src":"13227:4:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":55898,"name":"bool","nodeType":"ElementaryTypeName","src":"13227:4:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"13226:6:82"},"scope":56401,"stateMutability":"view","virtual":false,"visibility":"private"},{"id":56156,"nodeType":"FunctionDefinition","src":"13507:2340:82","nodes":[],"body":{"id":56155,"nodeType":"Block","src":"13603:2244:82","nodes":[],"statements":[{"assignments":[55948],"declarations":[{"constant":false,"id":55948,"mutability":"mutable","name":"router","nameLocation":"13629:6:82","nodeType":"VariableDeclaration","scope":56155,"src":"13613:22:82","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53739_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":55947,"nodeType":"UserDefinedTypeName","pathNode":{"id":55946,"name":"Storage","nameLocations":["13613:7:82"],"nodeType":"IdentifierPath","referencedDeclaration":53739,"src":"13613:7:82"},"referencedDeclaration":53739,"src":"13613:7:82","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53739_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"}],"id":55951,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":55949,"name":"_getStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56400,"src":"13638:11:82","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$53739_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":55950,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13638:13:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53739_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"13613:38:82"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":55959,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"expression":{"id":55953,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55948,"src":"13670:6:82","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53739_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":55954,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"13677:8:82","memberName":"programs","nodeType":"MemberAccess","referencedDeclaration":53736,"src":"13670:15:82","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bytes32_$","typeString":"mapping(address => bytes32)"}},"id":55957,"indexExpression":{"expression":{"id":55955,"name":"stateTransition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55941,"src":"13686:15:82","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$53776_calldata_ptr","typeString":"struct IRouter.StateTransition calldata"}},"id":55956,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13702:7:82","memberName":"actorId","nodeType":"MemberAccess","referencedDeclaration":53761,"src":"13686:23:82","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"13670:40:82","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":55958,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13714:1:82","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"13670:45:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"636f756c646e277420706572666f726d207472616e736974696f6e20666f7220756e6b6e6f776e2070726f6772616d","id":55960,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"13717:49:82","typeDescriptions":{"typeIdentifier":"t_stringliteral_31c5a066db04c91ff8a121d71b24335cd54a57cfe01a7cdd47f234348f1a72d6","typeString":"literal_string \"couldn't perform transition for unknown program\""},"value":"couldn't perform transition for unknown program"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_31c5a066db04c91ff8a121d71b24335cd54a57cfe01a7cdd47f234348f1a72d6","typeString":"literal_string \"couldn't perform transition for unknown program\""}],"id":55952,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"13662:7:82","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":55961,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13662:105:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":55962,"nodeType":"ExpressionStatement","src":"13662:105:82"},{"assignments":[55965],"declarations":[{"constant":false,"id":55965,"mutability":"mutable","name":"wrappedVaraActor","nameLocation":"13791:16:82","nodeType":"VariableDeclaration","scope":56155,"src":"13778:29:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IWrappedVara_$54034","typeString":"contract IWrappedVara"},"typeName":{"id":55964,"nodeType":"UserDefinedTypeName","pathNode":{"id":55963,"name":"IWrappedVara","nameLocations":["13778:12:82"],"nodeType":"IdentifierPath","referencedDeclaration":54034,"src":"13778:12:82"},"referencedDeclaration":54034,"src":"13778:12:82","typeDescriptions":{"typeIdentifier":"t_contract$_IWrappedVara_$54034","typeString":"contract IWrappedVara"}},"visibility":"internal"}],"id":55970,"initialValue":{"arguments":[{"expression":{"id":55967,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55948,"src":"13823:6:82","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53739_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":55968,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"13830:11:82","memberName":"wrappedVara","nodeType":"MemberAccess","referencedDeclaration":53710,"src":"13823:18:82","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":55966,"name":"IWrappedVara","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54034,"src":"13810:12:82","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IWrappedVara_$54034_$","typeString":"type(contract IWrappedVara)"}},"id":55969,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13810:32:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IWrappedVara_$54034","typeString":"contract IWrappedVara"}},"nodeType":"VariableDeclarationStatement","src":"13778:64:82"},{"expression":{"arguments":[{"expression":{"id":55974,"name":"stateTransition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55941,"src":"13878:15:82","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$53776_calldata_ptr","typeString":"struct IRouter.StateTransition calldata"}},"id":55975,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13894:7:82","memberName":"actorId","nodeType":"MemberAccess","referencedDeclaration":53761,"src":"13878:23:82","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":55976,"name":"stateTransition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55941,"src":"13903:15:82","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$53776_calldata_ptr","typeString":"struct IRouter.StateTransition calldata"}},"id":55977,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13919:14:82","memberName":"valueToReceive","nodeType":"MemberAccess","referencedDeclaration":53767,"src":"13903:30:82","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint128","typeString":"uint128"}],"expression":{"id":55971,"name":"wrappedVaraActor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55965,"src":"13852:16:82","typeDescriptions":{"typeIdentifier":"t_contract$_IWrappedVara_$54034","typeString":"contract IWrappedVara"}},"id":55973,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13869:8:82","memberName":"transfer","nodeType":"MemberAccess","referencedDeclaration":41873,"src":"13852:25:82","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":55978,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13852:82:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":55979,"nodeType":"ExpressionStatement","src":"13852:82:82"},{"assignments":[55982],"declarations":[{"constant":false,"id":55982,"mutability":"mutable","name":"mirrorActor","nameLocation":"13953:11:82","nodeType":"VariableDeclaration","scope":56155,"src":"13945:19:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IMirror_$53656","typeString":"contract IMirror"},"typeName":{"id":55981,"nodeType":"UserDefinedTypeName","pathNode":{"id":55980,"name":"IMirror","nameLocations":["13945:7:82"],"nodeType":"IdentifierPath","referencedDeclaration":53656,"src":"13945:7:82"},"referencedDeclaration":53656,"src":"13945:7:82","typeDescriptions":{"typeIdentifier":"t_contract$_IMirror_$53656","typeString":"contract IMirror"}},"visibility":"internal"}],"id":55987,"initialValue":{"arguments":[{"expression":{"id":55984,"name":"stateTransition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55941,"src":"13975:15:82","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$53776_calldata_ptr","typeString":"struct IRouter.StateTransition calldata"}},"id":55985,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13991:7:82","memberName":"actorId","nodeType":"MemberAccess","referencedDeclaration":53761,"src":"13975:23:82","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":55983,"name":"IMirror","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53656,"src":"13967:7:82","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IMirror_$53656_$","typeString":"type(contract IMirror)"}},"id":55986,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13967:32:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IMirror_$53656","typeString":"contract IMirror"}},"nodeType":"VariableDeclarationStatement","src":"13945:54:82"},{"assignments":[55989],"declarations":[{"constant":false,"id":55989,"mutability":"mutable","name":"valueClaimsBytes","nameLocation":"14023:16:82","nodeType":"VariableDeclaration","scope":56155,"src":"14010:29:82","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":55988,"name":"bytes","nodeType":"ElementaryTypeName","src":"14010:5:82","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":55990,"nodeType":"VariableDeclarationStatement","src":"14010:29:82"},{"body":{"id":56039,"nodeType":"Block","src":"14115:367:82","statements":[{"assignments":[56005],"declarations":[{"constant":false,"id":56005,"mutability":"mutable","name":"valueClaim","nameLocation":"14149:10:82","nodeType":"VariableDeclaration","scope":56039,"src":"14129:30:82","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_ValueClaim_$53783_calldata_ptr","typeString":"struct IRouter.ValueClaim"},"typeName":{"id":56004,"nodeType":"UserDefinedTypeName","pathNode":{"id":56003,"name":"ValueClaim","nameLocations":["14129:10:82"],"nodeType":"IdentifierPath","referencedDeclaration":53783,"src":"14129:10:82"},"referencedDeclaration":53783,"src":"14129:10:82","typeDescriptions":{"typeIdentifier":"t_struct$_ValueClaim_$53783_storage_ptr","typeString":"struct IRouter.ValueClaim"}},"visibility":"internal"}],"id":56010,"initialValue":{"baseExpression":{"expression":{"id":56006,"name":"stateTransition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55941,"src":"14162:15:82","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$53776_calldata_ptr","typeString":"struct IRouter.StateTransition calldata"}},"id":56007,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14178:11:82","memberName":"valueClaims","nodeType":"MemberAccess","referencedDeclaration":53771,"src":"14162:27:82","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_ValueClaim_$53783_calldata_ptr_$dyn_calldata_ptr","typeString":"struct IRouter.ValueClaim calldata[] calldata"}},"id":56009,"indexExpression":{"id":56008,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55992,"src":"14190:1:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"14162:30:82","typeDescriptions":{"typeIdentifier":"t_struct$_ValueClaim_$53783_calldata_ptr","typeString":"struct IRouter.ValueClaim calldata"}},"nodeType":"VariableDeclarationStatement","src":"14129:63:82"},{"expression":{"id":56026,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":56011,"name":"valueClaimsBytes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55989,"src":"14207:16:82","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":56015,"name":"valueClaimsBytes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55989,"src":"14256:16:82","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"arguments":[{"expression":{"id":56018,"name":"valueClaim","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56005,"src":"14291:10:82","typeDescriptions":{"typeIdentifier":"t_struct$_ValueClaim_$53783_calldata_ptr","typeString":"struct IRouter.ValueClaim calldata"}},"id":56019,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14302:9:82","memberName":"messageId","nodeType":"MemberAccess","referencedDeclaration":53778,"src":"14291:20:82","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":56020,"name":"valueClaim","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56005,"src":"14313:10:82","typeDescriptions":{"typeIdentifier":"t_struct$_ValueClaim_$53783_calldata_ptr","typeString":"struct IRouter.ValueClaim calldata"}},"id":56021,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14324:11:82","memberName":"destination","nodeType":"MemberAccess","referencedDeclaration":53780,"src":"14313:22:82","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":56022,"name":"valueClaim","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56005,"src":"14337:10:82","typeDescriptions":{"typeIdentifier":"t_struct$_ValueClaim_$53783_calldata_ptr","typeString":"struct IRouter.ValueClaim calldata"}},"id":56023,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14348:5:82","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":53782,"src":"14337:16:82","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint128","typeString":"uint128"}],"expression":{"id":56016,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"14274:3:82","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":56017,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"14278:12:82","memberName":"encodePacked","nodeType":"MemberAccess","src":"14274:16:82","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":56024,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14274:80:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":56013,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"14226:5:82","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":56012,"name":"bytes","nodeType":"ElementaryTypeName","src":"14226:5:82","typeDescriptions":{}}},"id":56014,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14232:6:82","memberName":"concat","nodeType":"MemberAccess","src":"14226:12:82","typeDescriptions":{"typeIdentifier":"t_function_bytesconcat_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":56025,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14226:142:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"src":"14207:161:82","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":56027,"nodeType":"ExpressionStatement","src":"14207:161:82"},{"expression":{"arguments":[{"expression":{"id":56031,"name":"valueClaim","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56005,"src":"14408:10:82","typeDescriptions":{"typeIdentifier":"t_struct$_ValueClaim_$53783_calldata_ptr","typeString":"struct IRouter.ValueClaim calldata"}},"id":56032,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14419:9:82","memberName":"messageId","nodeType":"MemberAccess","referencedDeclaration":53778,"src":"14408:20:82","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":56033,"name":"valueClaim","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56005,"src":"14430:10:82","typeDescriptions":{"typeIdentifier":"t_struct$_ValueClaim_$53783_calldata_ptr","typeString":"struct IRouter.ValueClaim calldata"}},"id":56034,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14441:11:82","memberName":"destination","nodeType":"MemberAccess","referencedDeclaration":53780,"src":"14430:22:82","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":56035,"name":"valueClaim","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56005,"src":"14454:10:82","typeDescriptions":{"typeIdentifier":"t_struct$_ValueClaim_$53783_calldata_ptr","typeString":"struct IRouter.ValueClaim calldata"}},"id":56036,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14465:5:82","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":53782,"src":"14454:16:82","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint128","typeString":"uint128"}],"expression":{"id":56028,"name":"mirrorActor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55982,"src":"14383:11:82","typeDescriptions":{"typeIdentifier":"t_contract$_IMirror_$53656","typeString":"contract IMirror"}},"id":56030,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14395:12:82","memberName":"valueClaimed","nodeType":"MemberAccess","referencedDeclaration":53637,"src":"14383:24:82","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_bytes32_$_t_address_$_t_uint128_$returns$__$","typeString":"function (bytes32,address,uint128) external"}},"id":56037,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14383:88:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":56038,"nodeType":"ExpressionStatement","src":"14383:88:82"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":55999,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":55995,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55992,"src":"14070:1:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"expression":{"id":55996,"name":"stateTransition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55941,"src":"14074:15:82","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$53776_calldata_ptr","typeString":"struct IRouter.StateTransition calldata"}},"id":55997,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14090:11:82","memberName":"valueClaims","nodeType":"MemberAccess","referencedDeclaration":53771,"src":"14074:27:82","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_ValueClaim_$53783_calldata_ptr_$dyn_calldata_ptr","typeString":"struct IRouter.ValueClaim calldata[] calldata"}},"id":55998,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14102:6:82","memberName":"length","nodeType":"MemberAccess","src":"14074:34:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14070:38:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":56040,"initializationExpression":{"assignments":[55992],"declarations":[{"constant":false,"id":55992,"mutability":"mutable","name":"i","nameLocation":"14063:1:82","nodeType":"VariableDeclaration","scope":56040,"src":"14055:9:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":55991,"name":"uint256","nodeType":"ElementaryTypeName","src":"14055:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":55994,"initialValue":{"hexValue":"30","id":55993,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14067:1:82","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"14055:13:82"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":56001,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"14110:3:82","subExpression":{"id":56000,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55992,"src":"14110:1:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":56002,"nodeType":"ExpressionStatement","src":"14110:3:82"},"nodeType":"ForStatement","src":"14050:432:82"},{"assignments":[56042],"declarations":[{"constant":false,"id":56042,"mutability":"mutable","name":"messagesHashes","nameLocation":"14505:14:82","nodeType":"VariableDeclaration","scope":56155,"src":"14492:27:82","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":56041,"name":"bytes","nodeType":"ElementaryTypeName","src":"14492:5:82","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":56043,"nodeType":"VariableDeclarationStatement","src":"14492:27:82"},{"body":{"id":56113,"nodeType":"Block","src":"14592:764:82","statements":[{"assignments":[56058],"declarations":[{"constant":false,"id":56058,"mutability":"mutable","name":"outgoingMessage","nameLocation":"14631:15:82","nodeType":"VariableDeclaration","scope":56113,"src":"14606:40:82","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_OutgoingMessage_$53795_calldata_ptr","typeString":"struct IRouter.OutgoingMessage"},"typeName":{"id":56057,"nodeType":"UserDefinedTypeName","pathNode":{"id":56056,"name":"OutgoingMessage","nameLocations":["14606:15:82"],"nodeType":"IdentifierPath","referencedDeclaration":53795,"src":"14606:15:82"},"referencedDeclaration":53795,"src":"14606:15:82","typeDescriptions":{"typeIdentifier":"t_struct$_OutgoingMessage_$53795_storage_ptr","typeString":"struct IRouter.OutgoingMessage"}},"visibility":"internal"}],"id":56063,"initialValue":{"baseExpression":{"expression":{"id":56059,"name":"stateTransition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55941,"src":"14649:15:82","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$53776_calldata_ptr","typeString":"struct IRouter.StateTransition calldata"}},"id":56060,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14665:8:82","memberName":"messages","nodeType":"MemberAccess","referencedDeclaration":53775,"src":"14649:24:82","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_OutgoingMessage_$53795_calldata_ptr_$dyn_calldata_ptr","typeString":"struct IRouter.OutgoingMessage calldata[] calldata"}},"id":56062,"indexExpression":{"id":56061,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56045,"src":"14674:1:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"14649:27:82","typeDescriptions":{"typeIdentifier":"t_struct$_OutgoingMessage_$53795_calldata_ptr","typeString":"struct IRouter.OutgoingMessage calldata"}},"nodeType":"VariableDeclarationStatement","src":"14606:70:82"},{"expression":{"id":56073,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":56064,"name":"messagesHashes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56042,"src":"14691:14:82","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":56068,"name":"messagesHashes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56042,"src":"14721:14:82","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"arguments":[{"id":56070,"name":"outgoingMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56058,"src":"14758:15:82","typeDescriptions":{"typeIdentifier":"t_struct$_OutgoingMessage_$53795_calldata_ptr","typeString":"struct IRouter.OutgoingMessage calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_OutgoingMessage_$53795_calldata_ptr","typeString":"struct IRouter.OutgoingMessage calldata"}],"id":56069,"name":"_outgoingMessageHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56239,"src":"14737:20:82","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_struct$_OutgoingMessage_$53795_calldata_ptr_$returns$_t_bytes32_$","typeString":"function (struct IRouter.OutgoingMessage calldata) pure returns (bytes32)"}},"id":56071,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14737:37:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":56066,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"14708:5:82","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":56065,"name":"bytes","nodeType":"ElementaryTypeName","src":"14708:5:82","typeDescriptions":{}}},"id":56067,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14714:6:82","memberName":"concat","nodeType":"MemberAccess","src":"14708:12:82","typeDescriptions":{"typeIdentifier":"t_function_bytesconcat_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":56072,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14708:67:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"src":"14691:84:82","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":56074,"nodeType":"ExpressionStatement","src":"14691:84:82"},{"condition":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":56079,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":56075,"name":"outgoingMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56058,"src":"14794:15:82","typeDescriptions":{"typeIdentifier":"t_struct$_OutgoingMessage_$53795_calldata_ptr","typeString":"struct IRouter.OutgoingMessage calldata"}},"id":56076,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14810:12:82","memberName":"replyDetails","nodeType":"MemberAccess","referencedDeclaration":53794,"src":"14794:28:82","typeDescriptions":{"typeIdentifier":"t_struct$_ReplyDetails_$53800_calldata_ptr","typeString":"struct IRouter.ReplyDetails calldata"}},"id":56077,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14823:2:82","memberName":"to","nodeType":"MemberAccess","referencedDeclaration":53797,"src":"14794:31:82","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":56078,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14829:1:82","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"14794:36:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":56111,"nodeType":"Block","src":"15029:317:82","statements":[{"expression":{"arguments":[{"expression":{"id":56097,"name":"outgoingMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56058,"src":"15090:15:82","typeDescriptions":{"typeIdentifier":"t_struct$_OutgoingMessage_$53795_calldata_ptr","typeString":"struct IRouter.OutgoingMessage calldata"}},"id":56098,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15106:11:82","memberName":"destination","nodeType":"MemberAccess","referencedDeclaration":53787,"src":"15090:27:82","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":56099,"name":"outgoingMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56058,"src":"15139:15:82","typeDescriptions":{"typeIdentifier":"t_struct$_OutgoingMessage_$53795_calldata_ptr","typeString":"struct IRouter.OutgoingMessage calldata"}},"id":56100,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15155:7:82","memberName":"payload","nodeType":"MemberAccess","referencedDeclaration":53789,"src":"15139:23:82","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},{"expression":{"id":56101,"name":"outgoingMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56058,"src":"15184:15:82","typeDescriptions":{"typeIdentifier":"t_struct$_OutgoingMessage_$53795_calldata_ptr","typeString":"struct IRouter.OutgoingMessage calldata"}},"id":56102,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15200:5:82","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":53791,"src":"15184:21:82","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"expression":{"expression":{"id":56103,"name":"outgoingMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56058,"src":"15227:15:82","typeDescriptions":{"typeIdentifier":"t_struct$_OutgoingMessage_$53795_calldata_ptr","typeString":"struct IRouter.OutgoingMessage calldata"}},"id":56104,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15243:12:82","memberName":"replyDetails","nodeType":"MemberAccess","referencedDeclaration":53794,"src":"15227:28:82","typeDescriptions":{"typeIdentifier":"t_struct$_ReplyDetails_$53800_calldata_ptr","typeString":"struct IRouter.ReplyDetails calldata"}},"id":56105,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15256:2:82","memberName":"to","nodeType":"MemberAccess","referencedDeclaration":53797,"src":"15227:31:82","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"expression":{"id":56106,"name":"outgoingMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56058,"src":"15280:15:82","typeDescriptions":{"typeIdentifier":"t_struct$_OutgoingMessage_$53795_calldata_ptr","typeString":"struct IRouter.OutgoingMessage calldata"}},"id":56107,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15296:12:82","memberName":"replyDetails","nodeType":"MemberAccess","referencedDeclaration":53794,"src":"15280:28:82","typeDescriptions":{"typeIdentifier":"t_struct$_ReplyDetails_$53800_calldata_ptr","typeString":"struct IRouter.ReplyDetails calldata"}},"id":56108,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15309:4:82","memberName":"code","nodeType":"MemberAccess","referencedDeclaration":53799,"src":"15280:33:82","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"},{"typeIdentifier":"t_uint128","typeString":"uint128"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"expression":{"id":56094,"name":"mirrorActor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55982,"src":"15047:11:82","typeDescriptions":{"typeIdentifier":"t_contract$_IMirror_$53656","typeString":"contract IMirror"}},"id":56096,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15059:9:82","memberName":"replySent","nodeType":"MemberAccess","referencedDeclaration":53628,"src":"15047:21:82","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_uint128_$_t_bytes32_$_t_bytes4_$returns$__$","typeString":"function (address,bytes memory,uint128,bytes32,bytes4) external"}},"id":56109,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15047:284:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":56110,"nodeType":"ExpressionStatement","src":"15047:284:82"}]},"id":56112,"nodeType":"IfStatement","src":"14790:556:82","trueBody":{"id":56093,"nodeType":"Block","src":"14832:191:82","statements":[{"expression":{"arguments":[{"expression":{"id":56083,"name":"outgoingMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56058,"src":"14895:15:82","typeDescriptions":{"typeIdentifier":"t_struct$_OutgoingMessage_$53795_calldata_ptr","typeString":"struct IRouter.OutgoingMessage calldata"}},"id":56084,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14911:2:82","memberName":"id","nodeType":"MemberAccess","referencedDeclaration":53785,"src":"14895:18:82","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":56085,"name":"outgoingMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56058,"src":"14915:15:82","typeDescriptions":{"typeIdentifier":"t_struct$_OutgoingMessage_$53795_calldata_ptr","typeString":"struct IRouter.OutgoingMessage calldata"}},"id":56086,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14931:11:82","memberName":"destination","nodeType":"MemberAccess","referencedDeclaration":53787,"src":"14915:27:82","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":56087,"name":"outgoingMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56058,"src":"14944:15:82","typeDescriptions":{"typeIdentifier":"t_struct$_OutgoingMessage_$53795_calldata_ptr","typeString":"struct IRouter.OutgoingMessage calldata"}},"id":56088,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14960:7:82","memberName":"payload","nodeType":"MemberAccess","referencedDeclaration":53789,"src":"14944:23:82","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},{"expression":{"id":56089,"name":"outgoingMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56058,"src":"14969:15:82","typeDescriptions":{"typeIdentifier":"t_struct$_OutgoingMessage_$53795_calldata_ptr","typeString":"struct IRouter.OutgoingMessage calldata"}},"id":56090,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14985:5:82","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":53791,"src":"14969:21:82","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"},{"typeIdentifier":"t_uint128","typeString":"uint128"}],"expression":{"id":56080,"name":"mirrorActor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55982,"src":"14850:11:82","typeDescriptions":{"typeIdentifier":"t_contract$_IMirror_$53656","typeString":"contract IMirror"}},"id":56082,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14862:11:82","memberName":"messageSent","nodeType":"MemberAccess","referencedDeclaration":53615,"src":"14850:23:82","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_bytes32_$_t_address_$_t_bytes_memory_ptr_$_t_uint128_$returns$__$","typeString":"function (bytes32,address,bytes memory,uint128) external"}},"id":56091,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14850:158:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":56092,"nodeType":"ExpressionStatement","src":"14850:158:82"}]}}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":56052,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":56048,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56045,"src":"14550:1:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"expression":{"id":56049,"name":"stateTransition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55941,"src":"14554:15:82","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$53776_calldata_ptr","typeString":"struct IRouter.StateTransition calldata"}},"id":56050,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14570:8:82","memberName":"messages","nodeType":"MemberAccess","referencedDeclaration":53775,"src":"14554:24:82","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_OutgoingMessage_$53795_calldata_ptr_$dyn_calldata_ptr","typeString":"struct IRouter.OutgoingMessage calldata[] calldata"}},"id":56051,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14579:6:82","memberName":"length","nodeType":"MemberAccess","src":"14554:31:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14550:35:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":56114,"initializationExpression":{"assignments":[56045],"declarations":[{"constant":false,"id":56045,"mutability":"mutable","name":"i","nameLocation":"14543:1:82","nodeType":"VariableDeclaration","scope":56114,"src":"14535:9:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":56044,"name":"uint256","nodeType":"ElementaryTypeName","src":"14535:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":56047,"initialValue":{"hexValue":"30","id":56046,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14547:1:82","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"14535:13:82"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":56054,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"14587:3:82","subExpression":{"id":56053,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56045,"src":"14587:1:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":56055,"nodeType":"ExpressionStatement","src":"14587:3:82"},"nodeType":"ForStatement","src":"14530:826:82"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":56121,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":56115,"name":"stateTransition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55941,"src":"15370:15:82","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$53776_calldata_ptr","typeString":"struct IRouter.StateTransition calldata"}},"id":56116,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15386:9:82","memberName":"inheritor","nodeType":"MemberAccess","referencedDeclaration":53765,"src":"15370:25:82","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":56119,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15407:1:82","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":56118,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"15399:7:82","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":56117,"name":"address","nodeType":"ElementaryTypeName","src":"15399:7:82","typeDescriptions":{}}},"id":56120,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15399:10:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"15370:39:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":56130,"nodeType":"IfStatement","src":"15366:121:82","trueBody":{"id":56129,"nodeType":"Block","src":"15411:76:82","statements":[{"expression":{"arguments":[{"expression":{"id":56125,"name":"stateTransition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55941,"src":"15450:15:82","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$53776_calldata_ptr","typeString":"struct IRouter.StateTransition calldata"}},"id":56126,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15466:9:82","memberName":"inheritor","nodeType":"MemberAccess","referencedDeclaration":53765,"src":"15450:25:82","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":56122,"name":"mirrorActor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55982,"src":"15425:11:82","typeDescriptions":{"typeIdentifier":"t_contract$_IMirror_$53656","typeString":"contract IMirror"}},"id":56124,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15437:12:82","memberName":"setInheritor","nodeType":"MemberAccess","referencedDeclaration":53604,"src":"15425:24:82","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$returns$__$","typeString":"function (address) external"}},"id":56127,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15425:51:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":56128,"nodeType":"ExpressionStatement","src":"15425:51:82"}]}},{"expression":{"arguments":[{"expression":{"id":56134,"name":"stateTransition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55941,"src":"15521:15:82","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$53776_calldata_ptr","typeString":"struct IRouter.StateTransition calldata"}},"id":56135,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15537:12:82","memberName":"newStateHash","nodeType":"MemberAccess","referencedDeclaration":53763,"src":"15521:28:82","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":56131,"name":"mirrorActor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55982,"src":"15497:11:82","typeDescriptions":{"typeIdentifier":"t_contract$_IMirror_$53656","typeString":"contract IMirror"}},"id":56133,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15509:11:82","memberName":"updateState","nodeType":"MemberAccess","referencedDeclaration":53599,"src":"15497:23:82","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_bytes32_$returns$__$","typeString":"function (bytes32) external"}},"id":56136,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15497:53:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":56137,"nodeType":"ExpressionStatement","src":"15497:53:82"},{"expression":{"arguments":[{"expression":{"id":56139,"name":"stateTransition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55941,"src":"15602:15:82","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$53776_calldata_ptr","typeString":"struct IRouter.StateTransition calldata"}},"id":56140,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15618:7:82","memberName":"actorId","nodeType":"MemberAccess","referencedDeclaration":53761,"src":"15602:23:82","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":56141,"name":"stateTransition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55941,"src":"15639:15:82","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$53776_calldata_ptr","typeString":"struct IRouter.StateTransition calldata"}},"id":56142,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15655:12:82","memberName":"newStateHash","nodeType":"MemberAccess","referencedDeclaration":53763,"src":"15639:28:82","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":56143,"name":"stateTransition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55941,"src":"15681:15:82","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$53776_calldata_ptr","typeString":"struct IRouter.StateTransition calldata"}},"id":56144,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15697:9:82","memberName":"inheritor","nodeType":"MemberAccess","referencedDeclaration":53765,"src":"15681:25:82","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":56145,"name":"stateTransition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55941,"src":"15720:15:82","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$53776_calldata_ptr","typeString":"struct IRouter.StateTransition calldata"}},"id":56146,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15736:14:82","memberName":"valueToReceive","nodeType":"MemberAccess","referencedDeclaration":53767,"src":"15720:30:82","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"arguments":[{"id":56148,"name":"valueClaimsBytes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55989,"src":"15774:16:82","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":56147,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"15764:9:82","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":56149,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15764:27:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"arguments":[{"id":56151,"name":"messagesHashes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56042,"src":"15815:14:82","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":56150,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"15805:9:82","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":56152,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15805:25:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint128","typeString":"uint128"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":56138,"name":"_stateTransitionHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56210,"src":"15568:20:82","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_address_$_t_bytes32_$_t_address_$_t_uint128_$_t_bytes32_$_t_bytes32_$returns$_t_bytes32_$","typeString":"function (address,bytes32,address,uint128,bytes32,bytes32) pure returns (bytes32)"}},"id":56153,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15568:272:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":55945,"id":56154,"nodeType":"Return","src":"15561:279:82"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_doStateTransition","nameLocation":"13516:18:82","parameters":{"id":55942,"nodeType":"ParameterList","parameters":[{"constant":false,"id":55941,"mutability":"mutable","name":"stateTransition","nameLocation":"13560:15:82","nodeType":"VariableDeclaration","scope":56156,"src":"13535:40:82","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$53776_calldata_ptr","typeString":"struct IRouter.StateTransition"},"typeName":{"id":55940,"nodeType":"UserDefinedTypeName","pathNode":{"id":55939,"name":"StateTransition","nameLocations":["13535:15:82"],"nodeType":"IdentifierPath","referencedDeclaration":53776,"src":"13535:15:82"},"referencedDeclaration":53776,"src":"13535:15:82","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$53776_storage_ptr","typeString":"struct IRouter.StateTransition"}},"visibility":"internal"}],"src":"13534:42:82"},"returnParameters":{"id":55945,"nodeType":"ParameterList","parameters":[{"constant":false,"id":55944,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":56156,"src":"13594:7:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":55943,"name":"bytes32","nodeType":"ElementaryTypeName","src":"13594:7:82","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"13593:9:82"},"scope":56401,"stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"id":56180,"nodeType":"FunctionDefinition","src":"15853:320:82","nodes":[],"body":{"id":56179,"nodeType":"Block","src":"16053:120:82","nodes":[],"statements":[{"expression":{"arguments":[{"arguments":[{"id":56172,"name":"blockHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56158,"src":"16097:9:82","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":56173,"name":"prevCommitmentHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56160,"src":"16108:18:82","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":56174,"name":"predBlockHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56162,"src":"16128:13:82","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":56175,"name":"transitionsHashesHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56164,"src":"16143:21:82","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":56170,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"16080:3:82","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":56171,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"16084:12:82","memberName":"encodePacked","nodeType":"MemberAccess","src":"16080:16:82","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":56176,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16080:85:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":56169,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"16070:9:82","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":56177,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16070:96:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":56168,"id":56178,"nodeType":"Return","src":"16063:103:82"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_blockCommitmentHash","nameLocation":"15862:20:82","parameters":{"id":56165,"nodeType":"ParameterList","parameters":[{"constant":false,"id":56158,"mutability":"mutable","name":"blockHash","nameLocation":"15900:9:82","nodeType":"VariableDeclaration","scope":56180,"src":"15892:17:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":56157,"name":"bytes32","nodeType":"ElementaryTypeName","src":"15892:7:82","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":56160,"mutability":"mutable","name":"prevCommitmentHash","nameLocation":"15927:18:82","nodeType":"VariableDeclaration","scope":56180,"src":"15919:26:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":56159,"name":"bytes32","nodeType":"ElementaryTypeName","src":"15919:7:82","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":56162,"mutability":"mutable","name":"predBlockHash","nameLocation":"15963:13:82","nodeType":"VariableDeclaration","scope":56180,"src":"15955:21:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":56161,"name":"bytes32","nodeType":"ElementaryTypeName","src":"15955:7:82","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":56164,"mutability":"mutable","name":"transitionsHashesHash","nameLocation":"15994:21:82","nodeType":"VariableDeclaration","scope":56180,"src":"15986:29:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":56163,"name":"bytes32","nodeType":"ElementaryTypeName","src":"15986:7:82","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"15882:139:82"},"returnParameters":{"id":56168,"nodeType":"ParameterList","parameters":[{"constant":false,"id":56167,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":56180,"src":"16044:7:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":56166,"name":"bytes32","nodeType":"ElementaryTypeName","src":"16044:7:82","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"16043:9:82"},"scope":56401,"stateMutability":"pure","virtual":false,"visibility":"private"},{"id":56210,"nodeType":"FunctionDefinition","src":"16179:410:82","nodes":[],"body":{"id":56209,"nodeType":"Block","src":"16429:160:82","nodes":[],"statements":[{"expression":{"arguments":[{"arguments":[{"id":56200,"name":"actorId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56182,"src":"16486:7:82","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":56201,"name":"newStateHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56184,"src":"16495:12:82","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":56202,"name":"inheritor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56186,"src":"16509:9:82","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":56203,"name":"valueToReceive","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56188,"src":"16520:14:82","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"id":56204,"name":"valueClaimsHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56190,"src":"16536:15:82","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":56205,"name":"messagesHashesHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56192,"src":"16553:18:82","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint128","typeString":"uint128"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":56198,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"16469:3:82","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":56199,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"16473:12:82","memberName":"encodePacked","nodeType":"MemberAccess","src":"16469:16:82","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":56206,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16469:103:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":56197,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"16446:9:82","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":56207,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16446:136:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":56196,"id":56208,"nodeType":"Return","src":"16439:143:82"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_stateTransitionHash","nameLocation":"16188:20:82","parameters":{"id":56193,"nodeType":"ParameterList","parameters":[{"constant":false,"id":56182,"mutability":"mutable","name":"actorId","nameLocation":"16226:7:82","nodeType":"VariableDeclaration","scope":56210,"src":"16218:15:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":56181,"name":"address","nodeType":"ElementaryTypeName","src":"16218:7:82","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":56184,"mutability":"mutable","name":"newStateHash","nameLocation":"16251:12:82","nodeType":"VariableDeclaration","scope":56210,"src":"16243:20:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":56183,"name":"bytes32","nodeType":"ElementaryTypeName","src":"16243:7:82","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":56186,"mutability":"mutable","name":"inheritor","nameLocation":"16281:9:82","nodeType":"VariableDeclaration","scope":56210,"src":"16273:17:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":56185,"name":"address","nodeType":"ElementaryTypeName","src":"16273:7:82","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":56188,"mutability":"mutable","name":"valueToReceive","nameLocation":"16308:14:82","nodeType":"VariableDeclaration","scope":56210,"src":"16300:22:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":56187,"name":"uint128","nodeType":"ElementaryTypeName","src":"16300:7:82","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":56190,"mutability":"mutable","name":"valueClaimsHash","nameLocation":"16340:15:82","nodeType":"VariableDeclaration","scope":56210,"src":"16332:23:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":56189,"name":"bytes32","nodeType":"ElementaryTypeName","src":"16332:7:82","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":56192,"mutability":"mutable","name":"messagesHashesHash","nameLocation":"16373:18:82","nodeType":"VariableDeclaration","scope":56210,"src":"16365:26:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":56191,"name":"bytes32","nodeType":"ElementaryTypeName","src":"16365:7:82","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"16208:189:82"},"returnParameters":{"id":56196,"nodeType":"ParameterList","parameters":[{"constant":false,"id":56195,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":56210,"src":"16420:7:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":56194,"name":"bytes32","nodeType":"ElementaryTypeName","src":"16420:7:82","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"16419:9:82"},"scope":56401,"stateMutability":"pure","virtual":false,"visibility":"private"},{"id":56239,"nodeType":"FunctionDefinition","src":"16595:451:82","nodes":[],"body":{"id":56238,"nodeType":"Block","src":"16698:348:82","nodes":[],"statements":[{"expression":{"arguments":[{"arguments":[{"expression":{"id":56221,"name":"outgoingMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56213,"src":"16772:15:82","typeDescriptions":{"typeIdentifier":"t_struct$_OutgoingMessage_$53795_calldata_ptr","typeString":"struct IRouter.OutgoingMessage calldata"}},"id":56222,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"16788:2:82","memberName":"id","nodeType":"MemberAccess","referencedDeclaration":53785,"src":"16772:18:82","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":56223,"name":"outgoingMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56213,"src":"16808:15:82","typeDescriptions":{"typeIdentifier":"t_struct$_OutgoingMessage_$53795_calldata_ptr","typeString":"struct IRouter.OutgoingMessage calldata"}},"id":56224,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"16824:11:82","memberName":"destination","nodeType":"MemberAccess","referencedDeclaration":53787,"src":"16808:27:82","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":56225,"name":"outgoingMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56213,"src":"16853:15:82","typeDescriptions":{"typeIdentifier":"t_struct$_OutgoingMessage_$53795_calldata_ptr","typeString":"struct IRouter.OutgoingMessage calldata"}},"id":56226,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"16869:7:82","memberName":"payload","nodeType":"MemberAccess","referencedDeclaration":53789,"src":"16853:23:82","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},{"expression":{"id":56227,"name":"outgoingMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56213,"src":"16894:15:82","typeDescriptions":{"typeIdentifier":"t_struct$_OutgoingMessage_$53795_calldata_ptr","typeString":"struct IRouter.OutgoingMessage calldata"}},"id":56228,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"16910:5:82","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":53791,"src":"16894:21:82","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"expression":{"expression":{"id":56229,"name":"outgoingMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56213,"src":"16933:15:82","typeDescriptions":{"typeIdentifier":"t_struct$_OutgoingMessage_$53795_calldata_ptr","typeString":"struct IRouter.OutgoingMessage calldata"}},"id":56230,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"16949:12:82","memberName":"replyDetails","nodeType":"MemberAccess","referencedDeclaration":53794,"src":"16933:28:82","typeDescriptions":{"typeIdentifier":"t_struct$_ReplyDetails_$53800_calldata_ptr","typeString":"struct IRouter.ReplyDetails calldata"}},"id":56231,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"16962:2:82","memberName":"to","nodeType":"MemberAccess","referencedDeclaration":53797,"src":"16933:31:82","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"expression":{"id":56232,"name":"outgoingMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56213,"src":"16982:15:82","typeDescriptions":{"typeIdentifier":"t_struct$_OutgoingMessage_$53795_calldata_ptr","typeString":"struct IRouter.OutgoingMessage calldata"}},"id":56233,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"16998:12:82","memberName":"replyDetails","nodeType":"MemberAccess","referencedDeclaration":53794,"src":"16982:28:82","typeDescriptions":{"typeIdentifier":"t_struct$_ReplyDetails_$53800_calldata_ptr","typeString":"struct IRouter.ReplyDetails calldata"}},"id":56234,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"17011:4:82","memberName":"code","nodeType":"MemberAccess","referencedDeclaration":53799,"src":"16982:33:82","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"},{"typeIdentifier":"t_uint128","typeString":"uint128"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"expression":{"id":56219,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"16738:3:82","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":56220,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"16742:12:82","memberName":"encodePacked","nodeType":"MemberAccess","src":"16738:16:82","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":56235,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16738:291:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":56218,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"16715:9:82","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":56236,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16715:324:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":56217,"id":56237,"nodeType":"Return","src":"16708:331:82"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_outgoingMessageHash","nameLocation":"16604:20:82","parameters":{"id":56214,"nodeType":"ParameterList","parameters":[{"constant":false,"id":56213,"mutability":"mutable","name":"outgoingMessage","nameLocation":"16650:15:82","nodeType":"VariableDeclaration","scope":56239,"src":"16625:40:82","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_OutgoingMessage_$53795_calldata_ptr","typeString":"struct IRouter.OutgoingMessage"},"typeName":{"id":56212,"nodeType":"UserDefinedTypeName","pathNode":{"id":56211,"name":"OutgoingMessage","nameLocations":["16625:15:82"],"nodeType":"IdentifierPath","referencedDeclaration":53795,"src":"16625:15:82"},"referencedDeclaration":53795,"src":"16625:15:82","typeDescriptions":{"typeIdentifier":"t_struct$_OutgoingMessage_$53795_storage_ptr","typeString":"struct IRouter.OutgoingMessage"}},"visibility":"internal"}],"src":"16624:42:82"},"returnParameters":{"id":56217,"nodeType":"ParameterList","parameters":[{"constant":false,"id":56216,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":56239,"src":"16689:7:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":56215,"name":"bytes32","nodeType":"ElementaryTypeName","src":"16689:7:82","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"16688:9:82"},"scope":56401,"stateMutability":"pure","virtual":false,"visibility":"private"},{"id":56258,"nodeType":"FunctionDefinition","src":"17052:192:82","nodes":[],"body":{"id":56257,"nodeType":"Block","src":"17152:92:82","nodes":[],"statements":[{"expression":{"arguments":[{"arguments":[{"expression":{"id":56250,"name":"codeCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56242,"src":"17196:14:82","typeDescriptions":{"typeIdentifier":"t_struct$_CodeCommitment_$53748_calldata_ptr","typeString":"struct IRouter.CodeCommitment calldata"}},"id":56251,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"17211:2:82","memberName":"id","nodeType":"MemberAccess","referencedDeclaration":53745,"src":"17196:17:82","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":56252,"name":"codeCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56242,"src":"17215:14:82","typeDescriptions":{"typeIdentifier":"t_struct$_CodeCommitment_$53748_calldata_ptr","typeString":"struct IRouter.CodeCommitment calldata"}},"id":56253,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"17230:5:82","memberName":"valid","nodeType":"MemberAccess","referencedDeclaration":53747,"src":"17215:20:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":56248,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"17179:3:82","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":56249,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"17183:12:82","memberName":"encodePacked","nodeType":"MemberAccess","src":"17179:16:82","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":56254,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17179:57:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":56247,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"17169:9:82","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":56255,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17169:68:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":56246,"id":56256,"nodeType":"Return","src":"17162:75:82"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_codeCommitmentHash","nameLocation":"17061:19:82","parameters":{"id":56243,"nodeType":"ParameterList","parameters":[{"constant":false,"id":56242,"mutability":"mutable","name":"codeCommitment","nameLocation":"17105:14:82","nodeType":"VariableDeclaration","scope":56258,"src":"17081:38:82","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_CodeCommitment_$53748_calldata_ptr","typeString":"struct IRouter.CodeCommitment"},"typeName":{"id":56241,"nodeType":"UserDefinedTypeName","pathNode":{"id":56240,"name":"CodeCommitment","nameLocations":["17081:14:82"],"nodeType":"IdentifierPath","referencedDeclaration":53748,"src":"17081:14:82"},"referencedDeclaration":53748,"src":"17081:14:82","typeDescriptions":{"typeIdentifier":"t_struct$_CodeCommitment_$53748_storage_ptr","typeString":"struct IRouter.CodeCommitment"}},"visibility":"internal"}],"src":"17080:40:82"},"returnParameters":{"id":56246,"nodeType":"ParameterList","parameters":[{"constant":false,"id":56245,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":56258,"src":"17143:7:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":56244,"name":"bytes32","nodeType":"ElementaryTypeName","src":"17143:7:82","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"17142:9:82"},"scope":56401,"stateMutability":"pure","virtual":false,"visibility":"private"},{"id":56291,"nodeType":"FunctionDefinition","src":"17250:257:82","nodes":[],"body":{"id":56290,"nodeType":"Block","src":"17298:209:82","nodes":[],"statements":[{"assignments":[56265],"declarations":[{"constant":false,"id":56265,"mutability":"mutable","name":"router","nameLocation":"17324:6:82","nodeType":"VariableDeclaration","scope":56290,"src":"17308:22:82","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53739_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":56264,"nodeType":"UserDefinedTypeName","pathNode":{"id":56263,"name":"Storage","nameLocations":["17308:7:82"],"nodeType":"IdentifierPath","referencedDeclaration":53739,"src":"17308:7:82"},"referencedDeclaration":53739,"src":"17308:7:82","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53739_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"}],"id":56268,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":56266,"name":"_getStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56400,"src":"17333:11:82","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$53739_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":56267,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17333:13:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53739_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"17308:38:82"},{"assignments":[56270],"declarations":[{"constant":false,"id":56270,"mutability":"mutable","name":"success","nameLocation":"17362:7:82","nodeType":"VariableDeclaration","scope":56290,"src":"17357:12:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":56269,"name":"bool","nodeType":"ElementaryTypeName","src":"17357:4:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":56284,"initialValue":{"arguments":[{"expression":{"id":56276,"name":"tx","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-26,"src":"17412:2:82","typeDescriptions":{"typeIdentifier":"t_magic_transaction","typeString":"tx"}},"id":56277,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"17415:6:82","memberName":"origin","nodeType":"MemberAccess","src":"17412:9:82","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":56280,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"17431:4:82","typeDescriptions":{"typeIdentifier":"t_contract$_Router_$56401","typeString":"contract Router"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Router_$56401","typeString":"contract Router"}],"id":56279,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"17423:7:82","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":56278,"name":"address","nodeType":"ElementaryTypeName","src":"17423:7:82","typeDescriptions":{}}},"id":56281,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17423:13:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":56282,"name":"_value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56260,"src":"17438:6:82","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint128","typeString":"uint128"}],"expression":{"arguments":[{"expression":{"id":56272,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56265,"src":"17379:6:82","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53739_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":56273,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"17386:11:82","memberName":"wrappedVara","nodeType":"MemberAccess","referencedDeclaration":53710,"src":"17379:18:82","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":56271,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41906,"src":"17372:6:82","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$41906_$","typeString":"type(contract IERC20)"}},"id":56274,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17372:26:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$41906","typeString":"contract IERC20"}},"id":56275,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"17399:12:82","memberName":"transferFrom","nodeType":"MemberAccess","referencedDeclaration":41905,"src":"17372:39:82","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,address,uint256) external returns (bool)"}},"id":56283,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17372:73:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"VariableDeclarationStatement","src":"17357:88:82"},{"expression":{"arguments":[{"id":56286,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56270,"src":"17464:7:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"6661696c656420746f207265747269657665205756617261","id":56287,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"17473:26:82","typeDescriptions":{"typeIdentifier":"t_stringliteral_3257f3c05b2e57b37b1b4545fc8e3f040a16378fd14b34b1b901c2ec9b919712","typeString":"literal_string \"failed to retrieve WVara\""},"value":"failed to retrieve WVara"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_3257f3c05b2e57b37b1b4545fc8e3f040a16378fd14b34b1b901c2ec9b919712","typeString":"literal_string \"failed to retrieve WVara\""}],"id":56285,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"17456:7:82","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":56288,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17456:44:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":56289,"nodeType":"ExpressionStatement","src":"17456:44:82"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_retrieveValue","nameLocation":"17259:14:82","parameters":{"id":56261,"nodeType":"ParameterList","parameters":[{"constant":false,"id":56260,"mutability":"mutable","name":"_value","nameLocation":"17282:6:82","nodeType":"VariableDeclaration","scope":56291,"src":"17274:14:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":56259,"name":"uint128","nodeType":"ElementaryTypeName","src":"17274:7:82","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"17273:16:82"},"returnParameters":{"id":56262,"nodeType":"ParameterList","parameters":[],"src":"17298:0:82"},"scope":56401,"stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"id":56332,"nodeType":"FunctionDefinition","src":"17513:317:82","nodes":[],"body":{"id":56331,"nodeType":"Block","src":"17549:281:82","nodes":[],"statements":[{"assignments":[56296],"declarations":[{"constant":false,"id":56296,"mutability":"mutable","name":"router","nameLocation":"17575:6:82","nodeType":"VariableDeclaration","scope":56331,"src":"17559:22:82","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53739_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":56295,"nodeType":"UserDefinedTypeName","pathNode":{"id":56294,"name":"Storage","nameLocations":["17559:7:82"],"nodeType":"IdentifierPath","referencedDeclaration":53739,"src":"17559:7:82"},"referencedDeclaration":53739,"src":"17559:7:82","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53739_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"}],"id":56299,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":56297,"name":"_getStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56400,"src":"17584:11:82","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$53739_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":56298,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17584:13:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53739_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"17559:38:82"},{"body":{"id":56325,"nodeType":"Block","src":"17667:118:82","statements":[{"assignments":[56313],"declarations":[{"constant":false,"id":56313,"mutability":"mutable","name":"validator","nameLocation":"17689:9:82","nodeType":"VariableDeclaration","scope":56325,"src":"17681:17:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":56312,"name":"address","nodeType":"ElementaryTypeName","src":"17681:7:82","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":56318,"initialValue":{"baseExpression":{"expression":{"id":56314,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56296,"src":"17701:6:82","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53739_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":56315,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"17708:14:82","memberName":"validatorsKeys","nodeType":"MemberAccess","referencedDeclaration":53725,"src":"17701:21:82","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":56317,"indexExpression":{"id":56316,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56301,"src":"17723:1:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"17701:24:82","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"17681:44:82"},{"expression":{"id":56323,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"delete","prefix":true,"src":"17739:35:82","subExpression":{"baseExpression":{"expression":{"id":56319,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56296,"src":"17746:6:82","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53739_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":56320,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"17753:10:82","memberName":"validators","nodeType":"MemberAccess","referencedDeclaration":53722,"src":"17746:17:82","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":56322,"indexExpression":{"id":56321,"name":"validator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56313,"src":"17764:9:82","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"17746:28:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":56324,"nodeType":"ExpressionStatement","src":"17739:35:82"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":56308,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":56304,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56301,"src":"17628:1:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"expression":{"id":56305,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56296,"src":"17632:6:82","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53739_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":56306,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"17639:14:82","memberName":"validatorsKeys","nodeType":"MemberAccess","referencedDeclaration":53725,"src":"17632:21:82","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":56307,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"17654:6:82","memberName":"length","nodeType":"MemberAccess","src":"17632:28:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17628:32:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":56326,"initializationExpression":{"assignments":[56301],"declarations":[{"constant":false,"id":56301,"mutability":"mutable","name":"i","nameLocation":"17621:1:82","nodeType":"VariableDeclaration","scope":56326,"src":"17613:9:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":56300,"name":"uint256","nodeType":"ElementaryTypeName","src":"17613:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":56303,"initialValue":{"hexValue":"30","id":56302,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17625:1:82","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"17613:13:82"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":56310,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"17662:3:82","subExpression":{"id":56309,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56301,"src":"17662:1:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":56311,"nodeType":"ExpressionStatement","src":"17662:3:82"},"nodeType":"ForStatement","src":"17608:177:82"},{"expression":{"id":56329,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"delete","prefix":true,"src":"17795:28:82","subExpression":{"expression":{"id":56327,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56296,"src":"17802:6:82","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53739_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":56328,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"17809:14:82","memberName":"validatorsKeys","nodeType":"MemberAccess","referencedDeclaration":53725,"src":"17802:21:82","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":56330,"nodeType":"ExpressionStatement","src":"17795:28:82"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_cleanValidators","nameLocation":"17522:16:82","parameters":{"id":56292,"nodeType":"ParameterList","parameters":[],"src":"17538:2:82"},"returnParameters":{"id":56293,"nodeType":"ParameterList","parameters":[],"src":"17549:0:82"},"scope":56401,"stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"id":56387,"nodeType":"FunctionDefinition","src":"17836:442:82","nodes":[],"body":{"id":56386,"nodeType":"Block","src":"17903:375:82","nodes":[],"statements":[{"assignments":[56340],"declarations":[{"constant":false,"id":56340,"mutability":"mutable","name":"router","nameLocation":"17929:6:82","nodeType":"VariableDeclaration","scope":56386,"src":"17913:22:82","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53739_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":56339,"nodeType":"UserDefinedTypeName","pathNode":{"id":56338,"name":"Storage","nameLocations":["17913:7:82"],"nodeType":"IdentifierPath","referencedDeclaration":53739,"src":"17913:7:82"},"referencedDeclaration":53739,"src":"17913:7:82","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53739_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"}],"id":56343,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":56341,"name":"_getStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56400,"src":"17938:11:82","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$53739_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":56342,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17938:13:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53739_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"17913:38:82"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":56349,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":56345,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56340,"src":"17970:6:82","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53739_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":56346,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"17977:14:82","memberName":"validatorsKeys","nodeType":"MemberAccess","referencedDeclaration":53725,"src":"17970:21:82","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":56347,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"17992:6:82","memberName":"length","nodeType":"MemberAccess","src":"17970:28:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":56348,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18002:1:82","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"17970:33:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"70726576696f75732076616c696461746f727320776572656e27742072656d6f766564","id":56350,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"18005:37:82","typeDescriptions":{"typeIdentifier":"t_stringliteral_cbe432dd5148cbcd3965634d2fa4c608dba4822bc479da840b7f667e6442b9d2","typeString":"literal_string \"previous validators weren't removed\""},"value":"previous validators weren't removed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_cbe432dd5148cbcd3965634d2fa4c608dba4822bc479da840b7f667e6442b9d2","typeString":"literal_string \"previous validators weren't removed\""}],"id":56344,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"17962:7:82","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":56351,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17962:81:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":56352,"nodeType":"ExpressionStatement","src":"17962:81:82"},{"body":{"id":56378,"nodeType":"Block","src":"18108:113:82","statements":[{"assignments":[56365],"declarations":[{"constant":false,"id":56365,"mutability":"mutable","name":"validator","nameLocation":"18130:9:82","nodeType":"VariableDeclaration","scope":56378,"src":"18122:17:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":56364,"name":"address","nodeType":"ElementaryTypeName","src":"18122:7:82","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":56369,"initialValue":{"baseExpression":{"id":56366,"name":"_validatorsArray","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56335,"src":"18142:16:82","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":56368,"indexExpression":{"id":56367,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56354,"src":"18159:1:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"18142:19:82","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"18122:39:82"},{"expression":{"id":56376,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"id":56370,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56340,"src":"18175:6:82","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53739_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":56373,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"18182:10:82","memberName":"validators","nodeType":"MemberAccess","referencedDeclaration":53722,"src":"18175:17:82","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":56374,"indexExpression":{"id":56372,"name":"validator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56365,"src":"18193:9:82","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"18175:28:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":56375,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"18206:4:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"18175:35:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":56377,"nodeType":"ExpressionStatement","src":"18175:35:82"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":56360,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":56357,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56354,"src":"18074:1:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":56358,"name":"_validatorsArray","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56335,"src":"18078:16:82","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":56359,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"18095:6:82","memberName":"length","nodeType":"MemberAccess","src":"18078:23:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18074:27:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":56379,"initializationExpression":{"assignments":[56354],"declarations":[{"constant":false,"id":56354,"mutability":"mutable","name":"i","nameLocation":"18067:1:82","nodeType":"VariableDeclaration","scope":56379,"src":"18059:9:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":56353,"name":"uint256","nodeType":"ElementaryTypeName","src":"18059:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":56356,"initialValue":{"hexValue":"30","id":56355,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18071:1:82","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"18059:13:82"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":56362,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"18103:3:82","subExpression":{"id":56361,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56354,"src":"18103:1:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":56363,"nodeType":"ExpressionStatement","src":"18103:3:82"},"nodeType":"ForStatement","src":"18054:167:82"},{"expression":{"id":56384,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":56380,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56340,"src":"18231:6:82","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53739_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":56382,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"18238:14:82","memberName":"validatorsKeys","nodeType":"MemberAccess","referencedDeclaration":53725,"src":"18231:21:82","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":56383,"name":"_validatorsArray","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56335,"src":"18255:16:82","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"src":"18231:40:82","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":56385,"nodeType":"ExpressionStatement","src":"18231:40:82"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_setValidators","nameLocation":"17845:14:82","parameters":{"id":56336,"nodeType":"ParameterList","parameters":[{"constant":false,"id":56335,"mutability":"mutable","name":"_validatorsArray","nameLocation":"17877:16:82","nodeType":"VariableDeclaration","scope":56387,"src":"17860:33:82","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":56333,"name":"address","nodeType":"ElementaryTypeName","src":"17860:7:82","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":56334,"nodeType":"ArrayTypeName","src":"17860:9:82","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"src":"17859:35:82"},"returnParameters":{"id":56337,"nodeType":"ParameterList","parameters":[],"src":"17903:0:82"},"scope":56401,"stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"id":56400,"nodeType":"FunctionDefinition","src":"18284:222:82","nodes":[],"body":{"id":56399,"nodeType":"Block","src":"18353:153:82","nodes":[],"statements":[{"assignments":[56394],"declarations":[{"constant":false,"id":56394,"mutability":"mutable","name":"slot","nameLocation":"18371:4:82","nodeType":"VariableDeclaration","scope":56399,"src":"18363:12:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":56393,"name":"bytes32","nodeType":"ElementaryTypeName","src":"18363:7:82","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":56397,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":56395,"name":"getStorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54893,"src":"18378:14:82","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_bytes32_$","typeString":"function () view returns (bytes32)"}},"id":56396,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18378:16:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"18363:31:82"},{"AST":{"nativeSrc":"18457:43:82","nodeType":"YulBlock","src":"18457:43:82","statements":[{"nativeSrc":"18471:19:82","nodeType":"YulAssignment","src":"18471:19:82","value":{"name":"slot","nativeSrc":"18486:4:82","nodeType":"YulIdentifier","src":"18486:4:82"},"variableNames":[{"name":"router.slot","nativeSrc":"18471:11:82","nodeType":"YulIdentifier","src":"18471:11:82"}]}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"cancun","externalReferences":[{"declaration":56391,"isOffset":false,"isSlot":true,"src":"18471:11:82","suffix":"slot","valueSize":1},{"declaration":56394,"isOffset":false,"isSlot":false,"src":"18486:4:82","valueSize":1}],"id":56398,"nodeType":"InlineAssembly","src":"18448:52:82"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_getStorage","nameLocation":"18293:11:82","parameters":{"id":56388,"nodeType":"ParameterList","parameters":[],"src":"18304:2:82"},"returnParameters":{"id":56392,"nodeType":"ParameterList","parameters":[{"constant":false,"id":56391,"mutability":"mutable","name":"router","nameLocation":"18345:6:82","nodeType":"VariableDeclaration","scope":56400,"src":"18329:22:82","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53739_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":56390,"nodeType":"UserDefinedTypeName","pathNode":{"id":56389,"name":"Storage","nameLocations":["18329:7:82"],"nodeType":"IdentifierPath","referencedDeclaration":53739,"src":"18329:7:82"},"referencedDeclaration":53739,"src":"18329:7:82","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53739_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"}],"src":"18328:24:82"},"scope":56401,"stateMutability":"view","virtual":false,"visibility":"private"}],"abstract":false,"baseContracts":[{"baseName":{"id":54696,"name":"IRouter","nameLocations":["800:7:82"],"nodeType":"IdentifierPath","referencedDeclaration":54023,"src":"800:7:82"},"id":54697,"nodeType":"InheritanceSpecifier","src":"800:7:82"},{"baseName":{"id":54698,"name":"OwnableUpgradeable","nameLocations":["809:18:82"],"nodeType":"IdentifierPath","referencedDeclaration":39024,"src":"809:18:82"},"id":54699,"nodeType":"InheritanceSpecifier","src":"809:18:82"},{"baseName":{"id":54700,"name":"ReentrancyGuardTransient","nameLocations":["829:24:82"],"nodeType":"IdentifierPath","referencedDeclaration":42400,"src":"829:24:82"},"id":54701,"nodeType":"InheritanceSpecifier","src":"829:24:82"}],"canonicalName":"Router","contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"linearizedBaseContracts":[56401,42400,39024,40172,39278,54023],"name":"Router","nameLocation":"790:6:82","scope":56402,"usedErrors":[38860,38865,39041,39044,42267,42273,42344,43050,43055,43060],"usedEvents":[38871,39049,53805,53812,53819,53826,53829,53832,53837,53842]}],"license":"UNLICENSED"},"id":82} \ No newline at end of file diff --git a/ethexe/ethereum/WrappedVara.json b/ethexe/ethereum/WrappedVara.json index cf436c9bd86..b1e86feb70b 100644 --- a/ethexe/ethereum/WrappedVara.json +++ b/ethexe/ethereum/WrappedVara.json @@ -1 +1 @@ -{"abi":[{"type":"constructor","inputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"DOMAIN_SEPARATOR","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"allowance","inputs":[{"name":"owner","type":"address","internalType":"address"},{"name":"spender","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"approve","inputs":[{"name":"spender","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"balanceOf","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"burn","inputs":[{"name":"value","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"burnFrom","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"decimals","inputs":[],"outputs":[{"name":"","type":"uint8","internalType":"uint8"}],"stateMutability":"view"},{"type":"function","name":"eip712Domain","inputs":[],"outputs":[{"name":"fields","type":"bytes1","internalType":"bytes1"},{"name":"name","type":"string","internalType":"string"},{"name":"version","type":"string","internalType":"string"},{"name":"chainId","type":"uint256","internalType":"uint256"},{"name":"verifyingContract","type":"address","internalType":"address"},{"name":"salt","type":"bytes32","internalType":"bytes32"},{"name":"extensions","type":"uint256[]","internalType":"uint256[]"}],"stateMutability":"view"},{"type":"function","name":"initialize","inputs":[{"name":"initialOwner","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"mint","inputs":[{"name":"to","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"name","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"nonces","inputs":[{"name":"owner","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"owner","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"permit","inputs":[{"name":"owner","type":"address","internalType":"address"},{"name":"spender","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"},{"name":"deadline","type":"uint256","internalType":"uint256"},{"name":"v","type":"uint8","internalType":"uint8"},{"name":"r","type":"bytes32","internalType":"bytes32"},{"name":"s","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"reinitialize","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"renounceOwnership","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"symbol","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"totalSupply","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"transfer","inputs":[{"name":"to","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"transferFrom","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"transferOwnership","inputs":[{"name":"newOwner","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"Approval","inputs":[{"name":"owner","type":"address","indexed":true,"internalType":"address"},{"name":"spender","type":"address","indexed":true,"internalType":"address"},{"name":"value","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"EIP712DomainChanged","inputs":[],"anonymous":false},{"type":"event","name":"Initialized","inputs":[{"name":"version","type":"uint64","indexed":false,"internalType":"uint64"}],"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":"Transfer","inputs":[{"name":"from","type":"address","indexed":true,"internalType":"address"},{"name":"to","type":"address","indexed":true,"internalType":"address"},{"name":"value","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"error","name":"ECDSAInvalidSignature","inputs":[]},{"type":"error","name":"ECDSAInvalidSignatureLength","inputs":[{"name":"length","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ECDSAInvalidSignatureS","inputs":[{"name":"s","type":"bytes32","internalType":"bytes32"}]},{"type":"error","name":"ERC20InsufficientAllowance","inputs":[{"name":"spender","type":"address","internalType":"address"},{"name":"allowance","type":"uint256","internalType":"uint256"},{"name":"needed","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ERC20InsufficientBalance","inputs":[{"name":"sender","type":"address","internalType":"address"},{"name":"balance","type":"uint256","internalType":"uint256"},{"name":"needed","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ERC20InvalidApprover","inputs":[{"name":"approver","type":"address","internalType":"address"}]},{"type":"error","name":"ERC20InvalidReceiver","inputs":[{"name":"receiver","type":"address","internalType":"address"}]},{"type":"error","name":"ERC20InvalidSender","inputs":[{"name":"sender","type":"address","internalType":"address"}]},{"type":"error","name":"ERC20InvalidSpender","inputs":[{"name":"spender","type":"address","internalType":"address"}]},{"type":"error","name":"ERC2612ExpiredSignature","inputs":[{"name":"deadline","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ERC2612InvalidSigner","inputs":[{"name":"signer","type":"address","internalType":"address"},{"name":"owner","type":"address","internalType":"address"}]},{"type":"error","name":"InvalidAccountNonce","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"currentNonce","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InvalidInitialization","inputs":[]},{"type":"error","name":"NotInitializing","inputs":[]},{"type":"error","name":"OwnableInvalidOwner","inputs":[{"name":"owner","type":"address","internalType":"address"}]},{"type":"error","name":"OwnableUnauthorizedAccount","inputs":[{"name":"account","type":"address","internalType":"address"}]}],"bytecode":{"object":"0x6080806040523460d0577ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005460ff8160401c1660c1576002600160401b03196001600160401b03821601605c575b604051611cc090816100d58239f35b6001600160401b0319166001600160401b039081177ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005581527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602090a15f80604d565b63f92ee8a960e01b5f5260045ffd5b5f80fdfe60806040526004361015610011575f80fd5b5f3560e01c806306fdde031461120f578063095ea7b3146111e957806318160ddd146111c057806323b872dd14611188578063313ce5671461116d5780633644e5151461114b57806340c10f191461110e57806342966c68146110f15780636c2eb3501461105757806370a0823114611013578063715018a614610fac57806379cc679014610f7c5780637ecebe0014610f2657806384b0196e14610c525780638da5cb5b14610c1e57806395d89b4114610b24578063a9059cbb14610af3578063c4d66de8146102d8578063d505accf14610176578063dd62ed3e1461012f5763f2fde38b14610100575f80fd5b3461012b57602036600319011261012b5761012961011c6112f0565b6101246115b4565b6113ae565b005b5f80fd5b3461012b57604036600319011261012b576101486112f0565b610159610153611306565b91611376565b9060018060a01b03165f52602052602060405f2054604051908152f35b3461012b5760e036600319011261012b5761018f6112f0565b610197611306565b604435906064359260843560ff8116810361012b578442116102c55761028a6102939160018060a01b03841696875f527f5ab42ced628888259c08ac98db1eb0cf702fc1501344311d8b100cd1bfe4bb0060205260405f20908154916001830190556040519060208201927f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c984528a604084015260018060a01b038916606084015289608084015260a083015260c082015260c0815261025860e082611354565b5190206102636117c2565b906040519161190160f01b83526002830152602282015260c43591604260a4359220611854565b909291926118e1565b6001600160a01b03168481036102ae5750610129935061169d565b84906325c0072360e11b5f5260045260245260445ffd5b8463313c898160e11b5f5260045260245ffd5b3461012b57602036600319011261012b576102f16112f0565b5f80516020611c6b833981519152549060ff8260401c16159167ffffffffffffffff811680159081610aeb575b6001149081610ae1575b159081610ad8575b50610ac95767ffffffffffffffff1981166001175f80516020611c6b8339815191525582610a9d575b5060405191610369604084611354565b600c83526b57726170706564205661726160a01b602084015260405191610391604084611354565b6005835264575641524160d81b60208401526103ab611829565b6103b3611829565b835167ffffffffffffffff81116107aa576103db5f80516020611b8b8339815191525461131c565b601f8111610a2e575b50602094601f82116001146109b3579481929394955f926109a8575b50508160011b915f199060031b1c1916175f80516020611b8b833981519152555b825167ffffffffffffffff81116107aa576104495f80516020611beb8339815191525461131c565b601f8111610939575b506020601f82116001146108be57819293945f926108b3575b50508160011b915f199060031b1c1916175f80516020611beb833981519152555b610494611829565b61049c611829565b6104a4611829565b6104ad816113ae565b604051916104bc604084611354565b600c83526b57726170706564205661726160a01b60208401526104dd611829565b604051916104ec604084611354565b60018352603160f81b6020840152610502611829565b835167ffffffffffffffff81116107aa5761052a5f80516020611bcb8339815191525461131c565b601f8111610844575b50602094601f82116001146107c9579481929394955f926107be575b50508160011b915f199060031b1c1916175f80516020611bcb833981519152555b825167ffffffffffffffff81116107aa576105985f80516020611c4b8339815191525461131c565b601f811161073b575b506020601f82116001146106c057819293945f926106b5575b50508160011b915f199060031b1c1916175f80516020611c4b833981519152555b5f7fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d1008190557fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d101556001600160a01b038116156106a25769d3c21bcecceda100000061064591611700565b61064b57005b68ff0000000000000000195f80516020611c6b83398151915254165f80516020611c6b833981519152557fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602060405160018152a1005b63ec442f0560e01b5f525f60045260245ffd5b0151905084806105ba565b601f198216905f80516020611c4b8339815191525f52805f20915f5b8181106107235750958360019596971061070b575b505050811b015f80516020611c4b833981519152556105db565b01515f1960f88460031b161c191690558480806106f1565b9192602060018192868b0151815501940192016106dc565b5f80516020611c4b8339815191525f527f5f9ce34815f8e11431c7bb75a8e6886a91478f7ffc1dbb0a98dc240fddd76b75601f830160051c810191602084106107a0575b601f0160051c01905b81811061079557506105a1565b5f8155600101610788565b909150819061077f565b634e487b7160e01b5f52604160045260245ffd5b01519050858061054f565b601f198216955f80516020611bcb8339815191525f52805f20915f5b88811061082c57508360019596979810610814575b505050811b015f80516020611bcb83398151915255610570565b01515f1960f88460031b161c191690558580806107fa565b919260206001819286850151815501940192016107e5565b5f80516020611bcb8339815191525f527f42ad5d3e1f2e6e70edcf6d991b8a3023d3fca8047a131592f9edb9fd9b89d57d601f830160051c810191602084106108a9575b601f0160051c01905b81811061089e5750610533565b5f8155600101610891565b9091508190610888565b01519050848061046b565b601f198216905f80516020611beb8339815191525f52805f20915f5b81811061092157509583600195969710610909575b505050811b015f80516020611beb8339815191525561048c565b01515f1960f88460031b161c191690558480806108ef565b9192602060018192868b0151815501940192016108da565b5f80516020611beb8339815191525f527f46a2803e59a4de4e7a4c574b1243f25977ac4c77d5a1a4a609b5394cebb4a2aa601f830160051c8101916020841061099e575b601f0160051c01905b8181106109935750610452565b5f8155600101610986565b909150819061097d565b015190508580610400565b601f198216955f80516020611b8b8339815191525f52805f20915f5b888110610a16575083600195969798106109fe575b505050811b015f80516020611b8b83398151915255610421565b01515f1960f88460031b161c191690558580806109e4565b919260206001819286850151815501940192016109cf565b5f80516020611b8b8339815191525f527f2ae08a8e29253f69ac5d979a101956ab8f8d9d7ded63fa7a83b16fc47648eab0601f830160051c81019160208410610a93575b601f0160051c01905b818110610a8857506103e4565b5f8155600101610a7b565b9091508190610a72565b68ffffffffffffffffff191668010000000000000001175f80516020611c6b8339815191525582610359565b63f92ee8a960e01b5f5260045ffd5b90501584610330565b303b159150610328565b84915061031e565b3461012b57604036600319011261012b57610b19610b0f6112f0565b60243590336114e3565b602060405160018152f35b3461012b575f36600319011261012b576040515f5f80516020611beb83398151915254610b508161131c565b8084529060018116908115610bfa5750600114610b90575b610b8c83610b7881850382611354565b6040519182916020835260208301906112cc565b0390f35b5f80516020611beb8339815191525f9081527f46a2803e59a4de4e7a4c574b1243f25977ac4c77d5a1a4a609b5394cebb4a2aa939250905b808210610be057509091508101602001610b78610b68565b919260018160209254838588010152019101909291610bc8565b60ff191660208086019190915291151560051b84019091019150610b789050610b68565b3461012b575f36600319011261012b575f80516020611c0b833981519152546040516001600160a01b039091168152602090f35b3461012b575f36600319011261012b577fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d100541580610efd575b15610ec0576040515f80516020611bcb83398151915254815f610cad8361131c565b8083529260018116908115610ea15750600114610e36575b610cd192500382611354565b6040515f80516020611c4b83398151915254815f610cee8361131c565b8083529260018116908115610e175750600114610dac575b610d1991925092610d5094930382611354565b6020610d5e60405192610d2c8385611354565b5f84525f368137604051958695600f60f81b875260e08588015260e08701906112cc565b9085820360408701526112cc565b4660608501523060808501525f60a085015283810360c08501528180845192838152019301915f5b828110610d9557505050500390f35b835185528695509381019392810192600101610d86565b505f80516020611c4b8339815191525f90815290917f5f9ce34815f8e11431c7bb75a8e6886a91478f7ffc1dbb0a98dc240fddd76b755b818310610dfb575050906020610d1992820101610d06565b6020919350806001915483858801015201910190918392610de3565b60209250610d1994915060ff191682840152151560051b820101610d06565b505f80516020611bcb8339815191525f90815290917f42ad5d3e1f2e6e70edcf6d991b8a3023d3fca8047a131592f9edb9fd9b89d57d5b818310610e85575050906020610cd192820101610cc5565b6020919350806001915483858801015201910190918392610e6d565b60209250610cd194915060ff191682840152151560051b820101610cc5565b60405162461bcd60e51b81526020600482015260156024820152741152540dcc4c8e88155b9a5b9a5d1a585b1a5e9959605a1b6044820152606490fd5b507fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d1015415610c8b565b3461012b57602036600319011261012b57610f3f6112f0565b60018060a01b03165f527f5ab42ced628888259c08ac98db1eb0cf702fc1501344311d8b100cd1bfe4bb00602052602060405f2054604051908152f35b3461012b57604036600319011261012b57610129610f986112f0565b60243590610fa782338361141f565b6115e7565b3461012b575f36600319011261012b57610fc46115b4565b5f80516020611c0b83398151915280546001600160a01b031981169091555f906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b3461012b57602036600319011261012b576001600160a01b036110346112f0565b165f525f80516020611bab833981519152602052602060405f2054604051908152f35b3461012b575f36600319011261012b5761106f6115b4565b5f80516020611c6b8339815191525460ff8160401c1680156110dc575b610ac95760029068ffffffffffffffffff1916175f80516020611c6b833981519152557fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602060405160028152a1005b50600267ffffffffffffffff8216101561108c565b3461012b57602036600319011261012b57610129600435336115e7565b3461012b57604036600319011261012b576111276112f0565b61112f6115b4565b6001600160a01b038116156106a2576101299060243590611700565b3461012b575f36600319011261012b5760206111656117c2565b604051908152f35b3461012b575f36600319011261012b57602060405160128152f35b3461012b57606036600319011261012b57610b196111a46112f0565b6111ac611306565b604435916111bb83338361141f565b6114e3565b3461012b575f36600319011261012b5760205f80516020611c2b83398151915254604051908152f35b3461012b57604036600319011261012b57610b196112056112f0565b602435903361169d565b3461012b575f36600319011261012b576040515f5f80516020611b8b8339815191525461123b8161131c565b8084529060018116908115610bfa575060011461126257610b8c83610b7881850382611354565b5f80516020611b8b8339815191525f9081527f2ae08a8e29253f69ac5d979a101956ab8f8d9d7ded63fa7a83b16fc47648eab0939250905b8082106112b257509091508101602001610b78610b68565b91926001816020925483858801015201910190929161129a565b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b600435906001600160a01b038216820361012b57565b602435906001600160a01b038216820361012b57565b90600182811c9216801561134a575b602083101461133657565b634e487b7160e01b5f52602260045260245ffd5b91607f169161132b565b90601f8019910116810190811067ffffffffffffffff8211176107aa57604052565b6001600160a01b03165f9081527f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace016020526040902090565b6001600160a01b0316801561140c575f80516020611c0b83398151915280546001600160a01b0319811683179091556001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3565b631e4fbdf760e01b5f525f60045260245ffd5b919061142a83611376565b60018060a01b0382165f5260205260405f2054925f19840361144d575b50505050565b8284106114c0576001600160a01b038116156114ad576001600160a01b0382161561149a5761147b90611376565b9060018060a01b03165f5260205260405f20910390555f808080611447565b634a1406b160e11b5f525f60045260245ffd5b63e602df0560e01b5f525f60045260245ffd5b508290637dc7a0d960e11b5f5260018060a01b031660045260245260445260645ffd5b6001600160a01b03169081156115a1576001600160a01b03169182156106a257815f525f80516020611bab83398151915260205260405f205481811061158857817fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92602092855f525f80516020611bab83398151915284520360405f2055845f525f80516020611bab833981519152825260405f20818154019055604051908152a3565b8263391434e360e21b5f5260045260245260445260645ffd5b634b637e8f60e11b5f525f60045260245ffd5b5f80516020611c0b833981519152546001600160a01b031633036115d457565b63118cdaa760e01b5f523360045260245ffd5b9091906001600160a01b031680156115a157805f525f80516020611bab83398151915260205260405f2054838110611683576020845f94957fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef938587525f80516020611bab8339815191528452036040862055805f80516020611c2b83398151915254035f80516020611c2b83398151915255604051908152a3565b915063391434e360e21b5f5260045260245260445260645ffd5b916001600160a01b0383169182156114ad576001600160a01b031692831561149a577f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925916116ec602092611376565b855f5282528060405f2055604051908152a3565b5f80516020611c2b83398151915254908282018092116117ae575f80516020611c2b833981519152919091556001600160a01b0316905f907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906020908461178c57805f80516020611c2b83398151915254035f80516020611c2b833981519152555b604051908152a3565b8484525f80516020611bab833981519152825260408420818154019055611783565b634e487b7160e01b5f52601160045260245ffd5b6117ca611955565b6117d2611a82565b6040519060208201927f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f8452604083015260608201524660808201523060a082015260a0815261182360c082611354565b51902090565b60ff5f80516020611c6b8339815191525460401c161561184557565b631afcd79f60e31b5f5260045ffd5b91907f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a084116118d6579160209360809260ff5f9560405194855216868401526040830152606082015282805260015afa156118cb575f516001600160a01b038116156118c157905f905f90565b505f906001905f90565b6040513d5f823e3d90fd5b5050505f9160039190565b600481101561194157806118f3575050565b6001810361190a5763f645eedf60e01b5f5260045ffd5b60028103611925575063fce698f760e01b5f5260045260245ffd5b60031461192f5750565b6335e2f38360e21b5f5260045260245ffd5b634e487b7160e01b5f52602160045260245ffd5b6040515f80516020611bcb83398151915254905f816119738461131c565b9182825260208201946001811690815f14611a6657506001146119fb575b61199d92500382611354565b519081156119a9572090565b50507fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d1005480156119d65790565b507fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47090565b505f80516020611bcb8339815191525f90815290917f42ad5d3e1f2e6e70edcf6d991b8a3023d3fca8047a131592f9edb9fd9b89d57d5b818310611a4a57505090602061199d92820101611991565b6020919350806001915483858801015201910190918392611a32565b60ff191686525061199d92151560051b82016020019050611991565b6040515f80516020611c4b83398151915254905f81611aa08461131c565b9182825260208201946001811690815f14611b6e5750600114611b03575b611aca92500382611354565b51908115611ad6572090565b50507fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d1015480156119d65790565b505f80516020611c4b8339815191525f90815290917f5f9ce34815f8e11431c7bb75a8e6886a91478f7ffc1dbb0a98dc240fddd76b755b818310611b52575050906020611aca92820101611abe565b6020919350806001915483858801015201910190918392611b3a565b60ff1916865250611aca92151560051b82016020019050611abe56fe52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0352c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace00a16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d10252c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace049016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930052c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace02a16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d103f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a26469706673582212207c01710bc450b8bcdeda1ea230921ccc8081b1aba057bcb3f67d3d95cb5fa00c64736f6c634300081a0033","sourceMap":"632:901:83:-:0;;;;;;;8837:64:25;632:901:83;;;;;;7896:76:25;;-1:-1:-1;;;;;;;;;;;632:901:83;;7985:34:25;7981:146;;-1:-1:-1;632:901:83;;;;;;;;;7981:146:25;-1:-1:-1;;;;;;632:901:83;-1:-1:-1;;;;;632:901:83;;;8837:64:25;632:901:83;;;8087:29:25;;632:901:83;;8087:29:25;7981:146;;;;7896:76;7938:23;;;-1:-1:-1;7938:23:25;;-1:-1:-1;7938:23:25;632:901:83;;;","linkReferences":{}},"deployedBytecode":{"object":"0x60806040526004361015610011575f80fd5b5f3560e01c806306fdde031461120f578063095ea7b3146111e957806318160ddd146111c057806323b872dd14611188578063313ce5671461116d5780633644e5151461114b57806340c10f191461110e57806342966c68146110f15780636c2eb3501461105757806370a0823114611013578063715018a614610fac57806379cc679014610f7c5780637ecebe0014610f2657806384b0196e14610c525780638da5cb5b14610c1e57806395d89b4114610b24578063a9059cbb14610af3578063c4d66de8146102d8578063d505accf14610176578063dd62ed3e1461012f5763f2fde38b14610100575f80fd5b3461012b57602036600319011261012b5761012961011c6112f0565b6101246115b4565b6113ae565b005b5f80fd5b3461012b57604036600319011261012b576101486112f0565b610159610153611306565b91611376565b9060018060a01b03165f52602052602060405f2054604051908152f35b3461012b5760e036600319011261012b5761018f6112f0565b610197611306565b604435906064359260843560ff8116810361012b578442116102c55761028a6102939160018060a01b03841696875f527f5ab42ced628888259c08ac98db1eb0cf702fc1501344311d8b100cd1bfe4bb0060205260405f20908154916001830190556040519060208201927f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c984528a604084015260018060a01b038916606084015289608084015260a083015260c082015260c0815261025860e082611354565b5190206102636117c2565b906040519161190160f01b83526002830152602282015260c43591604260a4359220611854565b909291926118e1565b6001600160a01b03168481036102ae5750610129935061169d565b84906325c0072360e11b5f5260045260245260445ffd5b8463313c898160e11b5f5260045260245ffd5b3461012b57602036600319011261012b576102f16112f0565b5f80516020611c6b833981519152549060ff8260401c16159167ffffffffffffffff811680159081610aeb575b6001149081610ae1575b159081610ad8575b50610ac95767ffffffffffffffff1981166001175f80516020611c6b8339815191525582610a9d575b5060405191610369604084611354565b600c83526b57726170706564205661726160a01b602084015260405191610391604084611354565b6005835264575641524160d81b60208401526103ab611829565b6103b3611829565b835167ffffffffffffffff81116107aa576103db5f80516020611b8b8339815191525461131c565b601f8111610a2e575b50602094601f82116001146109b3579481929394955f926109a8575b50508160011b915f199060031b1c1916175f80516020611b8b833981519152555b825167ffffffffffffffff81116107aa576104495f80516020611beb8339815191525461131c565b601f8111610939575b506020601f82116001146108be57819293945f926108b3575b50508160011b915f199060031b1c1916175f80516020611beb833981519152555b610494611829565b61049c611829565b6104a4611829565b6104ad816113ae565b604051916104bc604084611354565b600c83526b57726170706564205661726160a01b60208401526104dd611829565b604051916104ec604084611354565b60018352603160f81b6020840152610502611829565b835167ffffffffffffffff81116107aa5761052a5f80516020611bcb8339815191525461131c565b601f8111610844575b50602094601f82116001146107c9579481929394955f926107be575b50508160011b915f199060031b1c1916175f80516020611bcb833981519152555b825167ffffffffffffffff81116107aa576105985f80516020611c4b8339815191525461131c565b601f811161073b575b506020601f82116001146106c057819293945f926106b5575b50508160011b915f199060031b1c1916175f80516020611c4b833981519152555b5f7fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d1008190557fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d101556001600160a01b038116156106a25769d3c21bcecceda100000061064591611700565b61064b57005b68ff0000000000000000195f80516020611c6b83398151915254165f80516020611c6b833981519152557fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602060405160018152a1005b63ec442f0560e01b5f525f60045260245ffd5b0151905084806105ba565b601f198216905f80516020611c4b8339815191525f52805f20915f5b8181106107235750958360019596971061070b575b505050811b015f80516020611c4b833981519152556105db565b01515f1960f88460031b161c191690558480806106f1565b9192602060018192868b0151815501940192016106dc565b5f80516020611c4b8339815191525f527f5f9ce34815f8e11431c7bb75a8e6886a91478f7ffc1dbb0a98dc240fddd76b75601f830160051c810191602084106107a0575b601f0160051c01905b81811061079557506105a1565b5f8155600101610788565b909150819061077f565b634e487b7160e01b5f52604160045260245ffd5b01519050858061054f565b601f198216955f80516020611bcb8339815191525f52805f20915f5b88811061082c57508360019596979810610814575b505050811b015f80516020611bcb83398151915255610570565b01515f1960f88460031b161c191690558580806107fa565b919260206001819286850151815501940192016107e5565b5f80516020611bcb8339815191525f527f42ad5d3e1f2e6e70edcf6d991b8a3023d3fca8047a131592f9edb9fd9b89d57d601f830160051c810191602084106108a9575b601f0160051c01905b81811061089e5750610533565b5f8155600101610891565b9091508190610888565b01519050848061046b565b601f198216905f80516020611beb8339815191525f52805f20915f5b81811061092157509583600195969710610909575b505050811b015f80516020611beb8339815191525561048c565b01515f1960f88460031b161c191690558480806108ef565b9192602060018192868b0151815501940192016108da565b5f80516020611beb8339815191525f527f46a2803e59a4de4e7a4c574b1243f25977ac4c77d5a1a4a609b5394cebb4a2aa601f830160051c8101916020841061099e575b601f0160051c01905b8181106109935750610452565b5f8155600101610986565b909150819061097d565b015190508580610400565b601f198216955f80516020611b8b8339815191525f52805f20915f5b888110610a16575083600195969798106109fe575b505050811b015f80516020611b8b83398151915255610421565b01515f1960f88460031b161c191690558580806109e4565b919260206001819286850151815501940192016109cf565b5f80516020611b8b8339815191525f527f2ae08a8e29253f69ac5d979a101956ab8f8d9d7ded63fa7a83b16fc47648eab0601f830160051c81019160208410610a93575b601f0160051c01905b818110610a8857506103e4565b5f8155600101610a7b565b9091508190610a72565b68ffffffffffffffffff191668010000000000000001175f80516020611c6b8339815191525582610359565b63f92ee8a960e01b5f5260045ffd5b90501584610330565b303b159150610328565b84915061031e565b3461012b57604036600319011261012b57610b19610b0f6112f0565b60243590336114e3565b602060405160018152f35b3461012b575f36600319011261012b576040515f5f80516020611beb83398151915254610b508161131c565b8084529060018116908115610bfa5750600114610b90575b610b8c83610b7881850382611354565b6040519182916020835260208301906112cc565b0390f35b5f80516020611beb8339815191525f9081527f46a2803e59a4de4e7a4c574b1243f25977ac4c77d5a1a4a609b5394cebb4a2aa939250905b808210610be057509091508101602001610b78610b68565b919260018160209254838588010152019101909291610bc8565b60ff191660208086019190915291151560051b84019091019150610b789050610b68565b3461012b575f36600319011261012b575f80516020611c0b833981519152546040516001600160a01b039091168152602090f35b3461012b575f36600319011261012b577fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d100541580610efd575b15610ec0576040515f80516020611bcb83398151915254815f610cad8361131c565b8083529260018116908115610ea15750600114610e36575b610cd192500382611354565b6040515f80516020611c4b83398151915254815f610cee8361131c565b8083529260018116908115610e175750600114610dac575b610d1991925092610d5094930382611354565b6020610d5e60405192610d2c8385611354565b5f84525f368137604051958695600f60f81b875260e08588015260e08701906112cc565b9085820360408701526112cc565b4660608501523060808501525f60a085015283810360c08501528180845192838152019301915f5b828110610d9557505050500390f35b835185528695509381019392810192600101610d86565b505f80516020611c4b8339815191525f90815290917f5f9ce34815f8e11431c7bb75a8e6886a91478f7ffc1dbb0a98dc240fddd76b755b818310610dfb575050906020610d1992820101610d06565b6020919350806001915483858801015201910190918392610de3565b60209250610d1994915060ff191682840152151560051b820101610d06565b505f80516020611bcb8339815191525f90815290917f42ad5d3e1f2e6e70edcf6d991b8a3023d3fca8047a131592f9edb9fd9b89d57d5b818310610e85575050906020610cd192820101610cc5565b6020919350806001915483858801015201910190918392610e6d565b60209250610cd194915060ff191682840152151560051b820101610cc5565b60405162461bcd60e51b81526020600482015260156024820152741152540dcc4c8e88155b9a5b9a5d1a585b1a5e9959605a1b6044820152606490fd5b507fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d1015415610c8b565b3461012b57602036600319011261012b57610f3f6112f0565b60018060a01b03165f527f5ab42ced628888259c08ac98db1eb0cf702fc1501344311d8b100cd1bfe4bb00602052602060405f2054604051908152f35b3461012b57604036600319011261012b57610129610f986112f0565b60243590610fa782338361141f565b6115e7565b3461012b575f36600319011261012b57610fc46115b4565b5f80516020611c0b83398151915280546001600160a01b031981169091555f906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b3461012b57602036600319011261012b576001600160a01b036110346112f0565b165f525f80516020611bab833981519152602052602060405f2054604051908152f35b3461012b575f36600319011261012b5761106f6115b4565b5f80516020611c6b8339815191525460ff8160401c1680156110dc575b610ac95760029068ffffffffffffffffff1916175f80516020611c6b833981519152557fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602060405160028152a1005b50600267ffffffffffffffff8216101561108c565b3461012b57602036600319011261012b57610129600435336115e7565b3461012b57604036600319011261012b576111276112f0565b61112f6115b4565b6001600160a01b038116156106a2576101299060243590611700565b3461012b575f36600319011261012b5760206111656117c2565b604051908152f35b3461012b575f36600319011261012b57602060405160128152f35b3461012b57606036600319011261012b57610b196111a46112f0565b6111ac611306565b604435916111bb83338361141f565b6114e3565b3461012b575f36600319011261012b5760205f80516020611c2b83398151915254604051908152f35b3461012b57604036600319011261012b57610b196112056112f0565b602435903361169d565b3461012b575f36600319011261012b576040515f5f80516020611b8b8339815191525461123b8161131c565b8084529060018116908115610bfa575060011461126257610b8c83610b7881850382611354565b5f80516020611b8b8339815191525f9081527f2ae08a8e29253f69ac5d979a101956ab8f8d9d7ded63fa7a83b16fc47648eab0939250905b8082106112b257509091508101602001610b78610b68565b91926001816020925483858801015201910190929161129a565b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b600435906001600160a01b038216820361012b57565b602435906001600160a01b038216820361012b57565b90600182811c9216801561134a575b602083101461133657565b634e487b7160e01b5f52602260045260245ffd5b91607f169161132b565b90601f8019910116810190811067ffffffffffffffff8211176107aa57604052565b6001600160a01b03165f9081527f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace016020526040902090565b6001600160a01b0316801561140c575f80516020611c0b83398151915280546001600160a01b0319811683179091556001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3565b631e4fbdf760e01b5f525f60045260245ffd5b919061142a83611376565b60018060a01b0382165f5260205260405f2054925f19840361144d575b50505050565b8284106114c0576001600160a01b038116156114ad576001600160a01b0382161561149a5761147b90611376565b9060018060a01b03165f5260205260405f20910390555f808080611447565b634a1406b160e11b5f525f60045260245ffd5b63e602df0560e01b5f525f60045260245ffd5b508290637dc7a0d960e11b5f5260018060a01b031660045260245260445260645ffd5b6001600160a01b03169081156115a1576001600160a01b03169182156106a257815f525f80516020611bab83398151915260205260405f205481811061158857817fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92602092855f525f80516020611bab83398151915284520360405f2055845f525f80516020611bab833981519152825260405f20818154019055604051908152a3565b8263391434e360e21b5f5260045260245260445260645ffd5b634b637e8f60e11b5f525f60045260245ffd5b5f80516020611c0b833981519152546001600160a01b031633036115d457565b63118cdaa760e01b5f523360045260245ffd5b9091906001600160a01b031680156115a157805f525f80516020611bab83398151915260205260405f2054838110611683576020845f94957fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef938587525f80516020611bab8339815191528452036040862055805f80516020611c2b83398151915254035f80516020611c2b83398151915255604051908152a3565b915063391434e360e21b5f5260045260245260445260645ffd5b916001600160a01b0383169182156114ad576001600160a01b031692831561149a577f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925916116ec602092611376565b855f5282528060405f2055604051908152a3565b5f80516020611c2b83398151915254908282018092116117ae575f80516020611c2b833981519152919091556001600160a01b0316905f907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906020908461178c57805f80516020611c2b83398151915254035f80516020611c2b833981519152555b604051908152a3565b8484525f80516020611bab833981519152825260408420818154019055611783565b634e487b7160e01b5f52601160045260245ffd5b6117ca611955565b6117d2611a82565b6040519060208201927f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f8452604083015260608201524660808201523060a082015260a0815261182360c082611354565b51902090565b60ff5f80516020611c6b8339815191525460401c161561184557565b631afcd79f60e31b5f5260045ffd5b91907f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a084116118d6579160209360809260ff5f9560405194855216868401526040830152606082015282805260015afa156118cb575f516001600160a01b038116156118c157905f905f90565b505f906001905f90565b6040513d5f823e3d90fd5b5050505f9160039190565b600481101561194157806118f3575050565b6001810361190a5763f645eedf60e01b5f5260045ffd5b60028103611925575063fce698f760e01b5f5260045260245ffd5b60031461192f5750565b6335e2f38360e21b5f5260045260245ffd5b634e487b7160e01b5f52602160045260245ffd5b6040515f80516020611bcb83398151915254905f816119738461131c565b9182825260208201946001811690815f14611a6657506001146119fb575b61199d92500382611354565b519081156119a9572090565b50507fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d1005480156119d65790565b507fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47090565b505f80516020611bcb8339815191525f90815290917f42ad5d3e1f2e6e70edcf6d991b8a3023d3fca8047a131592f9edb9fd9b89d57d5b818310611a4a57505090602061199d92820101611991565b6020919350806001915483858801015201910190918392611a32565b60ff191686525061199d92151560051b82016020019050611991565b6040515f80516020611c4b83398151915254905f81611aa08461131c565b9182825260208201946001811690815f14611b6e5750600114611b03575b611aca92500382611354565b51908115611ad6572090565b50507fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d1015480156119d65790565b505f80516020611c4b8339815191525f90815290917f5f9ce34815f8e11431c7bb75a8e6886a91478f7ffc1dbb0a98dc240fddd76b755b818310611b52575050906020611aca92820101611abe565b6020919350806001915483858801015201910190918392611b3a565b60ff1916865250611aca92151560051b82016020019050611abe56fe52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0352c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace00a16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d10252c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace049016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930052c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace02a16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d103f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a26469706673582212207c01710bc450b8bcdeda1ea230921ccc8081b1aba057bcb3f67d3d95cb5fa00c64736f6c634300081a0033","sourceMap":"632:901:83:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;632:901:83;;;;2357:1:24;632:901:83;;:::i;:::-;2303:62:24;;:::i;:::-;2357:1;:::i;:::-;632:901:83;;;;;;;;;;;-1:-1:-1;;632:901:83;;;;;;:::i;:::-;4867:20:26;632:901:83;;:::i;:::-;4867:20:26;;:::i;:::-;:29;632:901:83;;;;;;-1:-1:-1;632:901:83;;;;;-1:-1:-1;632:901:83;;;;;;;;;;;;;;-1:-1:-1;;632:901:83;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;;;;2301:15:28;;:26;2297:97;;6967:25:55;7021:8;632:901:83;;;;;;;;;;;;972:64:30;632:901:83;;;;;;;;;;;;;;;;2435:78:28;632:901:83;2435:78:28;;632:901:83;1279:95:28;632:901:83;;1279:95:28;632:901:83;1279:95:28;;632:901:83;;;;;;;;;1279:95:28;;632:901:83;1279:95:28;632:901:83;1279:95:28;;632:901:83;;1279:95:28;;632:901:83;;1279:95:28;;632:901:83;;2435:78:28;;;632:901:83;2435:78:28;;:::i;:::-;632:901:83;2425:89:28;;4094:23:31;;:::i;:::-;3515:233:56;632:901:83;3515:233:56;;-1:-1:-1;;;3515:233:56;;;;;;;;;;632:901:83;;;3515:233:56;632:901:83;;3515:233:56;;6967:25:55;:::i;:::-;7021:8;;;;;:::i;:::-;-1:-1:-1;;;;;632:901:83;2638:15:28;;;2634:88;;10117:4:26;;;;;:::i;2634:88:28:-;2676:35;;;;;632:901:83;2676:35:28;632:901:83;;;;;;2676:35:28;2297:97;2350:33;;;;632:901:83;2350:33:28;632:901:83;;;;2350:33:28;632:901:83;;;;;;-1:-1:-1;;632:901:83;;;;;;:::i;:::-;-1:-1:-1;;;;;;;;;;;632:901:83;;;;;;;4301:16:25;632:901:83;;;;4726:16:25;;:34;;;;632:901:83;4805:1:25;4790:16;:50;;;;632:901:83;4855:13:25;:30;;;;632:901:83;4851:91:25;;;-1:-1:-1;;632:901:83;;4805:1:25;632:901:83;-1:-1:-1;;;;;;;;;;;632:901:83;;4979:67:25;;632:901:83;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;632:901:83;;;;;;;;;;;:::i;:::-;821:14;632:901;;-1:-1:-1;;;632:901:83;821:14;;;6893:76:25;;:::i;:::-;;;:::i;:::-;632:901:83;;;;;;;;-1:-1:-1;;;;;;;;;;;632:901:83;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4805:1:25;632:901:83;;;;;2600:7:26;632:901:83;;;;;-1:-1:-1;;;;;;;;;;;632:901:83;;;;;;;;;;-1:-1:-1;;;;;;;;;;;632:901:83;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;4805:1:25;632:901:83;;;;;2600:7:26;632:901:83;;;;;-1:-1:-1;;;;;;;;;;;632:901:83;;6893:76:25;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;6961:1;;;:::i;:::-;632:901:83;;;;;;;:::i;:::-;;;;-1:-1:-1;;;632:901:83;;;;6893:76:25;;:::i;:::-;632:901:83;;;;;;;:::i;:::-;4805:1:25;632:901:83;;-1:-1:-1;;;632:901:83;;;;6893:76:25;;:::i;:::-;632:901:83;;;;;;;;-1:-1:-1;;;;;;;;;;;632:901:83;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4805:1:25;632:901:83;;;;;2600:7:26;632:901:83;;;;;-1:-1:-1;;;;;;;;;;;632:901:83;;;;;;;;;;-1:-1:-1;;;;;;;;;;;632:901:83;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;4805:1:25;632:901:83;;;;;2600:7:26;632:901:83;;;;;-1:-1:-1;;;;;;;;;;;632:901:83;;;2806:64:31;632:901:83;;;3902:16:31;632:901:83;-1:-1:-1;;;;;632:901:83;;8803:21:26;8799:91;;941:9:83;8928:5:26;;;:::i;:::-;5066:101:25;;632:901:83;5066:101:25;632:901:83;;-1:-1:-1;;;;;;;;;;;632:901:83;;-1:-1:-1;;;;;;;;;;;632:901:83;5142:14:25;632:901:83;;;4805:1:25;632:901:83;;5142:14:25;632:901:83;8799:91:26;8847:32;;;632:901:83;8847:32:26;632:901:83;;;;;8847:32:26;632:901:83;;;;-1:-1:-1;632:901:83;;;;;;;;;;-1:-1:-1;;;;;;;;;;;632:901:83;;;;;;;;;;;;;;;;4805:1:25;632:901:83;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;632:901:83;;;;;;;;;;2600:7:26;632:901:83;;;;;;;;;;;;;;;;4805:1:25;632:901:83;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;632:901:83;;;;;;821:14;632:901;;;;;;;;;;;;821:14;632:901;;;;;;;;;;;;;;;;4805:1:25;632:901:83;;;;;;-1:-1:-1;632:901:83;;;;;;;;;;;;;;;;;;;;-1:-1:-1;632:901:83;;;;;;;;;;-1:-1:-1;;;;;;;;;;;632:901:83;;;;;;;;;;;;;;;4805:1:25;632:901:83;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;632:901:83;;;;;;;;;;2600:7:26;632:901:83;;;;;;;;;;;;;;;;4805:1:25;632:901:83;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;632:901:83;;;;;;821:14;632:901;;;;;;;;;;;;821:14;632:901;;;;;;;;;;;;;;;;4805:1:25;632:901:83;;;;;;-1:-1:-1;632:901:83;;;;;;;;-1:-1:-1;632:901:83;;;;;;;;;;-1:-1:-1;;;;;;;;;;;632:901:83;;;;;;;;;;;;;;;;4805:1:25;632:901:83;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;632:901:83;;;;;;;;;;2600:7:26;632:901:83;;;;;;;;;;;;;;;;4805:1:25;632:901:83;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;632:901:83;;;;;;821:14;632:901;;;;;;;;;;;;821:14;632:901;;;;;;;;;;;;;;;;4805:1:25;632:901:83;;;;;;-1:-1:-1;632:901:83;;;;;;;;-1:-1:-1;632:901:83;;;;;;;;;;-1:-1:-1;;;;;;;;;;;632:901:83;;;;;;;;;;;;;;;4805:1:25;632:901:83;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;632:901:83;;;;;;;;;;2600:7:26;632:901:83;;;;;;;;;;;;;;;;4805:1:25;632:901:83;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;632:901:83;;;;;;821:14;632:901;;;;;;;;;;;;821:14;632:901;;;;;;;;;;;;;;;;4805:1:25;632:901:83;;;;;;-1:-1:-1;632:901:83;;;;4979:67:25;-1:-1:-1;;632:901:83;;;-1:-1:-1;;;;;;;;;;;632:901:83;4979:67:25;;;4851:91;6498:23;;;632:901:83;4908:23:25;632:901:83;;4908:23:25;4855:30;4872:13;;;4855:30;;;4790:50;4818:4;4810:25;:30;;-1:-1:-1;4790:50:25;;4726:34;;;-1:-1:-1;4726:34:25;;632:901:83;;;;;;-1:-1:-1;;632:901:83;;;;4616:5:26;632:901:83;;:::i;:::-;;;966:10:29;;4616:5:26;:::i;:::-;632:901:83;;;;;;;;;;;;;-1:-1:-1;;632:901:83;;;;;;;-1:-1:-1;;;;;;;;;;;632:901:83;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;-1:-1:-1;;;;;;;;;;;632:901:83;;;;;;;-1:-1:-1;632:901:83;;;;;;;-1:-1:-1;632:901:83;;-1:-1:-1;632:901:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;632:901:83;;;;;;;;;;;;;;;;;;;;-1:-1:-1;632:901:83;;-1:-1:-1;632:901:83;;;;;;;;-1:-1:-1;;632:901:83;;;;-1:-1:-1;;;;;;;;;;;632:901:83;;;-1:-1:-1;;;;;632:901:83;;;;;;;;;;;;;;-1:-1:-1;;632:901:83;;;;2806:64:31;632:901:83;5777:18:31;:43;;;632:901:83;;;;;;-1:-1:-1;;;;;;;;;;;632:901:83;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;;;;;;;632:901:83;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;5965:13:31;632:901:83;;;;6000:4:31;632:901:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;632:901:83;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;632:901:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;632:901:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;632:901:83;;;;;;;;;;;;-1:-1:-1;;;632:901:83;;;;;;;5777:43:31;632:901:83;5799:16:31;632:901:83;5799:21:31;5777:43;;632:901:83;;;;;;-1:-1:-1;;632:901:83;;;;;;:::i;:::-;;;;;;;;;972:64:30;632:901:83;;;;;;;;;;;;;;;;;;;-1:-1:-1;;632:901:83;;;;1479:5:27;632:901:83;;:::i;:::-;;;966:10:29;1448:5:27;966:10:29;;1448:5:27;;:::i;:::-;1479;:::i;632:901:83:-;;;;;;-1:-1:-1;;632:901:83;;;;2303:62:24;;:::i;:::-;-1:-1:-1;;;;;;;;;;;632:901:83;;-1:-1:-1;;;;;;632:901:83;;;;;;;-1:-1:-1;;;;;632:901:83;3975:40:24;632:901:83;;3975:40:24;632:901:83;;;;;;;-1:-1:-1;;632:901:83;;;;-1:-1:-1;;;;;632:901:83;;:::i;:::-;;;;-1:-1:-1;;;;;;;;;;;632:901:83;;;;;;;;;;;;;;;;;;;-1:-1:-1;;632:901:83;;;;2303:62:24;;:::i;:::-;-1:-1:-1;;;;;;;;;;;632:901:83;;;;;;6431:44:25;;;;632:901:83;6427:105:25;;1427:1:83;632:901;;;;;-1:-1:-1;;;;;;;;;;;632:901:83;6656:20:25;632:901:83;;;1427:1;632:901;;6656:20:25;632:901:83;6431:44:25;632:901:83;1427:1;632:901;;;6450:25:25;;6431:44;;632:901:83;;;;;;-1:-1:-1;;632:901:83;;;;1005:5:27;632:901:83;;966:10:29;1005:5:27;:::i;632:901:83:-;;;;;;-1:-1:-1;;632:901:83;;;;;;:::i;:::-;2303:62:24;;:::i;:::-;-1:-1:-1;;;;;632:901:83;;8803:21:26;8799:91;;8928:5;632:901:83;;;8928:5:26;;:::i;632:901:83:-;;;;;;-1:-1:-1;;632:901:83;;;;;4094:23:31;;:::i;:::-;632:901:83;;;;;;;;;;;;-1:-1:-1;;632:901:83;;;;;;;3827:2:26;632:901:83;;;;;;;;;-1:-1:-1;;632:901:83;;;;6198:5:26;632:901:83;;:::i;:::-;;;:::i;:::-;;;966:10:29;6162:5:26;966:10:29;;6162:5:26;;:::i;:::-;6198;:::i;632:901:83:-;;;;;;-1:-1:-1;;632:901:83;;;;;-1:-1:-1;;;;;;;;;;;632:901:83;;;;;;;;;;;;;-1:-1:-1;;632:901:83;;;;10117:4:26;632:901:83;;:::i;:::-;;;966:10:29;;10117:4:26;:::i;632:901:83:-;;;;;;-1:-1:-1;;632:901:83;;;;;;;-1:-1:-1;;;;;;;;;;;632:901:83;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;;;;;;632:901:83;;;;;;;-1:-1:-1;632:901:83;;;;;;;-1:-1:-1;632:901:83;;-1:-1:-1;632:901:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;632:901:83;;;;;;;;-1:-1:-1;;632:901:83;;;;:::o;:::-;;;;-1:-1:-1;;;;;632:901:83;;;;;;:::o;:::-;;;;-1:-1:-1;;;;;632:901:83;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;-1:-1:-1;;;;;632:901:83;;;;;4867:13:26;632:901:83;;;;;;:::o;3405:215:24:-;-1:-1:-1;;;;;632:901:83;3489:22:24;;3485:91;;-1:-1:-1;;;;;;;;;;;632:901:83;;-1:-1:-1;;;;;;632:901:83;;;;;;;-1:-1:-1;;;;;632:901:83;3975:40:24;-1:-1:-1;;3975:40:24;3405:215::o;3485:91::-;3534:31;;;3509:1;3534:31;3509:1;3534:31;632:901:83;;3509:1:24;3534:31;11745:477:26;;;4867:20;;;:::i;:::-;632:901:83;;;;;;;-1:-1:-1;632:901:83;;;;-1:-1:-1;632:901:83;;;;;11910:37:26;;11906:310;;11745:477;;;;;:::o;11906:310::-;11967:24;;;11963:130;;-1:-1:-1;;;;;632:901:83;;11141:19:26;11137:89;;-1:-1:-1;;;;;632:901:83;;11239:21:26;11235:90;;11334:20;;;:::i;:::-;:29;632:901:83;;;;;;-1:-1:-1;632:901:83;;;;-1:-1:-1;632:901:83;;;;;11906:310:26;;;;;;11235:90;11283:31;;;-1:-1:-1;11283:31:26;-1:-1:-1;11283:31:26;632:901:83;;-1:-1:-1;11283:31:26;11137:89;11183:32;;;-1:-1:-1;11183:32:26;-1:-1:-1;11183:32:26;632:901:83;;-1:-1:-1;11183:32:26;11963:130;12018:60;;;;;;-1:-1:-1;12018:60:26;632:901:83;;;;;;12018:60:26;632:901:83;;;;;;-1:-1:-1;12018:60:26;6605:300;-1:-1:-1;;;;;632:901:83;;6688:18:26;;6684:86;;-1:-1:-1;;;;;632:901:83;;6783:16:26;;6779:86;;632:901:83;6704:1:26;632:901:83;-1:-1:-1;;;;;;;;;;;632:901:83;;;6704:1:26;632:901:83;;7609:19:26;;;7605:115;;632:901:83;8358:25:26;632:901:83;;;;6704:1:26;632:901:83;-1:-1:-1;;;;;;;;;;;632:901:83;;;;6704:1:26;632:901:83;;;6704:1:26;632:901:83;-1:-1:-1;;;;;;;;;;;632:901:83;;;6704:1:26;632:901:83;;;;;;;;;;;;8358:25:26;6605:300::o;7605:115::-;7655:50;;;;6704:1;7655:50;;632:901:83;;;;;;6704:1:26;7655:50;6684:86;6729:30;;;6704:1;6729:30;6704:1;6729:30;632:901:83;;6704:1:26;6729:30;2658:162:24;-1:-1:-1;;;;;;;;;;;632:901:83;-1:-1:-1;;;;;632:901:83;966:10:29;2717:23:24;2713:101;;2658:162::o;2713:101::-;2763:40;;;-1:-1:-1;2763:40:24;966:10:29;2763:40:24;632:901:83;;-1:-1:-1;2763:40:24;9259:206:26;;;;-1:-1:-1;;;;;632:901:83;9329:21:26;;9325:89;;632:901:83;9348:1:26;632:901:83;-1:-1:-1;;;;;;;;;;;632:901:83;;;9348:1:26;632:901:83;;7609:19:26;;;7605:115;;632:901:83;;9348:1:26;632:901:83;;8358:25:26;632:901:83;;;;-1:-1:-1;;;;;;;;;;;632:901:83;;;;;;;;-1:-1:-1;;;;;;;;;;;632:901:83;;-1:-1:-1;;;;;;;;;;;632:901:83;;;;;;8358:25:26;9259:206::o;7605:115::-;7655:50;;;;;9348:1;7655:50;;632:901:83;;;;;;9348:1:26;7655:50;10976:487;;-1:-1:-1;;;;;632:901:83;;;11141:19:26;;11137:89;;-1:-1:-1;;;;;632:901:83;;11239:21:26;;11235:90;;11415:31;11334:20;;632:901:83;11334:20:26;;:::i;:::-;632:901:83;-1:-1:-1;632:901:83;;;;;-1:-1:-1;632:901:83;;;;;;;11415:31:26;10976:487::o;7220:1170::-;-1:-1:-1;;;;;;;;;;;632:901:83;;;;;;;;;;-1:-1:-1;;;;;;;;;;;632:901:83;;;;-1:-1:-1;;;;;632:901:83;;;;8358:25:26;;632:901:83;;7918:16:26;632:901:83;;;-1:-1:-1;;;;;;;;;;;632:901:83;;-1:-1:-1;;;;;;;;;;;632:901:83;7914:429:26;632:901:83;;;;;8358:25:26;7220:1170::o;7914:429::-;632:901:83;;;-1:-1:-1;;;;;;;;;;;632:901:83;;;;;;;;;;;7914:429:26;;632:901:83;;;;;941:9;;;;;632:901;941:9;4130:191:31;4243:17;;:::i;:::-;4262:20;;:::i;:::-;632:901:83;;4221:92:31;;;;632:901:83;2073:95:31;632:901:83;;;2073:95:31;;632:901:83;2073:95:31;;;632:901:83;4284:13:31;2073:95;;;632:901:83;4307:4:31;2073:95;;;632:901:83;2073:95:31;4221:92;;;;;;:::i;:::-;632:901:83;4211:103:31;;4130:191;:::o;7084:141:25:-;632:901:83;-1:-1:-1;;;;;;;;;;;632:901:83;;;;7150:18:25;7146:73;;7084:141::o;7146:73::-;7191:17;;;-1:-1:-1;7191:17:25;;-1:-1:-1;7191:17:25;5140:1530:55;;;6199:66;6186:79;;6182:164;;632:901:83;;;;;;-1:-1:-1;632:901:83;;;;;;;;;;;;;;;;;;;6457:24:55;;;;;;;;;-1:-1:-1;6457:24:55;-1:-1:-1;;;;;632:901:83;;6495:20:55;6491:113;;6614:49;-1:-1:-1;6614:49:55;-1:-1:-1;5140:1530:55;:::o;6491:113::-;6531:62;-1:-1:-1;6531:62:55;6457:24;6531:62;-1:-1:-1;6531:62:55;:::o;6457:24::-;632:901:83;;;-1:-1:-1;632:901:83;;;;;6182:164:55;6281:54;;;6297:1;6281:54;6301:30;6281:54;;:::o;7196:532::-;632:901:83;;;;;;7282:29:55;;;7327:7;;:::o;7278:444::-;632:901:83;7378:38:55;;632:901:83;;7439:23:55;;;7291:20;7439:23;632:901:83;7291:20:55;7439:23;7374:348;7492:35;7483:44;;7492:35;;7550:46;;;;7291:20;7550:46;632:901:83;;;7291:20:55;7550:46;7479:243;7626:30;7617:39;7613:109;;7479:243;7196:532::o;7613:109::-;7679:32;;;7291:20;7679:32;632:901:83;;;7291:20:55;7679:32;632:901:83;;;;7291:20:55;632:901:83;;;;;7291:20:55;632:901:83;7058:687:31;632:901:83;;-1:-1:-1;;;;;;;;;;;632:901:83;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;7230:22:31;;;;7275;7268:29;:::o;7226:513::-;-1:-1:-1;;2806:64:31;632:901:83;7603:15:31;;;;7638:17;:::o;7599:130::-;7694:20;7701:13;7694:20;:::o;632:901:83:-;-1:-1:-1;;;;;;;;;;;;632:901:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;632:901:83;;;-1:-1:-1;632:901:83;;;;;;;;;;;-1:-1:-1;632:901:83;;7966:723:31;632:901:83;;-1:-1:-1;;;;;;;;;;;632:901:83;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;8147:25:31;;;;8195;8188:32;:::o;8143:540::-;-1:-1:-1;;8507:16:31;632:901:83;8541:18:31;;;;8579:20;:::o;632:901:83:-;-1:-1:-1;;;;;;;;;;;;632:901:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;632:901:83;;;-1:-1:-1;632:901:83;;;;;;;;;;;-1:-1:-1;632:901:83;","linkReferences":{}},"methodIdentifiers":{"DOMAIN_SEPARATOR()":"3644e515","allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","burn(uint256)":"42966c68","burnFrom(address,uint256)":"79cc6790","decimals()":"313ce567","eip712Domain()":"84b0196e","initialize(address)":"c4d66de8","mint(address,uint256)":"40c10f19","name()":"06fdde03","nonces(address)":"7ecebe00","owner()":"8da5cb5b","permit(address,address,uint256,uint256,uint8,bytes32,bytes32)":"d505accf","reinitialize()":"6c2eb350","renounceOwnership()":"715018a6","symbol()":"95d89b41","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd","transferOwnership(address)":"f2fde38b"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"ECDSAInvalidSignature\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"length\",\"type\":\"uint256\"}],\"name\":\"ECDSAInvalidSignatureLength\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"ECDSAInvalidSignatureS\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"allowance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientAllowance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidApprover\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSpender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"ERC2612ExpiredSignature\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"signer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"ERC2612InvalidSigner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"currentNonce\",\"type\":\"uint256\"}],\"name\":\"InvalidAccountNonce\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"OwnableInvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"OwnableUnauthorizedAccount\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"EIP712DomainChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DOMAIN_SEPARATOR\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"burn\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"burnFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"eip712Domain\",\"outputs\":[{\"internalType\":\"bytes1\",\"name\":\"fields\",\"type\":\"bytes1\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"version\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"verifyingContract\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"},{\"internalType\":\"uint256[]\",\"name\":\"extensions\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"initialOwner\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"mint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"nonces\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"permit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"reinitialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"errors\":{\"ECDSAInvalidSignature()\":[{\"details\":\"The signature derives the `address(0)`.\"}],\"ECDSAInvalidSignatureLength(uint256)\":[{\"details\":\"The signature has an invalid length.\"}],\"ECDSAInvalidSignatureS(bytes32)\":[{\"details\":\"The signature has an S value that is in the upper half order.\"}],\"ERC20InsufficientAllowance(address,uint256,uint256)\":[{\"details\":\"Indicates a failure with the `spender`\\u2019s `allowance`. Used in transfers.\",\"params\":{\"allowance\":\"Amount of tokens a `spender` is allowed to operate with.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"ERC20InsufficientBalance(address,uint256,uint256)\":[{\"details\":\"Indicates an error related to the current `balance` of a `sender`. Used in transfers.\",\"params\":{\"balance\":\"Current balance for the interacting account.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidApprover(address)\":[{\"details\":\"Indicates a failure with the `approver` of a token to be approved. Used in approvals.\",\"params\":{\"approver\":\"Address initiating an approval operation.\"}}],\"ERC20InvalidReceiver(address)\":[{\"details\":\"Indicates a failure with the token `receiver`. Used in transfers.\",\"params\":{\"receiver\":\"Address to which tokens are being transferred.\"}}],\"ERC20InvalidSender(address)\":[{\"details\":\"Indicates a failure with the token `sender`. Used in transfers.\",\"params\":{\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidSpender(address)\":[{\"details\":\"Indicates a failure with the `spender` to be approved. Used in approvals.\",\"params\":{\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"ERC2612ExpiredSignature(uint256)\":[{\"details\":\"Permit deadline has expired.\"}],\"ERC2612InvalidSigner(address,address)\":[{\"details\":\"Mismatched signature.\"}],\"InvalidAccountNonce(address,uint256)\":[{\"details\":\"The nonce used for an `account` is not the expected current nonce.\"}],\"InvalidInitialization()\":[{\"details\":\"The contract is already initialized.\"}],\"NotInitializing()\":[{\"details\":\"The contract is not initializing.\"}],\"OwnableInvalidOwner(address)\":[{\"details\":\"The owner is not a valid owner account. (eg. `address(0)`)\"}],\"OwnableUnauthorizedAccount(address)\":[{\"details\":\"The caller account is not authorized to perform an operation.\"}]},\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance.\"},\"EIP712DomainChanged()\":{\"details\":\"MAY be emitted to signal that the domain could have changed.\"},\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero.\"}},\"kind\":\"dev\",\"methods\":{\"DOMAIN_SEPARATOR()\":{\"details\":\"Returns the domain separator used in the encoding of the signature for {permit}, as defined by {EIP712}.\"},\"allowance(address,address)\":{\"details\":\"See {IERC20-allowance}.\"},\"approve(address,uint256)\":{\"details\":\"See {IERC20-approve}. NOTE: If `value` is the maximum `uint256`, the allowance is not updated on `transferFrom`. This is semantically equivalent to an infinite approval. Requirements: - `spender` cannot be the zero address.\"},\"balanceOf(address)\":{\"details\":\"See {IERC20-balanceOf}.\"},\"burn(uint256)\":{\"details\":\"Destroys a `value` amount of tokens from the caller. See {ERC20-_burn}.\"},\"burnFrom(address,uint256)\":{\"details\":\"Destroys a `value` amount of tokens from `account`, deducting from the caller's allowance. See {ERC20-_burn} and {ERC20-allowance}. Requirements: - the caller must have allowance for ``accounts``'s tokens of at least `value`.\"},\"constructor\":{\"custom:oz-upgrades-unsafe-allow\":\"constructor\"},\"decimals()\":{\"details\":\"Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5.05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the default value returned by this function, unless it's overridden. NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}.\"},\"eip712Domain()\":{\"details\":\"See {IERC-5267}.\"},\"name()\":{\"details\":\"Returns the name of the token.\"},\"nonces(address)\":{\"details\":\"Returns the current nonce for `owner`. This value must be included whenever a signature is generated for {permit}. Every successful call to {permit} increases ``owner``'s nonce by one. This prevents a signature from being used multiple times.\"},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"permit(address,address,uint256,uint256,uint8,bytes32,bytes32)\":{\"details\":\"Sets `value` as the allowance of `spender` over ``owner``'s tokens, given ``owner``'s signed approval. IMPORTANT: The same issues {IERC20-approve} has related to transaction ordering also apply here. Emits an {Approval} event. Requirements: - `spender` cannot be the zero address. - `deadline` must be a timestamp in the future. - `v`, `r` and `s` must be a valid `secp256k1` signature from `owner` over the EIP712-formatted function arguments. - the signature must use ``owner``'s current nonce (see {nonces}). For more information on the signature format, see the https://eips.ethereum.org/EIPS/eip-2612#specification[relevant EIP section]. CAUTION: See Security Considerations above.\"},\"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.\"},\"symbol()\":{\"details\":\"Returns the symbol of the token, usually a shorter version of the name.\"},\"totalSupply()\":{\"details\":\"See {IERC20-totalSupply}.\"},\"transfer(address,uint256)\":{\"details\":\"See {IERC20-transfer}. Requirements: - `to` cannot be the zero address. - the caller must have a balance of at least `value`.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC20-transferFrom}. Skips emitting an {Approval} event indicating an allowance update. This is not required by the ERC. See {xref-ERC20-_approve-address-address-uint256-bool-}[_approve]. NOTE: Does not update the allowance if the current allowance is the maximum `uint256`. Requirements: - `from` and `to` cannot be the zero address. - `from` must have a balance of at least `value`. - the caller must have allowance for ``from``'s tokens of at least `value`.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/WrappedVara.sol\":\"WrappedVara\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/openzeppelin-contracts-upgradeable/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts-upgradeable/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin-foundry-upgrades/=lib/openzeppelin-foundry-upgrades/src/\",\":solidity-stringutils/=lib/openzeppelin-foundry-upgrades/lib/solidity-stringutils/\"],\"viaIR\":true},\"sources\":{\"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":{\"keccak256\":\"0xc163fcf9bb10138631a9ba5564df1fa25db9adff73bd9ee868a8ae1858fe093a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9706d43a0124053d9880f6e31a59f31bc0a6a3dc1acd66ce0a16e1111658c5f6\",\"dweb:/ipfs/QmUFmfowzkRwGtDu36cXV9SPTBHJ3n7dG9xQiK5B28jTf2\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609\",\"dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/ERC20Upgradeable.sol\":{\"keccak256\":\"0x5a5f22721ffb66d3e1ecc568c0d37c91f91223d8663c8a5e78396e780b849c72\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bdd108133c98ea251513424bf17905090c8a7e0755562a6d12a81b8bccbd6152\",\"dweb:/ipfs/QmahpnB63Up9aVx4jDqxEgry5BRN5itHRvy9rwBvMT2yqL\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/extensions/ERC20BurnableUpgradeable.sol\":{\"keccak256\":\"0xe74dd150d031e8ecf9755893a2aae02dec954158140424f11c28ff689a48492f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://554e0934aecff6725e10d4aeb2e70ff214384b68782b1ba9f9322a0d16105a2f\",\"dweb:/ipfs/QmVvmHc7xPftEkWvJRNAqv7mXihKLEAVXpiebG7RT5rhMW\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/extensions/ERC20PermitUpgradeable.sol\":{\"keccak256\":\"0x6ff1ff6f25ebee2f778775b26d81610a04e37993bc06a7f54e0c768330ef1506\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6f1fa246b88750fe26a30495db812eb2788dba8e5191a11f9dedb37bd6f4d883\",\"dweb:/ipfs/QmZUcDXW1a9xEAfQwqUG6NXQ6AwCs5gfv89NkwzTCeDify\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://08e39f23d5b4692f9a40803e53a8156b72b4c1f9902a88cd65ba964db103dab9\",\"dweb:/ipfs/QmPKn6EYDgpga7KtpkA8wV2yJCYGMtc9K4LkJfhKX2RVSV\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/NoncesUpgradeable.sol\":{\"keccak256\":\"0x778f4a1546a1c6c726ecc8e2348a2789690fb8f26e12bd9d89537669167b79a4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://851d3dfe724e918ff0a064b206e1ef46b27ab0df2aa2c8af976973a22ef59827\",\"dweb:/ipfs/Qmd4wb7zX8ueYhMVBy5PJjfsANK3Ra3pKPN7qQkNsdwGHn\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/cryptography/EIP712Upgradeable.sol\":{\"keccak256\":\"0x06d93977f6018359ef432d3b649b7c92efb0326d3ddbbeaf08648105bdcacbbf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c8574fdb7ffb0e8e9841ba6394432d3e31b496a0953baa6f64837062fb29b02e\",\"dweb:/ipfs/QmdjZNdnBUVzzWXMYXsFmHdvh2KL5Lnc1uBfvbuqPNU9X3\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC5267.sol\":{\"keccak256\":\"0x92aa1df62dc3d33f1656d63bede0923e0df0b706ad4137c8b10b0a8fe549fd92\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c5c0f29195ad64cbe556da8e257dac8f05f78c53f90323c0d2accf8e6922d33a\",\"dweb:/ipfs/QmQ61TED8uaCZwcbh8KkgRSsCav7x7HbcGHwHts3U4DmUP\"]},\"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x9cac1f97ecc92043dd19235d6677e40cf6bac382886a94f7a80a957846b24229\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a1e0c924e0edfdfd4abceeb552d99f1cd95c0d387b38ccb1f67c583607e3d155\",\"dweb:/ipfs/QmZAi6qKa66zuS3jyEhsQR9bBNnZe1wSognYqw9nvseyUz\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009\",\"dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x88f7b6f070ad1de2bf899da6978ed74b5038eac78c01b7359b92b60c3d965c28\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c436edb6733a036607c6f17cc590e8ee351363a8cb4c564a98d9a66392c89323\",\"dweb:/ipfs/QmcJvJR2K3EtYcKEXVpQ1WqT6TvAbVem5HR1FirAsqEXFR\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Permit.sol\":{\"keccak256\":\"0xe9d36d0c892aea68546d53f21e02223f7f542295c10110a0764336f9ffeab6d1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://34d4d72a89193f4d5223763e6d871443fb32a22d6024566843f4ee42eed68bdd\",\"dweb:/ipfs/Qmbsc6kJJNhrkNXP7g7KeqzRETQEvzSXg3ZmJmVLhaEahB\"]},\"lib/openzeppelin-contracts/contracts/utils/Panic.sol\":{\"keccak256\":\"0x29074fe5a74bb024c57b3570abf6c74d8bceed3438694d470fd0166a3ecd196a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f4f8435ccbc56e384f4cc9ac9ff491cf30a82f2beac00e33ccc2cf8af3f77cc3\",\"dweb:/ipfs/QmUKJXxTe6nn1qfgnX8xbnboNNAPUuEmJyGqMZCKNiFBgn\"]},\"lib/openzeppelin-contracts/contracts/utils/Strings.sol\":{\"keccak256\":\"0x686a21b9be2594ccfda3a855270dd8ebc4288b8a9ed84ecd4ef1bca2ea3fc46b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7c0bbc37f4d1aaae086d73f13f41b8043a9ad5b07f30a2fd7b8a74ead99b1ef6\",\"dweb:/ipfs/QmZpFyfCCFpbrkNtfHTn18qV7VvptPdoLN82Qu5XtMCci6\"]},\"lib/openzeppelin-contracts/contracts/utils/cryptography/ECDSA.sol\":{\"keccak256\":\"0xa548dd62e9e17616ae80a1e7ac7b1447ae377efc27fb9f7b4f4fbf5c0b0a1dfb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d27e9ae3e67eb229444cd43d49db5be57c586155fd1d363b3b1f9bb1b7bb0087\",\"dweb:/ipfs/QmT2GFnpXsTWBs8bkeVJtQ4VNX7f3igxwB77JBCr4mDXb3\"]},\"lib/openzeppelin-contracts/contracts/utils/cryptography/MessageHashUtils.sol\":{\"keccak256\":\"0x3f1998a2904792ff2a576827876638b4917573186537f878d30b23277a3b8d38\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a8dfb08ed617c9d874de901e44ac8af7af7b13e7c84000a1da3cdaf6004593e8\",\"dweb:/ipfs/QmPX2hZAvCZJCQNSXcWqhxh3xp6UitwESrw3K2u3aYNqiu\"]},\"lib/openzeppelin-contracts/contracts/utils/math/Math.sol\":{\"keccak256\":\"0x2be34e47fc07baed68c4878618a6e13c13243753c3f656ca1b6e05287c5df4ee\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e0bc7f3ae934c76aae959cf061b9764a6dbb2313c4281944dde278cd418599da\",\"dweb:/ipfs/QmYtYLrwC1nPJd86kVrQFQAGeS3XGmhXjCj25LQGfGkugi\"]},\"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0x8cd59334ed58b8884cd1f775afc9400db702e674e5d6a7a438c655b9de788d7e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://99e62c7de7318f413b6352e3f2704ca23e7725ff144e43c8bd574d12dbf29047\",\"dweb:/ipfs/QmSEXG2rBx1VxU2uFTWdiChjDvA4osEY2mesjmoVeVhHko\"]},\"lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol\":{\"keccak256\":\"0x5c8d4114f077f6803bb89b8b07bfa26dfbf8f2001708e4e7fdf1e8d9ddd42f44\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b66c74efa1f994e3ea467b4165da1575857b29d81bec36e94678fe494ce5c615\",\"dweb:/ipfs/QmeXQFdzSJFmN8UdhxMqQwwUh1U2WEha5NoVLbSg3pCJc5\"]},\"src/WrappedVara.sol\":{\"keccak256\":\"0x546b478734d72773f420a95e83f146771966ea29f4448e8ff9c7a739d13bba43\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://e61793dfd06dfc3393a06527a7ca1c51aeb0a273bbfcc5d10f966cfd5f98e0b4\",\"dweb:/ipfs/Qmed9Ksq1uscNucYVuccr3NigGgYgJ5vFqEXvEGLrjTmoJ\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.26+commit.8a97fa7a"},"language":"Solidity","output":{"abi":[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"type":"error","name":"ECDSAInvalidSignature"},{"inputs":[{"internalType":"uint256","name":"length","type":"uint256"}],"type":"error","name":"ECDSAInvalidSignatureLength"},{"inputs":[{"internalType":"bytes32","name":"s","type":"bytes32"}],"type":"error","name":"ECDSAInvalidSignatureS"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"allowance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"type":"error","name":"ERC20InsufficientAllowance"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"type":"error","name":"ERC20InsufficientBalance"},{"inputs":[{"internalType":"address","name":"approver","type":"address"}],"type":"error","name":"ERC20InvalidApprover"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"}],"type":"error","name":"ERC20InvalidReceiver"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"type":"error","name":"ERC20InvalidSender"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"type":"error","name":"ERC20InvalidSpender"},{"inputs":[{"internalType":"uint256","name":"deadline","type":"uint256"}],"type":"error","name":"ERC2612ExpiredSignature"},{"inputs":[{"internalType":"address","name":"signer","type":"address"},{"internalType":"address","name":"owner","type":"address"}],"type":"error","name":"ERC2612InvalidSigner"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"currentNonce","type":"uint256"}],"type":"error","name":"InvalidAccountNonce"},{"inputs":[],"type":"error","name":"InvalidInitialization"},{"inputs":[],"type":"error","name":"NotInitializing"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"type":"error","name":"OwnableInvalidOwner"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"type":"error","name":"OwnableUnauthorizedAccount"},{"inputs":[{"internalType":"address","name":"owner","type":"address","indexed":true},{"internalType":"address","name":"spender","type":"address","indexed":true},{"internalType":"uint256","name":"value","type":"uint256","indexed":false}],"type":"event","name":"Approval","anonymous":false},{"inputs":[],"type":"event","name":"EIP712DomainChanged","anonymous":false},{"inputs":[{"internalType":"uint64","name":"version","type":"uint64","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":"OwnershipTransferred","anonymous":false},{"inputs":[{"internalType":"address","name":"from","type":"address","indexed":true},{"internalType":"address","name":"to","type":"address","indexed":true},{"internalType":"uint256","name":"value","type":"uint256","indexed":false}],"type":"event","name":"Transfer","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"DOMAIN_SEPARATOR","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"stateMutability":"view","type":"function","name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"value","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"burn"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"burnFrom"},{"inputs":[],"stateMutability":"view","type":"function","name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"eip712Domain","outputs":[{"internalType":"bytes1","name":"fields","type":"bytes1"},{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"version","type":"string"},{"internalType":"uint256","name":"chainId","type":"uint256"},{"internalType":"address","name":"verifyingContract","type":"address"},{"internalType":"bytes32","name":"salt","type":"bytes32"},{"internalType":"uint256[]","name":"extensions","type":"uint256[]"}]},{"inputs":[{"internalType":"address","name":"initialOwner","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"initialize"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"mint"},{"inputs":[],"stateMutability":"view","type":"function","name":"name","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"stateMutability":"view","type":"function","name":"nonces","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"permit"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"reinitialize"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"renounceOwnership"},{"inputs":[],"stateMutability":"view","type":"function","name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"transferOwnership"}],"devdoc":{"kind":"dev","methods":{"DOMAIN_SEPARATOR()":{"details":"Returns the domain separator used in the encoding of the signature for {permit}, as defined by {EIP712}."},"allowance(address,address)":{"details":"See {IERC20-allowance}."},"approve(address,uint256)":{"details":"See {IERC20-approve}. NOTE: If `value` is the maximum `uint256`, the allowance is not updated on `transferFrom`. This is semantically equivalent to an infinite approval. Requirements: - `spender` cannot be the zero address."},"balanceOf(address)":{"details":"See {IERC20-balanceOf}."},"burn(uint256)":{"details":"Destroys a `value` amount of tokens from the caller. See {ERC20-_burn}."},"burnFrom(address,uint256)":{"details":"Destroys a `value` amount of tokens from `account`, deducting from the caller's allowance. See {ERC20-_burn} and {ERC20-allowance}. Requirements: - the caller must have allowance for ``accounts``'s tokens of at least `value`."},"constructor":{"custom:oz-upgrades-unsafe-allow":"constructor"},"decimals()":{"details":"Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5.05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the default value returned by this function, unless it's overridden. NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}."},"eip712Domain()":{"details":"See {IERC-5267}."},"name()":{"details":"Returns the name of the token."},"nonces(address)":{"details":"Returns the current nonce for `owner`. This value must be included whenever a signature is generated for {permit}. Every successful call to {permit} increases ``owner``'s nonce by one. This prevents a signature from being used multiple times."},"owner()":{"details":"Returns the address of the current owner."},"permit(address,address,uint256,uint256,uint8,bytes32,bytes32)":{"details":"Sets `value` as the allowance of `spender` over ``owner``'s tokens, given ``owner``'s signed approval. IMPORTANT: The same issues {IERC20-approve} has related to transaction ordering also apply here. Emits an {Approval} event. Requirements: - `spender` cannot be the zero address. - `deadline` must be a timestamp in the future. - `v`, `r` and `s` must be a valid `secp256k1` signature from `owner` over the EIP712-formatted function arguments. - the signature must use ``owner``'s current nonce (see {nonces}). For more information on the signature format, see the https://eips.ethereum.org/EIPS/eip-2612#specification[relevant EIP section]. CAUTION: See Security Considerations above."},"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."},"symbol()":{"details":"Returns the symbol of the token, usually a shorter version of the name."},"totalSupply()":{"details":"See {IERC20-totalSupply}."},"transfer(address,uint256)":{"details":"See {IERC20-transfer}. Requirements: - `to` cannot be the zero address. - the caller must have a balance of at least `value`."},"transferFrom(address,address,uint256)":{"details":"See {IERC20-transferFrom}. Skips emitting an {Approval} event indicating an allowance update. This is not required by the ERC. See {xref-ERC20-_approve-address-address-uint256-bool-}[_approve]. NOTE: Does not update the allowance if the current allowance is the maximum `uint256`. Requirements: - `from` and `to` cannot be the zero address. - `from` must have a balance of at least `value`. - the caller must have allowance for ``from``'s tokens of at least `value`."},"transferOwnership(address)":{"details":"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."}},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/openzeppelin-contracts-upgradeable/lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","halmos-cheatcodes/=lib/openzeppelin-contracts-upgradeable/lib/halmos-cheatcodes/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/","openzeppelin-foundry-upgrades/=lib/openzeppelin-foundry-upgrades/src/","solidity-stringutils/=lib/openzeppelin-foundry-upgrades/lib/solidity-stringutils/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/WrappedVara.sol":"WrappedVara"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol":{"keccak256":"0xc163fcf9bb10138631a9ba5564df1fa25db9adff73bd9ee868a8ae1858fe093a","urls":["bzz-raw://9706d43a0124053d9880f6e31a59f31bc0a6a3dc1acd66ce0a16e1111658c5f6","dweb:/ipfs/QmUFmfowzkRwGtDu36cXV9SPTBHJ3n7dG9xQiK5B28jTf2"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol":{"keccak256":"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b","urls":["bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609","dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/ERC20Upgradeable.sol":{"keccak256":"0x5a5f22721ffb66d3e1ecc568c0d37c91f91223d8663c8a5e78396e780b849c72","urls":["bzz-raw://bdd108133c98ea251513424bf17905090c8a7e0755562a6d12a81b8bccbd6152","dweb:/ipfs/QmahpnB63Up9aVx4jDqxEgry5BRN5itHRvy9rwBvMT2yqL"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/extensions/ERC20BurnableUpgradeable.sol":{"keccak256":"0xe74dd150d031e8ecf9755893a2aae02dec954158140424f11c28ff689a48492f","urls":["bzz-raw://554e0934aecff6725e10d4aeb2e70ff214384b68782b1ba9f9322a0d16105a2f","dweb:/ipfs/QmVvmHc7xPftEkWvJRNAqv7mXihKLEAVXpiebG7RT5rhMW"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/extensions/ERC20PermitUpgradeable.sol":{"keccak256":"0x6ff1ff6f25ebee2f778775b26d81610a04e37993bc06a7f54e0c768330ef1506","urls":["bzz-raw://6f1fa246b88750fe26a30495db812eb2788dba8e5191a11f9dedb37bd6f4d883","dweb:/ipfs/QmZUcDXW1a9xEAfQwqUG6NXQ6AwCs5gfv89NkwzTCeDify"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol":{"keccak256":"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397","urls":["bzz-raw://08e39f23d5b4692f9a40803e53a8156b72b4c1f9902a88cd65ba964db103dab9","dweb:/ipfs/QmPKn6EYDgpga7KtpkA8wV2yJCYGMtc9K4LkJfhKX2RVSV"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/NoncesUpgradeable.sol":{"keccak256":"0x778f4a1546a1c6c726ecc8e2348a2789690fb8f26e12bd9d89537669167b79a4","urls":["bzz-raw://851d3dfe724e918ff0a064b206e1ef46b27ab0df2aa2c8af976973a22ef59827","dweb:/ipfs/Qmd4wb7zX8ueYhMVBy5PJjfsANK3Ra3pKPN7qQkNsdwGHn"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/cryptography/EIP712Upgradeable.sol":{"keccak256":"0x06d93977f6018359ef432d3b649b7c92efb0326d3ddbbeaf08648105bdcacbbf","urls":["bzz-raw://c8574fdb7ffb0e8e9841ba6394432d3e31b496a0953baa6f64837062fb29b02e","dweb:/ipfs/QmdjZNdnBUVzzWXMYXsFmHdvh2KL5Lnc1uBfvbuqPNU9X3"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC5267.sol":{"keccak256":"0x92aa1df62dc3d33f1656d63bede0923e0df0b706ad4137c8b10b0a8fe549fd92","urls":["bzz-raw://c5c0f29195ad64cbe556da8e257dac8f05f78c53f90323c0d2accf8e6922d33a","dweb:/ipfs/QmQ61TED8uaCZwcbh8KkgRSsCav7x7HbcGHwHts3U4DmUP"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol":{"keccak256":"0x9cac1f97ecc92043dd19235d6677e40cf6bac382886a94f7a80a957846b24229","urls":["bzz-raw://a1e0c924e0edfdfd4abceeb552d99f1cd95c0d387b38ccb1f67c583607e3d155","dweb:/ipfs/QmZAi6qKa66zuS3jyEhsQR9bBNnZe1wSognYqw9nvseyUz"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4","urls":["bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009","dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"keccak256":"0x88f7b6f070ad1de2bf899da6978ed74b5038eac78c01b7359b92b60c3d965c28","urls":["bzz-raw://c436edb6733a036607c6f17cc590e8ee351363a8cb4c564a98d9a66392c89323","dweb:/ipfs/QmcJvJR2K3EtYcKEXVpQ1WqT6TvAbVem5HR1FirAsqEXFR"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Permit.sol":{"keccak256":"0xe9d36d0c892aea68546d53f21e02223f7f542295c10110a0764336f9ffeab6d1","urls":["bzz-raw://34d4d72a89193f4d5223763e6d871443fb32a22d6024566843f4ee42eed68bdd","dweb:/ipfs/Qmbsc6kJJNhrkNXP7g7KeqzRETQEvzSXg3ZmJmVLhaEahB"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Panic.sol":{"keccak256":"0x29074fe5a74bb024c57b3570abf6c74d8bceed3438694d470fd0166a3ecd196a","urls":["bzz-raw://f4f8435ccbc56e384f4cc9ac9ff491cf30a82f2beac00e33ccc2cf8af3f77cc3","dweb:/ipfs/QmUKJXxTe6nn1qfgnX8xbnboNNAPUuEmJyGqMZCKNiFBgn"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Strings.sol":{"keccak256":"0x686a21b9be2594ccfda3a855270dd8ebc4288b8a9ed84ecd4ef1bca2ea3fc46b","urls":["bzz-raw://7c0bbc37f4d1aaae086d73f13f41b8043a9ad5b07f30a2fd7b8a74ead99b1ef6","dweb:/ipfs/QmZpFyfCCFpbrkNtfHTn18qV7VvptPdoLN82Qu5XtMCci6"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/cryptography/ECDSA.sol":{"keccak256":"0xa548dd62e9e17616ae80a1e7ac7b1447ae377efc27fb9f7b4f4fbf5c0b0a1dfb","urls":["bzz-raw://d27e9ae3e67eb229444cd43d49db5be57c586155fd1d363b3b1f9bb1b7bb0087","dweb:/ipfs/QmT2GFnpXsTWBs8bkeVJtQ4VNX7f3igxwB77JBCr4mDXb3"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/cryptography/MessageHashUtils.sol":{"keccak256":"0x3f1998a2904792ff2a576827876638b4917573186537f878d30b23277a3b8d38","urls":["bzz-raw://a8dfb08ed617c9d874de901e44ac8af7af7b13e7c84000a1da3cdaf6004593e8","dweb:/ipfs/QmPX2hZAvCZJCQNSXcWqhxh3xp6UitwESrw3K2u3aYNqiu"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/Math.sol":{"keccak256":"0x2be34e47fc07baed68c4878618a6e13c13243753c3f656ca1b6e05287c5df4ee","urls":["bzz-raw://e0bc7f3ae934c76aae959cf061b9764a6dbb2313c4281944dde278cd418599da","dweb:/ipfs/QmYtYLrwC1nPJd86kVrQFQAGeS3XGmhXjCj25LQGfGkugi"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol":{"keccak256":"0x8cd59334ed58b8884cd1f775afc9400db702e674e5d6a7a438c655b9de788d7e","urls":["bzz-raw://99e62c7de7318f413b6352e3f2704ca23e7725ff144e43c8bd574d12dbf29047","dweb:/ipfs/QmSEXG2rBx1VxU2uFTWdiChjDvA4osEY2mesjmoVeVhHko"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol":{"keccak256":"0x5c8d4114f077f6803bb89b8b07bfa26dfbf8f2001708e4e7fdf1e8d9ddd42f44","urls":["bzz-raw://b66c74efa1f994e3ea467b4165da1575857b29d81bec36e94678fe494ce5c615","dweb:/ipfs/QmeXQFdzSJFmN8UdhxMqQwwUh1U2WEha5NoVLbSg3pCJc5"],"license":"MIT"},"src/WrappedVara.sol":{"keccak256":"0x546b478734d72773f420a95e83f146771966ea29f4448e8ff9c7a739d13bba43","urls":["bzz-raw://e61793dfd06dfc3393a06527a7ca1c51aeb0a273bbfcc5d10f966cfd5f98e0b4","dweb:/ipfs/Qmed9Ksq1uscNucYVuccr3NigGgYgJ5vFqEXvEGLrjTmoJ"],"license":"UNLICENSED"}},"version":1},"storageLayout":{"storage":[],"types":{}},"ast":{"absolutePath":"src/WrappedVara.sol","id":56394,"exportedSymbols":{"ERC20BurnableUpgradeable":[39957],"ERC20PermitUpgradeable":[40126],"ERC20Upgradeable":[39895],"Initializable":[39278],"OwnableUpgradeable":[39024],"WrappedVara":[56393]},"nodeType":"SourceUnit","src":"39:1495:83","nodes":[{"id":56297,"nodeType":"PragmaDirective","src":"39:24:83","nodes":[],"literals":["solidity","^","0.8",".26"]},{"id":56299,"nodeType":"ImportDirective","src":"65:96:83","nodes":[],"absolutePath":"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol","file":"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol","nameLocation":"-1:-1:-1","scope":56394,"sourceUnit":39279,"symbolAliases":[{"foreign":{"id":56298,"name":"Initializable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39278,"src":"73:13:83","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":56301,"nodeType":"ImportDirective","src":"162:102:83","nodes":[],"absolutePath":"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/ERC20Upgradeable.sol","file":"@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol","nameLocation":"-1:-1:-1","scope":56394,"sourceUnit":39896,"symbolAliases":[{"foreign":{"id":56300,"name":"ERC20Upgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39895,"src":"170:16:83","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":56303,"nodeType":"ImportDirective","src":"265:133:83","nodes":[],"absolutePath":"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/extensions/ERC20BurnableUpgradeable.sol","file":"@openzeppelin/contracts-upgradeable/token/ERC20/extensions/ERC20BurnableUpgradeable.sol","nameLocation":"-1:-1:-1","scope":56394,"sourceUnit":39958,"symbolAliases":[{"foreign":{"id":56302,"name":"ERC20BurnableUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39957,"src":"273:24:83","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":56305,"nodeType":"ImportDirective","src":"399:101:83","nodes":[],"absolutePath":"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol","file":"@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol","nameLocation":"-1:-1:-1","scope":56394,"sourceUnit":39025,"symbolAliases":[{"foreign":{"id":56304,"name":"OwnableUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39024,"src":"407:18:83","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":56307,"nodeType":"ImportDirective","src":"501:129:83","nodes":[],"absolutePath":"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/extensions/ERC20PermitUpgradeable.sol","file":"@openzeppelin/contracts-upgradeable/token/ERC20/extensions/ERC20PermitUpgradeable.sol","nameLocation":"-1:-1:-1","scope":56394,"sourceUnit":40127,"symbolAliases":[{"foreign":{"id":56306,"name":"ERC20PermitUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":40126,"src":"509:22:83","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":56393,"nodeType":"ContractDefinition","src":"632:901:83","nodes":[{"id":56320,"nodeType":"VariableDeclaration","src":"784:51:83","nodes":[],"constant":true,"mutability":"constant","name":"TOKEN_NAME","nameLocation":"808:10:83","scope":56393,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":56318,"name":"string","nodeType":"ElementaryTypeName","src":"784:6:83","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"hexValue":"577261707065642056617261","id":56319,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"821:14:83","typeDescriptions":{"typeIdentifier":"t_stringliteral_985e2e9885ca23de2896caee5fad5adf116e2558361aa44c502ff8b2c1b2a41b","typeString":"literal_string \"Wrapped Vara\""},"value":"Wrapped Vara"},"visibility":"private"},{"id":56323,"nodeType":"VariableDeclaration","src":"841:46:83","nodes":[],"constant":true,"mutability":"constant","name":"TOKEN_SYMBOL","nameLocation":"865:12:83","scope":56393,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":56321,"name":"string","nodeType":"ElementaryTypeName","src":"841:6:83","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"hexValue":"5756415241","id":56322,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"880:7:83","typeDescriptions":{"typeIdentifier":"t_stringliteral_203a7c23d1b412674989fae6808de72f52c6953d49ac548796ba3c05451693a4","typeString":"literal_string \"WVARA\""},"value":"WVARA"},"visibility":"private"},{"id":56326,"nodeType":"VariableDeclaration","src":"893:57:83","nodes":[],"constant":true,"mutability":"constant","name":"TOKEN_INITIAL_SUPPLY","nameLocation":"918:20:83","scope":56393,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":56324,"name":"uint256","nodeType":"ElementaryTypeName","src":"893:7:83","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"315f3030305f303030","id":56325,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"941:9:83","typeDescriptions":{"typeIdentifier":"t_rational_1000000_by_1","typeString":"int_const 1000000"},"value":"1_000_000"},"visibility":"private"},{"id":56334,"nodeType":"FunctionDefinition","src":"1010:53:83","nodes":[],"body":{"id":56333,"nodeType":"Block","src":"1024:39:83","nodes":[],"statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":56330,"name":"_disableInitializers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39246,"src":"1034:20:83","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":56331,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1034:22:83","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":56332,"nodeType":"ExpressionStatement","src":"1034:22:83"}]},"documentation":{"id":56327,"nodeType":"StructuredDocumentation","src":"957:48:83","text":"@custom:oz-upgrades-unsafe-allow constructor"},"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":56328,"nodeType":"ParameterList","parameters":[],"src":"1021:2:83"},"returnParameters":{"id":56329,"nodeType":"ParameterList","parameters":[],"src":"1024:0:83"},"scope":56393,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":56368,"nodeType":"FunctionDefinition","src":"1069:297:83","nodes":[],"body":{"id":56367,"nodeType":"Block","src":"1130:236:83","nodes":[],"statements":[{"expression":{"arguments":[{"id":56342,"name":"TOKEN_NAME","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56320,"src":"1153:10:83","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":56343,"name":"TOKEN_SYMBOL","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56323,"src":"1165:12:83","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":56341,"name":"__ERC20_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39346,"src":"1140:12:83","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory,string memory)"}},"id":56344,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1140:38:83","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":56345,"nodeType":"ExpressionStatement","src":"1140:38:83"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":56346,"name":"__ERC20Burnable_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39916,"src":"1188:20:83","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":56347,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1188:22:83","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":56348,"nodeType":"ExpressionStatement","src":"1188:22:83"},{"expression":{"arguments":[{"id":56350,"name":"initialOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56336,"src":"1235:12:83","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":56349,"name":"__Ownable_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38884,"src":"1220:14:83","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":56351,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1220:28:83","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":56352,"nodeType":"ExpressionStatement","src":"1220:28:83"},{"expression":{"arguments":[{"id":56354,"name":"TOKEN_NAME","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56320,"src":"1277:10:83","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":56353,"name":"__ERC20Permit_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":40013,"src":"1258:18:83","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory)"}},"id":56355,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1258:30:83","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":56356,"nodeType":"ExpressionStatement","src":"1258:30:83"},{"expression":{"arguments":[{"id":56358,"name":"initialOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56336,"src":"1305:12:83","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":56364,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":56359,"name":"TOKEN_INITIAL_SUPPLY","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56326,"src":"1319:20:83","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":56363,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":56360,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1342:2:83","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":56361,"name":"decimals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39415,"src":"1348:8:83","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint8_$","typeString":"function () view returns (uint8)"}},"id":56362,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1348:10:83","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"1342:16:83","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1319:39:83","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":56357,"name":"_mint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39727,"src":"1299:5:83","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":56365,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1299:60:83","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":56366,"nodeType":"ExpressionStatement","src":"1299:60:83"}]},"functionSelector":"c4d66de8","implemented":true,"kind":"function","modifiers":[{"id":56339,"kind":"modifierInvocation","modifierName":{"id":56338,"name":"initializer","nameLocations":["1118:11:83"],"nodeType":"IdentifierPath","referencedDeclaration":39132,"src":"1118:11:83"},"nodeType":"ModifierInvocation","src":"1118:11:83"}],"name":"initialize","nameLocation":"1078:10:83","parameters":{"id":56337,"nodeType":"ParameterList","parameters":[{"constant":false,"id":56336,"mutability":"mutable","name":"initialOwner","nameLocation":"1097:12:83","nodeType":"VariableDeclaration","scope":56368,"src":"1089:20:83","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":56335,"name":"address","nodeType":"ElementaryTypeName","src":"1089:7:83","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1088:22:83"},"returnParameters":{"id":56340,"nodeType":"ParameterList","parameters":[],"src":"1130:0:83"},"scope":56393,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":56377,"nodeType":"FunctionDefinition","src":"1372:60:83","nodes":[],"body":{"id":56376,"nodeType":"Block","src":"1430:2:83","nodes":[],"statements":[]},"functionSelector":"6c2eb350","implemented":true,"kind":"function","modifiers":[{"id":56371,"kind":"modifierInvocation","modifierName":{"id":56370,"name":"onlyOwner","nameLocations":["1403:9:83"],"nodeType":"IdentifierPath","referencedDeclaration":38919,"src":"1403:9:83"},"nodeType":"ModifierInvocation","src":"1403:9:83"},{"arguments":[{"hexValue":"32","id":56373,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1427:1:83","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"}],"id":56374,"kind":"modifierInvocation","modifierName":{"id":56372,"name":"reinitializer","nameLocations":["1413:13:83"],"nodeType":"IdentifierPath","referencedDeclaration":39179,"src":"1413:13:83"},"nodeType":"ModifierInvocation","src":"1413:16:83"}],"name":"reinitialize","nameLocation":"1381:12:83","parameters":{"id":56369,"nodeType":"ParameterList","parameters":[],"src":"1393:2:83"},"returnParameters":{"id":56375,"nodeType":"ParameterList","parameters":[],"src":"1430:0:83"},"scope":56393,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":56392,"nodeType":"FunctionDefinition","src":"1438:93:83","nodes":[],"body":{"id":56391,"nodeType":"Block","src":"1497:34:83","nodes":[],"statements":[{"expression":{"arguments":[{"id":56387,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56379,"src":"1513:2:83","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":56388,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56381,"src":"1517:6:83","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":56386,"name":"_mint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39727,"src":"1507:5:83","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":56389,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1507:17:83","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":56390,"nodeType":"ExpressionStatement","src":"1507:17:83"}]},"functionSelector":"40c10f19","implemented":true,"kind":"function","modifiers":[{"id":56384,"kind":"modifierInvocation","modifierName":{"id":56383,"name":"onlyOwner","nameLocations":["1487:9:83"],"nodeType":"IdentifierPath","referencedDeclaration":38919,"src":"1487:9:83"},"nodeType":"ModifierInvocation","src":"1487:9:83"}],"name":"mint","nameLocation":"1447:4:83","parameters":{"id":56382,"nodeType":"ParameterList","parameters":[{"constant":false,"id":56379,"mutability":"mutable","name":"to","nameLocation":"1460:2:83","nodeType":"VariableDeclaration","scope":56392,"src":"1452:10:83","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":56378,"name":"address","nodeType":"ElementaryTypeName","src":"1452:7:83","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":56381,"mutability":"mutable","name":"amount","nameLocation":"1472:6:83","nodeType":"VariableDeclaration","scope":56392,"src":"1464:14:83","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":56380,"name":"uint256","nodeType":"ElementaryTypeName","src":"1464:7:83","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1451:28:83"},"returnParameters":{"id":56385,"nodeType":"ParameterList","parameters":[],"src":"1497:0:83"},"scope":56393,"stateMutability":"nonpayable","virtual":false,"visibility":"public"}],"abstract":false,"baseContracts":[{"baseName":{"id":56308,"name":"Initializable","nameLocations":["660:13:83"],"nodeType":"IdentifierPath","referencedDeclaration":39278,"src":"660:13:83"},"id":56309,"nodeType":"InheritanceSpecifier","src":"660:13:83"},{"baseName":{"id":56310,"name":"ERC20Upgradeable","nameLocations":["679:16:83"],"nodeType":"IdentifierPath","referencedDeclaration":39895,"src":"679:16:83"},"id":56311,"nodeType":"InheritanceSpecifier","src":"679:16:83"},{"baseName":{"id":56312,"name":"ERC20BurnableUpgradeable","nameLocations":["701:24:83"],"nodeType":"IdentifierPath","referencedDeclaration":39957,"src":"701:24:83"},"id":56313,"nodeType":"InheritanceSpecifier","src":"701:24:83"},{"baseName":{"id":56314,"name":"OwnableUpgradeable","nameLocations":["731:18:83"],"nodeType":"IdentifierPath","referencedDeclaration":39024,"src":"731:18:83"},"id":56315,"nodeType":"InheritanceSpecifier","src":"731:18:83"},{"baseName":{"id":56316,"name":"ERC20PermitUpgradeable","nameLocations":["755:22:83"],"nodeType":"IdentifierPath","referencedDeclaration":40126,"src":"755:22:83"},"id":56317,"nodeType":"InheritanceSpecifier","src":"755:22:83"}],"canonicalName":"WrappedVara","contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"linearizedBaseContracts":[56393,40126,40283,40627,40821,41968,39024,39957,39895,40863,41932,41906,40172,39278],"name":"WrappedVara","nameLocation":"641:11:83","scope":56394,"usedErrors":[38860,38865,39041,39044,39992,39999,40186,40833,40838,40843,40852,40857,40862,43050,43055,43060],"usedEvents":[38871,39049,40801,41840,41849]}],"license":"UNLICENSED"},"id":83} \ No newline at end of file +{"abi":[{"type":"constructor","inputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"DOMAIN_SEPARATOR","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"allowance","inputs":[{"name":"owner","type":"address","internalType":"address"},{"name":"spender","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"approve","inputs":[{"name":"spender","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"balanceOf","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"burn","inputs":[{"name":"value","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"burnFrom","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"decimals","inputs":[],"outputs":[{"name":"","type":"uint8","internalType":"uint8"}],"stateMutability":"view"},{"type":"function","name":"eip712Domain","inputs":[],"outputs":[{"name":"fields","type":"bytes1","internalType":"bytes1"},{"name":"name","type":"string","internalType":"string"},{"name":"version","type":"string","internalType":"string"},{"name":"chainId","type":"uint256","internalType":"uint256"},{"name":"verifyingContract","type":"address","internalType":"address"},{"name":"salt","type":"bytes32","internalType":"bytes32"},{"name":"extensions","type":"uint256[]","internalType":"uint256[]"}],"stateMutability":"view"},{"type":"function","name":"initialize","inputs":[{"name":"initialOwner","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"mint","inputs":[{"name":"to","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"name","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"nonces","inputs":[{"name":"owner","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"owner","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"permit","inputs":[{"name":"owner","type":"address","internalType":"address"},{"name":"spender","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"},{"name":"deadline","type":"uint256","internalType":"uint256"},{"name":"v","type":"uint8","internalType":"uint8"},{"name":"r","type":"bytes32","internalType":"bytes32"},{"name":"s","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"reinitialize","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"renounceOwnership","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"symbol","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"totalSupply","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"transfer","inputs":[{"name":"to","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"transferFrom","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"transferOwnership","inputs":[{"name":"newOwner","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"Approval","inputs":[{"name":"owner","type":"address","indexed":true,"internalType":"address"},{"name":"spender","type":"address","indexed":true,"internalType":"address"},{"name":"value","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"EIP712DomainChanged","inputs":[],"anonymous":false},{"type":"event","name":"Initialized","inputs":[{"name":"version","type":"uint64","indexed":false,"internalType":"uint64"}],"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":"Transfer","inputs":[{"name":"from","type":"address","indexed":true,"internalType":"address"},{"name":"to","type":"address","indexed":true,"internalType":"address"},{"name":"value","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"error","name":"ECDSAInvalidSignature","inputs":[]},{"type":"error","name":"ECDSAInvalidSignatureLength","inputs":[{"name":"length","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ECDSAInvalidSignatureS","inputs":[{"name":"s","type":"bytes32","internalType":"bytes32"}]},{"type":"error","name":"ERC20InsufficientAllowance","inputs":[{"name":"spender","type":"address","internalType":"address"},{"name":"allowance","type":"uint256","internalType":"uint256"},{"name":"needed","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ERC20InsufficientBalance","inputs":[{"name":"sender","type":"address","internalType":"address"},{"name":"balance","type":"uint256","internalType":"uint256"},{"name":"needed","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ERC20InvalidApprover","inputs":[{"name":"approver","type":"address","internalType":"address"}]},{"type":"error","name":"ERC20InvalidReceiver","inputs":[{"name":"receiver","type":"address","internalType":"address"}]},{"type":"error","name":"ERC20InvalidSender","inputs":[{"name":"sender","type":"address","internalType":"address"}]},{"type":"error","name":"ERC20InvalidSpender","inputs":[{"name":"spender","type":"address","internalType":"address"}]},{"type":"error","name":"ERC2612ExpiredSignature","inputs":[{"name":"deadline","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ERC2612InvalidSigner","inputs":[{"name":"signer","type":"address","internalType":"address"},{"name":"owner","type":"address","internalType":"address"}]},{"type":"error","name":"InvalidAccountNonce","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"currentNonce","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InvalidInitialization","inputs":[]},{"type":"error","name":"NotInitializing","inputs":[]},{"type":"error","name":"OwnableInvalidOwner","inputs":[{"name":"owner","type":"address","internalType":"address"}]},{"type":"error","name":"OwnableUnauthorizedAccount","inputs":[{"name":"account","type":"address","internalType":"address"}]}],"bytecode":{"object":"0x6080806040523460d0577ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005460ff8160401c1660c1576002600160401b03196001600160401b03821601605c575b604051611cc090816100d58239f35b6001600160401b0319166001600160401b039081177ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005581527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602090a15f80604d565b63f92ee8a960e01b5f5260045ffd5b5f80fdfe60806040526004361015610011575f80fd5b5f3560e01c806306fdde031461120f578063095ea7b3146111e957806318160ddd146111c057806323b872dd14611188578063313ce5671461116d5780633644e5151461114b57806340c10f191461110e57806342966c68146110f15780636c2eb3501461105757806370a0823114611013578063715018a614610fac57806379cc679014610f7c5780637ecebe0014610f2657806384b0196e14610c525780638da5cb5b14610c1e57806395d89b4114610b24578063a9059cbb14610af3578063c4d66de8146102d8578063d505accf14610176578063dd62ed3e1461012f5763f2fde38b14610100575f80fd5b3461012b57602036600319011261012b5761012961011c6112f0565b6101246115b4565b6113ae565b005b5f80fd5b3461012b57604036600319011261012b576101486112f0565b610159610153611306565b91611376565b9060018060a01b03165f52602052602060405f2054604051908152f35b3461012b5760e036600319011261012b5761018f6112f0565b610197611306565b604435906064359260843560ff8116810361012b578442116102c55761028a6102939160018060a01b03841696875f527f5ab42ced628888259c08ac98db1eb0cf702fc1501344311d8b100cd1bfe4bb0060205260405f20908154916001830190556040519060208201927f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c984528a604084015260018060a01b038916606084015289608084015260a083015260c082015260c0815261025860e082611354565b5190206102636117c2565b906040519161190160f01b83526002830152602282015260c43591604260a4359220611854565b909291926118e1565b6001600160a01b03168481036102ae5750610129935061169d565b84906325c0072360e11b5f5260045260245260445ffd5b8463313c898160e11b5f5260045260245ffd5b3461012b57602036600319011261012b576102f16112f0565b5f80516020611c6b833981519152549060ff8260401c16159167ffffffffffffffff811680159081610aeb575b6001149081610ae1575b159081610ad8575b50610ac95767ffffffffffffffff1981166001175f80516020611c6b8339815191525582610a9d575b5060405191610369604084611354565b600c83526b57726170706564205661726160a01b602084015260405191610391604084611354565b6005835264575641524160d81b60208401526103ab611829565b6103b3611829565b835167ffffffffffffffff81116107aa576103db5f80516020611b8b8339815191525461131c565b601f8111610a2e575b50602094601f82116001146109b3579481929394955f926109a8575b50508160011b915f199060031b1c1916175f80516020611b8b833981519152555b825167ffffffffffffffff81116107aa576104495f80516020611beb8339815191525461131c565b601f8111610939575b506020601f82116001146108be57819293945f926108b3575b50508160011b915f199060031b1c1916175f80516020611beb833981519152555b610494611829565b61049c611829565b6104a4611829565b6104ad816113ae565b604051916104bc604084611354565b600c83526b57726170706564205661726160a01b60208401526104dd611829565b604051916104ec604084611354565b60018352603160f81b6020840152610502611829565b835167ffffffffffffffff81116107aa5761052a5f80516020611bcb8339815191525461131c565b601f8111610844575b50602094601f82116001146107c9579481929394955f926107be575b50508160011b915f199060031b1c1916175f80516020611bcb833981519152555b825167ffffffffffffffff81116107aa576105985f80516020611c4b8339815191525461131c565b601f811161073b575b506020601f82116001146106c057819293945f926106b5575b50508160011b915f199060031b1c1916175f80516020611c4b833981519152555b5f7fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d1008190557fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d101556001600160a01b038116156106a25769d3c21bcecceda100000061064591611700565b61064b57005b68ff0000000000000000195f80516020611c6b83398151915254165f80516020611c6b833981519152557fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602060405160018152a1005b63ec442f0560e01b5f525f60045260245ffd5b0151905084806105ba565b601f198216905f80516020611c4b8339815191525f52805f20915f5b8181106107235750958360019596971061070b575b505050811b015f80516020611c4b833981519152556105db565b01515f1960f88460031b161c191690558480806106f1565b9192602060018192868b0151815501940192016106dc565b5f80516020611c4b8339815191525f527f5f9ce34815f8e11431c7bb75a8e6886a91478f7ffc1dbb0a98dc240fddd76b75601f830160051c810191602084106107a0575b601f0160051c01905b81811061079557506105a1565b5f8155600101610788565b909150819061077f565b634e487b7160e01b5f52604160045260245ffd5b01519050858061054f565b601f198216955f80516020611bcb8339815191525f52805f20915f5b88811061082c57508360019596979810610814575b505050811b015f80516020611bcb83398151915255610570565b01515f1960f88460031b161c191690558580806107fa565b919260206001819286850151815501940192016107e5565b5f80516020611bcb8339815191525f527f42ad5d3e1f2e6e70edcf6d991b8a3023d3fca8047a131592f9edb9fd9b89d57d601f830160051c810191602084106108a9575b601f0160051c01905b81811061089e5750610533565b5f8155600101610891565b9091508190610888565b01519050848061046b565b601f198216905f80516020611beb8339815191525f52805f20915f5b81811061092157509583600195969710610909575b505050811b015f80516020611beb8339815191525561048c565b01515f1960f88460031b161c191690558480806108ef565b9192602060018192868b0151815501940192016108da565b5f80516020611beb8339815191525f527f46a2803e59a4de4e7a4c574b1243f25977ac4c77d5a1a4a609b5394cebb4a2aa601f830160051c8101916020841061099e575b601f0160051c01905b8181106109935750610452565b5f8155600101610986565b909150819061097d565b015190508580610400565b601f198216955f80516020611b8b8339815191525f52805f20915f5b888110610a16575083600195969798106109fe575b505050811b015f80516020611b8b83398151915255610421565b01515f1960f88460031b161c191690558580806109e4565b919260206001819286850151815501940192016109cf565b5f80516020611b8b8339815191525f527f2ae08a8e29253f69ac5d979a101956ab8f8d9d7ded63fa7a83b16fc47648eab0601f830160051c81019160208410610a93575b601f0160051c01905b818110610a8857506103e4565b5f8155600101610a7b565b9091508190610a72565b68ffffffffffffffffff191668010000000000000001175f80516020611c6b8339815191525582610359565b63f92ee8a960e01b5f5260045ffd5b90501584610330565b303b159150610328565b84915061031e565b3461012b57604036600319011261012b57610b19610b0f6112f0565b60243590336114e3565b602060405160018152f35b3461012b575f36600319011261012b576040515f5f80516020611beb83398151915254610b508161131c565b8084529060018116908115610bfa5750600114610b90575b610b8c83610b7881850382611354565b6040519182916020835260208301906112cc565b0390f35b5f80516020611beb8339815191525f9081527f46a2803e59a4de4e7a4c574b1243f25977ac4c77d5a1a4a609b5394cebb4a2aa939250905b808210610be057509091508101602001610b78610b68565b919260018160209254838588010152019101909291610bc8565b60ff191660208086019190915291151560051b84019091019150610b789050610b68565b3461012b575f36600319011261012b575f80516020611c0b833981519152546040516001600160a01b039091168152602090f35b3461012b575f36600319011261012b577fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d100541580610efd575b15610ec0576040515f80516020611bcb83398151915254815f610cad8361131c565b8083529260018116908115610ea15750600114610e36575b610cd192500382611354565b6040515f80516020611c4b83398151915254815f610cee8361131c565b8083529260018116908115610e175750600114610dac575b610d1991925092610d5094930382611354565b6020610d5e60405192610d2c8385611354565b5f84525f368137604051958695600f60f81b875260e08588015260e08701906112cc565b9085820360408701526112cc565b4660608501523060808501525f60a085015283810360c08501528180845192838152019301915f5b828110610d9557505050500390f35b835185528695509381019392810192600101610d86565b505f80516020611c4b8339815191525f90815290917f5f9ce34815f8e11431c7bb75a8e6886a91478f7ffc1dbb0a98dc240fddd76b755b818310610dfb575050906020610d1992820101610d06565b6020919350806001915483858801015201910190918392610de3565b60209250610d1994915060ff191682840152151560051b820101610d06565b505f80516020611bcb8339815191525f90815290917f42ad5d3e1f2e6e70edcf6d991b8a3023d3fca8047a131592f9edb9fd9b89d57d5b818310610e85575050906020610cd192820101610cc5565b6020919350806001915483858801015201910190918392610e6d565b60209250610cd194915060ff191682840152151560051b820101610cc5565b60405162461bcd60e51b81526020600482015260156024820152741152540dcc4c8e88155b9a5b9a5d1a585b1a5e9959605a1b6044820152606490fd5b507fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d1015415610c8b565b3461012b57602036600319011261012b57610f3f6112f0565b60018060a01b03165f527f5ab42ced628888259c08ac98db1eb0cf702fc1501344311d8b100cd1bfe4bb00602052602060405f2054604051908152f35b3461012b57604036600319011261012b57610129610f986112f0565b60243590610fa782338361141f565b6115e7565b3461012b575f36600319011261012b57610fc46115b4565b5f80516020611c0b83398151915280546001600160a01b031981169091555f906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b3461012b57602036600319011261012b576001600160a01b036110346112f0565b165f525f80516020611bab833981519152602052602060405f2054604051908152f35b3461012b575f36600319011261012b5761106f6115b4565b5f80516020611c6b8339815191525460ff8160401c1680156110dc575b610ac95760029068ffffffffffffffffff1916175f80516020611c6b833981519152557fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602060405160028152a1005b50600267ffffffffffffffff8216101561108c565b3461012b57602036600319011261012b57610129600435336115e7565b3461012b57604036600319011261012b576111276112f0565b61112f6115b4565b6001600160a01b038116156106a2576101299060243590611700565b3461012b575f36600319011261012b5760206111656117c2565b604051908152f35b3461012b575f36600319011261012b57602060405160128152f35b3461012b57606036600319011261012b57610b196111a46112f0565b6111ac611306565b604435916111bb83338361141f565b6114e3565b3461012b575f36600319011261012b5760205f80516020611c2b83398151915254604051908152f35b3461012b57604036600319011261012b57610b196112056112f0565b602435903361169d565b3461012b575f36600319011261012b576040515f5f80516020611b8b8339815191525461123b8161131c565b8084529060018116908115610bfa575060011461126257610b8c83610b7881850382611354565b5f80516020611b8b8339815191525f9081527f2ae08a8e29253f69ac5d979a101956ab8f8d9d7ded63fa7a83b16fc47648eab0939250905b8082106112b257509091508101602001610b78610b68565b91926001816020925483858801015201910190929161129a565b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b600435906001600160a01b038216820361012b57565b602435906001600160a01b038216820361012b57565b90600182811c9216801561134a575b602083101461133657565b634e487b7160e01b5f52602260045260245ffd5b91607f169161132b565b90601f8019910116810190811067ffffffffffffffff8211176107aa57604052565b6001600160a01b03165f9081527f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace016020526040902090565b6001600160a01b0316801561140c575f80516020611c0b83398151915280546001600160a01b0319811683179091556001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3565b631e4fbdf760e01b5f525f60045260245ffd5b919061142a83611376565b60018060a01b0382165f5260205260405f2054925f19840361144d575b50505050565b8284106114c0576001600160a01b038116156114ad576001600160a01b0382161561149a5761147b90611376565b9060018060a01b03165f5260205260405f20910390555f808080611447565b634a1406b160e11b5f525f60045260245ffd5b63e602df0560e01b5f525f60045260245ffd5b508290637dc7a0d960e11b5f5260018060a01b031660045260245260445260645ffd5b6001600160a01b03169081156115a1576001600160a01b03169182156106a257815f525f80516020611bab83398151915260205260405f205481811061158857817fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92602092855f525f80516020611bab83398151915284520360405f2055845f525f80516020611bab833981519152825260405f20818154019055604051908152a3565b8263391434e360e21b5f5260045260245260445260645ffd5b634b637e8f60e11b5f525f60045260245ffd5b5f80516020611c0b833981519152546001600160a01b031633036115d457565b63118cdaa760e01b5f523360045260245ffd5b9091906001600160a01b031680156115a157805f525f80516020611bab83398151915260205260405f2054838110611683576020845f94957fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef938587525f80516020611bab8339815191528452036040862055805f80516020611c2b83398151915254035f80516020611c2b83398151915255604051908152a3565b915063391434e360e21b5f5260045260245260445260645ffd5b916001600160a01b0383169182156114ad576001600160a01b031692831561149a577f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925916116ec602092611376565b855f5282528060405f2055604051908152a3565b5f80516020611c2b83398151915254908282018092116117ae575f80516020611c2b833981519152919091556001600160a01b0316905f907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906020908461178c57805f80516020611c2b83398151915254035f80516020611c2b833981519152555b604051908152a3565b8484525f80516020611bab833981519152825260408420818154019055611783565b634e487b7160e01b5f52601160045260245ffd5b6117ca611955565b6117d2611a82565b6040519060208201927f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f8452604083015260608201524660808201523060a082015260a0815261182360c082611354565b51902090565b60ff5f80516020611c6b8339815191525460401c161561184557565b631afcd79f60e31b5f5260045ffd5b91907f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a084116118d6579160209360809260ff5f9560405194855216868401526040830152606082015282805260015afa156118cb575f516001600160a01b038116156118c157905f905f90565b505f906001905f90565b6040513d5f823e3d90fd5b5050505f9160039190565b600481101561194157806118f3575050565b6001810361190a5763f645eedf60e01b5f5260045ffd5b60028103611925575063fce698f760e01b5f5260045260245ffd5b60031461192f5750565b6335e2f38360e21b5f5260045260245ffd5b634e487b7160e01b5f52602160045260245ffd5b6040515f80516020611bcb83398151915254905f816119738461131c565b9182825260208201946001811690815f14611a6657506001146119fb575b61199d92500382611354565b519081156119a9572090565b50507fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d1005480156119d65790565b507fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47090565b505f80516020611bcb8339815191525f90815290917f42ad5d3e1f2e6e70edcf6d991b8a3023d3fca8047a131592f9edb9fd9b89d57d5b818310611a4a57505090602061199d92820101611991565b6020919350806001915483858801015201910190918392611a32565b60ff191686525061199d92151560051b82016020019050611991565b6040515f80516020611c4b83398151915254905f81611aa08461131c565b9182825260208201946001811690815f14611b6e5750600114611b03575b611aca92500382611354565b51908115611ad6572090565b50507fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d1015480156119d65790565b505f80516020611c4b8339815191525f90815290917f5f9ce34815f8e11431c7bb75a8e6886a91478f7ffc1dbb0a98dc240fddd76b755b818310611b52575050906020611aca92820101611abe565b6020919350806001915483858801015201910190918392611b3a565b60ff1916865250611aca92151560051b82016020019050611abe56fe52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0352c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace00a16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d10252c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace049016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930052c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace02a16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d103f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a26469706673582212207c01710bc450b8bcdeda1ea230921ccc8081b1aba057bcb3f67d3d95cb5fa00c64736f6c634300081a0033","sourceMap":"632:901:83:-:0;;;;;;;8837:64:25;632:901:83;;;;;;7896:76:25;;-1:-1:-1;;;;;;;;;;;632:901:83;;7985:34:25;7981:146;;-1:-1:-1;632:901:83;;;;;;;;;7981:146:25;-1:-1:-1;;;;;;632:901:83;-1:-1:-1;;;;;632:901:83;;;8837:64:25;632:901:83;;;8087:29:25;;632:901:83;;8087:29:25;7981:146;;;;7896:76;7938:23;;;-1:-1:-1;7938:23:25;;-1:-1:-1;7938:23:25;632:901:83;;;","linkReferences":{}},"deployedBytecode":{"object":"0x60806040526004361015610011575f80fd5b5f3560e01c806306fdde031461120f578063095ea7b3146111e957806318160ddd146111c057806323b872dd14611188578063313ce5671461116d5780633644e5151461114b57806340c10f191461110e57806342966c68146110f15780636c2eb3501461105757806370a0823114611013578063715018a614610fac57806379cc679014610f7c5780637ecebe0014610f2657806384b0196e14610c525780638da5cb5b14610c1e57806395d89b4114610b24578063a9059cbb14610af3578063c4d66de8146102d8578063d505accf14610176578063dd62ed3e1461012f5763f2fde38b14610100575f80fd5b3461012b57602036600319011261012b5761012961011c6112f0565b6101246115b4565b6113ae565b005b5f80fd5b3461012b57604036600319011261012b576101486112f0565b610159610153611306565b91611376565b9060018060a01b03165f52602052602060405f2054604051908152f35b3461012b5760e036600319011261012b5761018f6112f0565b610197611306565b604435906064359260843560ff8116810361012b578442116102c55761028a6102939160018060a01b03841696875f527f5ab42ced628888259c08ac98db1eb0cf702fc1501344311d8b100cd1bfe4bb0060205260405f20908154916001830190556040519060208201927f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c984528a604084015260018060a01b038916606084015289608084015260a083015260c082015260c0815261025860e082611354565b5190206102636117c2565b906040519161190160f01b83526002830152602282015260c43591604260a4359220611854565b909291926118e1565b6001600160a01b03168481036102ae5750610129935061169d565b84906325c0072360e11b5f5260045260245260445ffd5b8463313c898160e11b5f5260045260245ffd5b3461012b57602036600319011261012b576102f16112f0565b5f80516020611c6b833981519152549060ff8260401c16159167ffffffffffffffff811680159081610aeb575b6001149081610ae1575b159081610ad8575b50610ac95767ffffffffffffffff1981166001175f80516020611c6b8339815191525582610a9d575b5060405191610369604084611354565b600c83526b57726170706564205661726160a01b602084015260405191610391604084611354565b6005835264575641524160d81b60208401526103ab611829565b6103b3611829565b835167ffffffffffffffff81116107aa576103db5f80516020611b8b8339815191525461131c565b601f8111610a2e575b50602094601f82116001146109b3579481929394955f926109a8575b50508160011b915f199060031b1c1916175f80516020611b8b833981519152555b825167ffffffffffffffff81116107aa576104495f80516020611beb8339815191525461131c565b601f8111610939575b506020601f82116001146108be57819293945f926108b3575b50508160011b915f199060031b1c1916175f80516020611beb833981519152555b610494611829565b61049c611829565b6104a4611829565b6104ad816113ae565b604051916104bc604084611354565b600c83526b57726170706564205661726160a01b60208401526104dd611829565b604051916104ec604084611354565b60018352603160f81b6020840152610502611829565b835167ffffffffffffffff81116107aa5761052a5f80516020611bcb8339815191525461131c565b601f8111610844575b50602094601f82116001146107c9579481929394955f926107be575b50508160011b915f199060031b1c1916175f80516020611bcb833981519152555b825167ffffffffffffffff81116107aa576105985f80516020611c4b8339815191525461131c565b601f811161073b575b506020601f82116001146106c057819293945f926106b5575b50508160011b915f199060031b1c1916175f80516020611c4b833981519152555b5f7fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d1008190557fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d101556001600160a01b038116156106a25769d3c21bcecceda100000061064591611700565b61064b57005b68ff0000000000000000195f80516020611c6b83398151915254165f80516020611c6b833981519152557fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602060405160018152a1005b63ec442f0560e01b5f525f60045260245ffd5b0151905084806105ba565b601f198216905f80516020611c4b8339815191525f52805f20915f5b8181106107235750958360019596971061070b575b505050811b015f80516020611c4b833981519152556105db565b01515f1960f88460031b161c191690558480806106f1565b9192602060018192868b0151815501940192016106dc565b5f80516020611c4b8339815191525f527f5f9ce34815f8e11431c7bb75a8e6886a91478f7ffc1dbb0a98dc240fddd76b75601f830160051c810191602084106107a0575b601f0160051c01905b81811061079557506105a1565b5f8155600101610788565b909150819061077f565b634e487b7160e01b5f52604160045260245ffd5b01519050858061054f565b601f198216955f80516020611bcb8339815191525f52805f20915f5b88811061082c57508360019596979810610814575b505050811b015f80516020611bcb83398151915255610570565b01515f1960f88460031b161c191690558580806107fa565b919260206001819286850151815501940192016107e5565b5f80516020611bcb8339815191525f527f42ad5d3e1f2e6e70edcf6d991b8a3023d3fca8047a131592f9edb9fd9b89d57d601f830160051c810191602084106108a9575b601f0160051c01905b81811061089e5750610533565b5f8155600101610891565b9091508190610888565b01519050848061046b565b601f198216905f80516020611beb8339815191525f52805f20915f5b81811061092157509583600195969710610909575b505050811b015f80516020611beb8339815191525561048c565b01515f1960f88460031b161c191690558480806108ef565b9192602060018192868b0151815501940192016108da565b5f80516020611beb8339815191525f527f46a2803e59a4de4e7a4c574b1243f25977ac4c77d5a1a4a609b5394cebb4a2aa601f830160051c8101916020841061099e575b601f0160051c01905b8181106109935750610452565b5f8155600101610986565b909150819061097d565b015190508580610400565b601f198216955f80516020611b8b8339815191525f52805f20915f5b888110610a16575083600195969798106109fe575b505050811b015f80516020611b8b83398151915255610421565b01515f1960f88460031b161c191690558580806109e4565b919260206001819286850151815501940192016109cf565b5f80516020611b8b8339815191525f527f2ae08a8e29253f69ac5d979a101956ab8f8d9d7ded63fa7a83b16fc47648eab0601f830160051c81019160208410610a93575b601f0160051c01905b818110610a8857506103e4565b5f8155600101610a7b565b9091508190610a72565b68ffffffffffffffffff191668010000000000000001175f80516020611c6b8339815191525582610359565b63f92ee8a960e01b5f5260045ffd5b90501584610330565b303b159150610328565b84915061031e565b3461012b57604036600319011261012b57610b19610b0f6112f0565b60243590336114e3565b602060405160018152f35b3461012b575f36600319011261012b576040515f5f80516020611beb83398151915254610b508161131c565b8084529060018116908115610bfa5750600114610b90575b610b8c83610b7881850382611354565b6040519182916020835260208301906112cc565b0390f35b5f80516020611beb8339815191525f9081527f46a2803e59a4de4e7a4c574b1243f25977ac4c77d5a1a4a609b5394cebb4a2aa939250905b808210610be057509091508101602001610b78610b68565b919260018160209254838588010152019101909291610bc8565b60ff191660208086019190915291151560051b84019091019150610b789050610b68565b3461012b575f36600319011261012b575f80516020611c0b833981519152546040516001600160a01b039091168152602090f35b3461012b575f36600319011261012b577fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d100541580610efd575b15610ec0576040515f80516020611bcb83398151915254815f610cad8361131c565b8083529260018116908115610ea15750600114610e36575b610cd192500382611354565b6040515f80516020611c4b83398151915254815f610cee8361131c565b8083529260018116908115610e175750600114610dac575b610d1991925092610d5094930382611354565b6020610d5e60405192610d2c8385611354565b5f84525f368137604051958695600f60f81b875260e08588015260e08701906112cc565b9085820360408701526112cc565b4660608501523060808501525f60a085015283810360c08501528180845192838152019301915f5b828110610d9557505050500390f35b835185528695509381019392810192600101610d86565b505f80516020611c4b8339815191525f90815290917f5f9ce34815f8e11431c7bb75a8e6886a91478f7ffc1dbb0a98dc240fddd76b755b818310610dfb575050906020610d1992820101610d06565b6020919350806001915483858801015201910190918392610de3565b60209250610d1994915060ff191682840152151560051b820101610d06565b505f80516020611bcb8339815191525f90815290917f42ad5d3e1f2e6e70edcf6d991b8a3023d3fca8047a131592f9edb9fd9b89d57d5b818310610e85575050906020610cd192820101610cc5565b6020919350806001915483858801015201910190918392610e6d565b60209250610cd194915060ff191682840152151560051b820101610cc5565b60405162461bcd60e51b81526020600482015260156024820152741152540dcc4c8e88155b9a5b9a5d1a585b1a5e9959605a1b6044820152606490fd5b507fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d1015415610c8b565b3461012b57602036600319011261012b57610f3f6112f0565b60018060a01b03165f527f5ab42ced628888259c08ac98db1eb0cf702fc1501344311d8b100cd1bfe4bb00602052602060405f2054604051908152f35b3461012b57604036600319011261012b57610129610f986112f0565b60243590610fa782338361141f565b6115e7565b3461012b575f36600319011261012b57610fc46115b4565b5f80516020611c0b83398151915280546001600160a01b031981169091555f906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b3461012b57602036600319011261012b576001600160a01b036110346112f0565b165f525f80516020611bab833981519152602052602060405f2054604051908152f35b3461012b575f36600319011261012b5761106f6115b4565b5f80516020611c6b8339815191525460ff8160401c1680156110dc575b610ac95760029068ffffffffffffffffff1916175f80516020611c6b833981519152557fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602060405160028152a1005b50600267ffffffffffffffff8216101561108c565b3461012b57602036600319011261012b57610129600435336115e7565b3461012b57604036600319011261012b576111276112f0565b61112f6115b4565b6001600160a01b038116156106a2576101299060243590611700565b3461012b575f36600319011261012b5760206111656117c2565b604051908152f35b3461012b575f36600319011261012b57602060405160128152f35b3461012b57606036600319011261012b57610b196111a46112f0565b6111ac611306565b604435916111bb83338361141f565b6114e3565b3461012b575f36600319011261012b5760205f80516020611c2b83398151915254604051908152f35b3461012b57604036600319011261012b57610b196112056112f0565b602435903361169d565b3461012b575f36600319011261012b576040515f5f80516020611b8b8339815191525461123b8161131c565b8084529060018116908115610bfa575060011461126257610b8c83610b7881850382611354565b5f80516020611b8b8339815191525f9081527f2ae08a8e29253f69ac5d979a101956ab8f8d9d7ded63fa7a83b16fc47648eab0939250905b8082106112b257509091508101602001610b78610b68565b91926001816020925483858801015201910190929161129a565b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b600435906001600160a01b038216820361012b57565b602435906001600160a01b038216820361012b57565b90600182811c9216801561134a575b602083101461133657565b634e487b7160e01b5f52602260045260245ffd5b91607f169161132b565b90601f8019910116810190811067ffffffffffffffff8211176107aa57604052565b6001600160a01b03165f9081527f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace016020526040902090565b6001600160a01b0316801561140c575f80516020611c0b83398151915280546001600160a01b0319811683179091556001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3565b631e4fbdf760e01b5f525f60045260245ffd5b919061142a83611376565b60018060a01b0382165f5260205260405f2054925f19840361144d575b50505050565b8284106114c0576001600160a01b038116156114ad576001600160a01b0382161561149a5761147b90611376565b9060018060a01b03165f5260205260405f20910390555f808080611447565b634a1406b160e11b5f525f60045260245ffd5b63e602df0560e01b5f525f60045260245ffd5b508290637dc7a0d960e11b5f5260018060a01b031660045260245260445260645ffd5b6001600160a01b03169081156115a1576001600160a01b03169182156106a257815f525f80516020611bab83398151915260205260405f205481811061158857817fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92602092855f525f80516020611bab83398151915284520360405f2055845f525f80516020611bab833981519152825260405f20818154019055604051908152a3565b8263391434e360e21b5f5260045260245260445260645ffd5b634b637e8f60e11b5f525f60045260245ffd5b5f80516020611c0b833981519152546001600160a01b031633036115d457565b63118cdaa760e01b5f523360045260245ffd5b9091906001600160a01b031680156115a157805f525f80516020611bab83398151915260205260405f2054838110611683576020845f94957fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef938587525f80516020611bab8339815191528452036040862055805f80516020611c2b83398151915254035f80516020611c2b83398151915255604051908152a3565b915063391434e360e21b5f5260045260245260445260645ffd5b916001600160a01b0383169182156114ad576001600160a01b031692831561149a577f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925916116ec602092611376565b855f5282528060405f2055604051908152a3565b5f80516020611c2b83398151915254908282018092116117ae575f80516020611c2b833981519152919091556001600160a01b0316905f907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906020908461178c57805f80516020611c2b83398151915254035f80516020611c2b833981519152555b604051908152a3565b8484525f80516020611bab833981519152825260408420818154019055611783565b634e487b7160e01b5f52601160045260245ffd5b6117ca611955565b6117d2611a82565b6040519060208201927f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f8452604083015260608201524660808201523060a082015260a0815261182360c082611354565b51902090565b60ff5f80516020611c6b8339815191525460401c161561184557565b631afcd79f60e31b5f5260045ffd5b91907f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a084116118d6579160209360809260ff5f9560405194855216868401526040830152606082015282805260015afa156118cb575f516001600160a01b038116156118c157905f905f90565b505f906001905f90565b6040513d5f823e3d90fd5b5050505f9160039190565b600481101561194157806118f3575050565b6001810361190a5763f645eedf60e01b5f5260045ffd5b60028103611925575063fce698f760e01b5f5260045260245ffd5b60031461192f5750565b6335e2f38360e21b5f5260045260245ffd5b634e487b7160e01b5f52602160045260245ffd5b6040515f80516020611bcb83398151915254905f816119738461131c565b9182825260208201946001811690815f14611a6657506001146119fb575b61199d92500382611354565b519081156119a9572090565b50507fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d1005480156119d65790565b507fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47090565b505f80516020611bcb8339815191525f90815290917f42ad5d3e1f2e6e70edcf6d991b8a3023d3fca8047a131592f9edb9fd9b89d57d5b818310611a4a57505090602061199d92820101611991565b6020919350806001915483858801015201910190918392611a32565b60ff191686525061199d92151560051b82016020019050611991565b6040515f80516020611c4b83398151915254905f81611aa08461131c565b9182825260208201946001811690815f14611b6e5750600114611b03575b611aca92500382611354565b51908115611ad6572090565b50507fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d1015480156119d65790565b505f80516020611c4b8339815191525f90815290917f5f9ce34815f8e11431c7bb75a8e6886a91478f7ffc1dbb0a98dc240fddd76b755b818310611b52575050906020611aca92820101611abe565b6020919350806001915483858801015201910190918392611b3a565b60ff1916865250611aca92151560051b82016020019050611abe56fe52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0352c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace00a16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d10252c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace049016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930052c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace02a16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d103f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a26469706673582212207c01710bc450b8bcdeda1ea230921ccc8081b1aba057bcb3f67d3d95cb5fa00c64736f6c634300081a0033","sourceMap":"632:901:83:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;632:901:83;;;;2357:1:24;632:901:83;;:::i;:::-;2303:62:24;;:::i;:::-;2357:1;:::i;:::-;632:901:83;;;;;;;;;;;-1:-1:-1;;632:901:83;;;;;;:::i;:::-;4867:20:26;632:901:83;;:::i;:::-;4867:20:26;;:::i;:::-;:29;632:901:83;;;;;;-1:-1:-1;632:901:83;;;;;-1:-1:-1;632:901:83;;;;;;;;;;;;;;-1:-1:-1;;632:901:83;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;;;;2301:15:28;;:26;2297:97;;6967:25:55;7021:8;632:901:83;;;;;;;;;;;;972:64:30;632:901:83;;;;;;;;;;;;;;;;2435:78:28;632:901:83;2435:78:28;;632:901:83;1279:95:28;632:901:83;;1279:95:28;632:901:83;1279:95:28;;632:901:83;;;;;;;;;1279:95:28;;632:901:83;1279:95:28;632:901:83;1279:95:28;;632:901:83;;1279:95:28;;632:901:83;;1279:95:28;;632:901:83;;2435:78:28;;;632:901:83;2435:78:28;;:::i;:::-;632:901:83;2425:89:28;;4094:23:31;;:::i;:::-;3515:233:56;632:901:83;3515:233:56;;-1:-1:-1;;;3515:233:56;;;;;;;;;;632:901:83;;;3515:233:56;632:901:83;;3515:233:56;;6967:25:55;:::i;:::-;7021:8;;;;;:::i;:::-;-1:-1:-1;;;;;632:901:83;2638:15:28;;;2634:88;;10117:4:26;;;;;:::i;2634:88:28:-;2676:35;;;;;632:901:83;2676:35:28;632:901:83;;;;;;2676:35:28;2297:97;2350:33;;;;632:901:83;2350:33:28;632:901:83;;;;2350:33:28;632:901:83;;;;;;-1:-1:-1;;632:901:83;;;;;;:::i;:::-;-1:-1:-1;;;;;;;;;;;632:901:83;;;;;;;4301:16:25;632:901:83;;;;4726:16:25;;:34;;;;632:901:83;4805:1:25;4790:16;:50;;;;632:901:83;4855:13:25;:30;;;;632:901:83;4851:91:25;;;-1:-1:-1;;632:901:83;;4805:1:25;632:901:83;-1:-1:-1;;;;;;;;;;;632:901:83;;4979:67:25;;632:901:83;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;632:901:83;;;;;;;;;;;:::i;:::-;821:14;632:901;;-1:-1:-1;;;632:901:83;821:14;;;6893:76:25;;:::i;:::-;;;:::i;:::-;632:901:83;;;;;;;;-1:-1:-1;;;;;;;;;;;632:901:83;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4805:1:25;632:901:83;;;;;2600:7:26;632:901:83;;;;;-1:-1:-1;;;;;;;;;;;632:901:83;;;;;;;;;;-1:-1:-1;;;;;;;;;;;632:901:83;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;4805:1:25;632:901:83;;;;;2600:7:26;632:901:83;;;;;-1:-1:-1;;;;;;;;;;;632:901:83;;6893:76:25;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;6961:1;;;:::i;:::-;632:901:83;;;;;;;:::i;:::-;;;;-1:-1:-1;;;632:901:83;;;;6893:76:25;;:::i;:::-;632:901:83;;;;;;;:::i;:::-;4805:1:25;632:901:83;;-1:-1:-1;;;632:901:83;;;;6893:76:25;;:::i;:::-;632:901:83;;;;;;;;-1:-1:-1;;;;;;;;;;;632:901:83;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4805:1:25;632:901:83;;;;;2600:7:26;632:901:83;;;;;-1:-1:-1;;;;;;;;;;;632:901:83;;;;;;;;;;-1:-1:-1;;;;;;;;;;;632:901:83;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;4805:1:25;632:901:83;;;;;2600:7:26;632:901:83;;;;;-1:-1:-1;;;;;;;;;;;632:901:83;;;2806:64:31;632:901:83;;;3902:16:31;632:901:83;-1:-1:-1;;;;;632:901:83;;8803:21:26;8799:91;;941:9:83;8928:5:26;;;:::i;:::-;5066:101:25;;632:901:83;5066:101:25;632:901:83;;-1:-1:-1;;;;;;;;;;;632:901:83;;-1:-1:-1;;;;;;;;;;;632:901:83;5142:14:25;632:901:83;;;4805:1:25;632:901:83;;5142:14:25;632:901:83;8799:91:26;8847:32;;;632:901:83;8847:32:26;632:901:83;;;;;8847:32:26;632:901:83;;;;-1:-1:-1;632:901:83;;;;;;;;;;-1:-1:-1;;;;;;;;;;;632:901:83;;;;;;;;;;;;;;;;4805:1:25;632:901:83;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;632:901:83;;;;;;;;;;2600:7:26;632:901:83;;;;;;;;;;;;;;;;4805:1:25;632:901:83;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;632:901:83;;;;;;821:14;632:901;;;;;;;;;;;;821:14;632:901;;;;;;;;;;;;;;;;4805:1:25;632:901:83;;;;;;-1:-1:-1;632:901:83;;;;;;;;;;;;;;;;;;;;-1:-1:-1;632:901:83;;;;;;;;;;-1:-1:-1;;;;;;;;;;;632:901:83;;;;;;;;;;;;;;;4805:1:25;632:901:83;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;632:901:83;;;;;;;;;;2600:7:26;632:901:83;;;;;;;;;;;;;;;;4805:1:25;632:901:83;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;632:901:83;;;;;;821:14;632:901;;;;;;;;;;;;821:14;632:901;;;;;;;;;;;;;;;;4805:1:25;632:901:83;;;;;;-1:-1:-1;632:901:83;;;;;;;;-1:-1:-1;632:901:83;;;;;;;;;;-1:-1:-1;;;;;;;;;;;632:901:83;;;;;;;;;;;;;;;;4805:1:25;632:901:83;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;632:901:83;;;;;;;;;;2600:7:26;632:901:83;;;;;;;;;;;;;;;;4805:1:25;632:901:83;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;632:901:83;;;;;;821:14;632:901;;;;;;;;;;;;821:14;632:901;;;;;;;;;;;;;;;;4805:1:25;632:901:83;;;;;;-1:-1:-1;632:901:83;;;;;;;;-1:-1:-1;632:901:83;;;;;;;;;;-1:-1:-1;;;;;;;;;;;632:901:83;;;;;;;;;;;;;;;4805:1:25;632:901:83;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;632:901:83;;;;;;;;;;2600:7:26;632:901:83;;;;;;;;;;;;;;;;4805:1:25;632:901:83;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;632:901:83;;;;;;821:14;632:901;;;;;;;;;;;;821:14;632:901;;;;;;;;;;;;;;;;4805:1:25;632:901:83;;;;;;-1:-1:-1;632:901:83;;;;4979:67:25;-1:-1:-1;;632:901:83;;;-1:-1:-1;;;;;;;;;;;632:901:83;4979:67:25;;;4851:91;6498:23;;;632:901:83;4908:23:25;632:901:83;;4908:23:25;4855:30;4872:13;;;4855:30;;;4790:50;4818:4;4810:25;:30;;-1:-1:-1;4790:50:25;;4726:34;;;-1:-1:-1;4726:34:25;;632:901:83;;;;;;-1:-1:-1;;632:901:83;;;;4616:5:26;632:901:83;;:::i;:::-;;;966:10:29;;4616:5:26;:::i;:::-;632:901:83;;;;;;;;;;;;;-1:-1:-1;;632:901:83;;;;;;;-1:-1:-1;;;;;;;;;;;632:901:83;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;-1:-1:-1;;;;;;;;;;;632:901:83;;;;;;;-1:-1:-1;632:901:83;;;;;;;-1:-1:-1;632:901:83;;-1:-1:-1;632:901:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;632:901:83;;;;;;;;;;;;;;;;;;;;-1:-1:-1;632:901:83;;-1:-1:-1;632:901:83;;;;;;;;-1:-1:-1;;632:901:83;;;;-1:-1:-1;;;;;;;;;;;632:901:83;;;-1:-1:-1;;;;;632:901:83;;;;;;;;;;;;;;-1:-1:-1;;632:901:83;;;;2806:64:31;632:901:83;5777:18:31;:43;;;632:901:83;;;;;;-1:-1:-1;;;;;;;;;;;632:901:83;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;;;;;;;632:901:83;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;5965:13:31;632:901:83;;;;6000:4:31;632:901:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;632:901:83;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;632:901:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;632:901:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;632:901:83;;;;;;;;;;;;-1:-1:-1;;;632:901:83;;;;;;;5777:43:31;632:901:83;5799:16:31;632:901:83;5799:21:31;5777:43;;632:901:83;;;;;;-1:-1:-1;;632:901:83;;;;;;:::i;:::-;;;;;;;;;972:64:30;632:901:83;;;;;;;;;;;;;;;;;;;-1:-1:-1;;632:901:83;;;;1479:5:27;632:901:83;;:::i;:::-;;;966:10:29;1448:5:27;966:10:29;;1448:5:27;;:::i;:::-;1479;:::i;632:901:83:-;;;;;;-1:-1:-1;;632:901:83;;;;2303:62:24;;:::i;:::-;-1:-1:-1;;;;;;;;;;;632:901:83;;-1:-1:-1;;;;;;632:901:83;;;;;;;-1:-1:-1;;;;;632:901:83;3975:40:24;632:901:83;;3975:40:24;632:901:83;;;;;;;-1:-1:-1;;632:901:83;;;;-1:-1:-1;;;;;632:901:83;;:::i;:::-;;;;-1:-1:-1;;;;;;;;;;;632:901:83;;;;;;;;;;;;;;;;;;;-1:-1:-1;;632:901:83;;;;2303:62:24;;:::i;:::-;-1:-1:-1;;;;;;;;;;;632:901:83;;;;;;6431:44:25;;;;632:901:83;6427:105:25;;1427:1:83;632:901;;;;;-1:-1:-1;;;;;;;;;;;632:901:83;6656:20:25;632:901:83;;;1427:1;632:901;;6656:20:25;632:901:83;6431:44:25;632:901:83;1427:1;632:901;;;6450:25:25;;6431:44;;632:901:83;;;;;;-1:-1:-1;;632:901:83;;;;1005:5:27;632:901:83;;966:10:29;1005:5:27;:::i;632:901:83:-;;;;;;-1:-1:-1;;632:901:83;;;;;;:::i;:::-;2303:62:24;;:::i;:::-;-1:-1:-1;;;;;632:901:83;;8803:21:26;8799:91;;8928:5;632:901:83;;;8928:5:26;;:::i;632:901:83:-;;;;;;-1:-1:-1;;632:901:83;;;;;4094:23:31;;:::i;:::-;632:901:83;;;;;;;;;;;;-1:-1:-1;;632:901:83;;;;;;;3827:2:26;632:901:83;;;;;;;;;-1:-1:-1;;632:901:83;;;;6198:5:26;632:901:83;;:::i;:::-;;;:::i;:::-;;;966:10:29;6162:5:26;966:10:29;;6162:5:26;;:::i;:::-;6198;:::i;632:901:83:-;;;;;;-1:-1:-1;;632:901:83;;;;;-1:-1:-1;;;;;;;;;;;632:901:83;;;;;;;;;;;;;-1:-1:-1;;632:901:83;;;;10117:4:26;632:901:83;;:::i;:::-;;;966:10:29;;10117:4:26;:::i;632:901:83:-;;;;;;-1:-1:-1;;632:901:83;;;;;;;-1:-1:-1;;;;;;;;;;;632:901:83;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;;;;;;632:901:83;;;;;;;-1:-1:-1;632:901:83;;;;;;;-1:-1:-1;632:901:83;;-1:-1:-1;632:901:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;632:901:83;;;;;;;;-1:-1:-1;;632:901:83;;;;:::o;:::-;;;;-1:-1:-1;;;;;632:901:83;;;;;;:::o;:::-;;;;-1:-1:-1;;;;;632:901:83;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;-1:-1:-1;;;;;632:901:83;;;;;4867:13:26;632:901:83;;;;;;:::o;3405:215:24:-;-1:-1:-1;;;;;632:901:83;3489:22:24;;3485:91;;-1:-1:-1;;;;;;;;;;;632:901:83;;-1:-1:-1;;;;;;632:901:83;;;;;;;-1:-1:-1;;;;;632:901:83;3975:40:24;-1:-1:-1;;3975:40:24;3405:215::o;3485:91::-;3534:31;;;3509:1;3534:31;3509:1;3534:31;632:901:83;;3509:1:24;3534:31;11745:477:26;;;4867:20;;;:::i;:::-;632:901:83;;;;;;;-1:-1:-1;632:901:83;;;;-1:-1:-1;632:901:83;;;;;11910:37:26;;11906:310;;11745:477;;;;;:::o;11906:310::-;11967:24;;;11963:130;;-1:-1:-1;;;;;632:901:83;;11141:19:26;11137:89;;-1:-1:-1;;;;;632:901:83;;11239:21:26;11235:90;;11334:20;;;:::i;:::-;:29;632:901:83;;;;;;-1:-1:-1;632:901:83;;;;-1:-1:-1;632:901:83;;;;;11906:310:26;;;;;;11235:90;11283:31;;;-1:-1:-1;11283:31:26;-1:-1:-1;11283:31:26;632:901:83;;-1:-1:-1;11283:31:26;11137:89;11183:32;;;-1:-1:-1;11183:32:26;-1:-1:-1;11183:32:26;632:901:83;;-1:-1:-1;11183:32:26;11963:130;12018:60;;;;;;-1:-1:-1;12018:60:26;632:901:83;;;;;;12018:60:26;632:901:83;;;;;;-1:-1:-1;12018:60:26;6605:300;-1:-1:-1;;;;;632:901:83;;6688:18:26;;6684:86;;-1:-1:-1;;;;;632:901:83;;6783:16:26;;6779:86;;632:901:83;6704:1:26;632:901:83;-1:-1:-1;;;;;;;;;;;632:901:83;;;6704:1:26;632:901:83;;7609:19:26;;;7605:115;;632:901:83;8358:25:26;632:901:83;;;;6704:1:26;632:901:83;-1:-1:-1;;;;;;;;;;;632:901:83;;;;6704:1:26;632:901:83;;;6704:1:26;632:901:83;-1:-1:-1;;;;;;;;;;;632:901:83;;;6704:1:26;632:901:83;;;;;;;;;;;;8358:25:26;6605:300::o;7605:115::-;7655:50;;;;6704:1;7655:50;;632:901:83;;;;;;6704:1:26;7655:50;6684:86;6729:30;;;6704:1;6729:30;6704:1;6729:30;632:901:83;;6704:1:26;6729:30;2658:162:24;-1:-1:-1;;;;;;;;;;;632:901:83;-1:-1:-1;;;;;632:901:83;966:10:29;2717:23:24;2713:101;;2658:162::o;2713:101::-;2763:40;;;-1:-1:-1;2763:40:24;966:10:29;2763:40:24;632:901:83;;-1:-1:-1;2763:40:24;9259:206:26;;;;-1:-1:-1;;;;;632:901:83;9329:21:26;;9325:89;;632:901:83;9348:1:26;632:901:83;-1:-1:-1;;;;;;;;;;;632:901:83;;;9348:1:26;632:901:83;;7609:19:26;;;7605:115;;632:901:83;;9348:1:26;632:901:83;;8358:25:26;632:901:83;;;;-1:-1:-1;;;;;;;;;;;632:901:83;;;;;;;;-1:-1:-1;;;;;;;;;;;632:901:83;;-1:-1:-1;;;;;;;;;;;632:901:83;;;;;;8358:25:26;9259:206::o;7605:115::-;7655:50;;;;;9348:1;7655:50;;632:901:83;;;;;;9348:1:26;7655:50;10976:487;;-1:-1:-1;;;;;632:901:83;;;11141:19:26;;11137:89;;-1:-1:-1;;;;;632:901:83;;11239:21:26;;11235:90;;11415:31;11334:20;;632:901:83;11334:20:26;;:::i;:::-;632:901:83;-1:-1:-1;632:901:83;;;;;-1:-1:-1;632:901:83;;;;;;;11415:31:26;10976:487::o;7220:1170::-;-1:-1:-1;;;;;;;;;;;632:901:83;;;;;;;;;;-1:-1:-1;;;;;;;;;;;632:901:83;;;;-1:-1:-1;;;;;632:901:83;;;;8358:25:26;;632:901:83;;7918:16:26;632:901:83;;;-1:-1:-1;;;;;;;;;;;632:901:83;;-1:-1:-1;;;;;;;;;;;632:901:83;7914:429:26;632:901:83;;;;;8358:25:26;7220:1170::o;7914:429::-;632:901:83;;;-1:-1:-1;;;;;;;;;;;632:901:83;;;;;;;;;;;7914:429:26;;632:901:83;;;;;941:9;;;;;632:901;941:9;4130:191:31;4243:17;;:::i;:::-;4262:20;;:::i;:::-;632:901:83;;4221:92:31;;;;632:901:83;2073:95:31;632:901:83;;;2073:95:31;;632:901:83;2073:95:31;;;632:901:83;4284:13:31;2073:95;;;632:901:83;4307:4:31;2073:95;;;632:901:83;2073:95:31;4221:92;;;;;;:::i;:::-;632:901:83;4211:103:31;;4130:191;:::o;7084:141:25:-;632:901:83;-1:-1:-1;;;;;;;;;;;632:901:83;;;;7150:18:25;7146:73;;7084:141::o;7146:73::-;7191:17;;;-1:-1:-1;7191:17:25;;-1:-1:-1;7191:17:25;5140:1530:55;;;6199:66;6186:79;;6182:164;;632:901:83;;;;;;-1:-1:-1;632:901:83;;;;;;;;;;;;;;;;;;;6457:24:55;;;;;;;;;-1:-1:-1;6457:24:55;-1:-1:-1;;;;;632:901:83;;6495:20:55;6491:113;;6614:49;-1:-1:-1;6614:49:55;-1:-1:-1;5140:1530:55;:::o;6491:113::-;6531:62;-1:-1:-1;6531:62:55;6457:24;6531:62;-1:-1:-1;6531:62:55;:::o;6457:24::-;632:901:83;;;-1:-1:-1;632:901:83;;;;;6182:164:55;6281:54;;;6297:1;6281:54;6301:30;6281:54;;:::o;7196:532::-;632:901:83;;;;;;7282:29:55;;;7327:7;;:::o;7278:444::-;632:901:83;7378:38:55;;632:901:83;;7439:23:55;;;7291:20;7439:23;632:901:83;7291:20:55;7439:23;7374:348;7492:35;7483:44;;7492:35;;7550:46;;;;7291:20;7550:46;632:901:83;;;7291:20:55;7550:46;7479:243;7626:30;7617:39;7613:109;;7479:243;7196:532::o;7613:109::-;7679:32;;;7291:20;7679:32;632:901:83;;;7291:20:55;7679:32;632:901:83;;;;7291:20:55;632:901:83;;;;;7291:20:55;632:901:83;7058:687:31;632:901:83;;-1:-1:-1;;;;;;;;;;;632:901:83;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;7230:22:31;;;;7275;7268:29;:::o;7226:513::-;-1:-1:-1;;2806:64:31;632:901:83;7603:15:31;;;;7638:17;:::o;7599:130::-;7694:20;7701:13;7694:20;:::o;632:901:83:-;-1:-1:-1;;;;;;;;;;;;632:901:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;632:901:83;;;-1:-1:-1;632:901:83;;;;;;;;;;;-1:-1:-1;632:901:83;;7966:723:31;632:901:83;;-1:-1:-1;;;;;;;;;;;632:901:83;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;8147:25:31;;;;8195;8188:32;:::o;8143:540::-;-1:-1:-1;;8507:16:31;632:901:83;8541:18:31;;;;8579:20;:::o;632:901:83:-;-1:-1:-1;;;;;;;;;;;;632:901:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;632:901:83;;;-1:-1:-1;632:901:83;;;;;;;;;;;-1:-1:-1;632:901:83;","linkReferences":{}},"methodIdentifiers":{"DOMAIN_SEPARATOR()":"3644e515","allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","burn(uint256)":"42966c68","burnFrom(address,uint256)":"79cc6790","decimals()":"313ce567","eip712Domain()":"84b0196e","initialize(address)":"c4d66de8","mint(address,uint256)":"40c10f19","name()":"06fdde03","nonces(address)":"7ecebe00","owner()":"8da5cb5b","permit(address,address,uint256,uint256,uint8,bytes32,bytes32)":"d505accf","reinitialize()":"6c2eb350","renounceOwnership()":"715018a6","symbol()":"95d89b41","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd","transferOwnership(address)":"f2fde38b"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"ECDSAInvalidSignature\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"length\",\"type\":\"uint256\"}],\"name\":\"ECDSAInvalidSignatureLength\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"ECDSAInvalidSignatureS\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"allowance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientAllowance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidApprover\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSpender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"ERC2612ExpiredSignature\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"signer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"ERC2612InvalidSigner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"currentNonce\",\"type\":\"uint256\"}],\"name\":\"InvalidAccountNonce\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"OwnableInvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"OwnableUnauthorizedAccount\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"EIP712DomainChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DOMAIN_SEPARATOR\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"burn\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"burnFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"eip712Domain\",\"outputs\":[{\"internalType\":\"bytes1\",\"name\":\"fields\",\"type\":\"bytes1\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"version\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"verifyingContract\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"},{\"internalType\":\"uint256[]\",\"name\":\"extensions\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"initialOwner\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"mint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"nonces\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"permit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"reinitialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"errors\":{\"ECDSAInvalidSignature()\":[{\"details\":\"The signature derives the `address(0)`.\"}],\"ECDSAInvalidSignatureLength(uint256)\":[{\"details\":\"The signature has an invalid length.\"}],\"ECDSAInvalidSignatureS(bytes32)\":[{\"details\":\"The signature has an S value that is in the upper half order.\"}],\"ERC20InsufficientAllowance(address,uint256,uint256)\":[{\"details\":\"Indicates a failure with the `spender`\\u2019s `allowance`. Used in transfers.\",\"params\":{\"allowance\":\"Amount of tokens a `spender` is allowed to operate with.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"ERC20InsufficientBalance(address,uint256,uint256)\":[{\"details\":\"Indicates an error related to the current `balance` of a `sender`. Used in transfers.\",\"params\":{\"balance\":\"Current balance for the interacting account.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidApprover(address)\":[{\"details\":\"Indicates a failure with the `approver` of a token to be approved. Used in approvals.\",\"params\":{\"approver\":\"Address initiating an approval operation.\"}}],\"ERC20InvalidReceiver(address)\":[{\"details\":\"Indicates a failure with the token `receiver`. Used in transfers.\",\"params\":{\"receiver\":\"Address to which tokens are being transferred.\"}}],\"ERC20InvalidSender(address)\":[{\"details\":\"Indicates a failure with the token `sender`. Used in transfers.\",\"params\":{\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidSpender(address)\":[{\"details\":\"Indicates a failure with the `spender` to be approved. Used in approvals.\",\"params\":{\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"ERC2612ExpiredSignature(uint256)\":[{\"details\":\"Permit deadline has expired.\"}],\"ERC2612InvalidSigner(address,address)\":[{\"details\":\"Mismatched signature.\"}],\"InvalidAccountNonce(address,uint256)\":[{\"details\":\"The nonce used for an `account` is not the expected current nonce.\"}],\"InvalidInitialization()\":[{\"details\":\"The contract is already initialized.\"}],\"NotInitializing()\":[{\"details\":\"The contract is not initializing.\"}],\"OwnableInvalidOwner(address)\":[{\"details\":\"The owner is not a valid owner account. (eg. `address(0)`)\"}],\"OwnableUnauthorizedAccount(address)\":[{\"details\":\"The caller account is not authorized to perform an operation.\"}]},\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance.\"},\"EIP712DomainChanged()\":{\"details\":\"MAY be emitted to signal that the domain could have changed.\"},\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero.\"}},\"kind\":\"dev\",\"methods\":{\"DOMAIN_SEPARATOR()\":{\"details\":\"Returns the domain separator used in the encoding of the signature for {permit}, as defined by {EIP712}.\"},\"allowance(address,address)\":{\"details\":\"See {IERC20-allowance}.\"},\"approve(address,uint256)\":{\"details\":\"See {IERC20-approve}. NOTE: If `value` is the maximum `uint256`, the allowance is not updated on `transferFrom`. This is semantically equivalent to an infinite approval. Requirements: - `spender` cannot be the zero address.\"},\"balanceOf(address)\":{\"details\":\"See {IERC20-balanceOf}.\"},\"burn(uint256)\":{\"details\":\"Destroys a `value` amount of tokens from the caller. See {ERC20-_burn}.\"},\"burnFrom(address,uint256)\":{\"details\":\"Destroys a `value` amount of tokens from `account`, deducting from the caller's allowance. See {ERC20-_burn} and {ERC20-allowance}. Requirements: - the caller must have allowance for ``accounts``'s tokens of at least `value`.\"},\"constructor\":{\"custom:oz-upgrades-unsafe-allow\":\"constructor\"},\"decimals()\":{\"details\":\"Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5.05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the default value returned by this function, unless it's overridden. NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}.\"},\"eip712Domain()\":{\"details\":\"See {IERC-5267}.\"},\"name()\":{\"details\":\"Returns the name of the token.\"},\"nonces(address)\":{\"details\":\"Returns the current nonce for `owner`. This value must be included whenever a signature is generated for {permit}. Every successful call to {permit} increases ``owner``'s nonce by one. This prevents a signature from being used multiple times.\"},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"permit(address,address,uint256,uint256,uint8,bytes32,bytes32)\":{\"details\":\"Sets `value` as the allowance of `spender` over ``owner``'s tokens, given ``owner``'s signed approval. IMPORTANT: The same issues {IERC20-approve} has related to transaction ordering also apply here. Emits an {Approval} event. Requirements: - `spender` cannot be the zero address. - `deadline` must be a timestamp in the future. - `v`, `r` and `s` must be a valid `secp256k1` signature from `owner` over the EIP712-formatted function arguments. - the signature must use ``owner``'s current nonce (see {nonces}). For more information on the signature format, see the https://eips.ethereum.org/EIPS/eip-2612#specification[relevant EIP section]. CAUTION: See Security Considerations above.\"},\"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.\"},\"symbol()\":{\"details\":\"Returns the symbol of the token, usually a shorter version of the name.\"},\"totalSupply()\":{\"details\":\"See {IERC20-totalSupply}.\"},\"transfer(address,uint256)\":{\"details\":\"See {IERC20-transfer}. Requirements: - `to` cannot be the zero address. - the caller must have a balance of at least `value`.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC20-transferFrom}. Skips emitting an {Approval} event indicating an allowance update. This is not required by the ERC. See {xref-ERC20-_approve-address-address-uint256-bool-}[_approve]. NOTE: Does not update the allowance if the current allowance is the maximum `uint256`. Requirements: - `from` and `to` cannot be the zero address. - `from` must have a balance of at least `value`. - the caller must have allowance for ``from``'s tokens of at least `value`.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/WrappedVara.sol\":\"WrappedVara\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/openzeppelin-contracts-upgradeable/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts-upgradeable/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin-foundry-upgrades/=lib/openzeppelin-foundry-upgrades/src/\",\":solidity-stringutils/=lib/openzeppelin-foundry-upgrades/lib/solidity-stringutils/\"],\"viaIR\":true},\"sources\":{\"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":{\"keccak256\":\"0xc163fcf9bb10138631a9ba5564df1fa25db9adff73bd9ee868a8ae1858fe093a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9706d43a0124053d9880f6e31a59f31bc0a6a3dc1acd66ce0a16e1111658c5f6\",\"dweb:/ipfs/QmUFmfowzkRwGtDu36cXV9SPTBHJ3n7dG9xQiK5B28jTf2\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609\",\"dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/ERC20Upgradeable.sol\":{\"keccak256\":\"0x5a5f22721ffb66d3e1ecc568c0d37c91f91223d8663c8a5e78396e780b849c72\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bdd108133c98ea251513424bf17905090c8a7e0755562a6d12a81b8bccbd6152\",\"dweb:/ipfs/QmahpnB63Up9aVx4jDqxEgry5BRN5itHRvy9rwBvMT2yqL\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/extensions/ERC20BurnableUpgradeable.sol\":{\"keccak256\":\"0xe74dd150d031e8ecf9755893a2aae02dec954158140424f11c28ff689a48492f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://554e0934aecff6725e10d4aeb2e70ff214384b68782b1ba9f9322a0d16105a2f\",\"dweb:/ipfs/QmVvmHc7xPftEkWvJRNAqv7mXihKLEAVXpiebG7RT5rhMW\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/extensions/ERC20PermitUpgradeable.sol\":{\"keccak256\":\"0x6ff1ff6f25ebee2f778775b26d81610a04e37993bc06a7f54e0c768330ef1506\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6f1fa246b88750fe26a30495db812eb2788dba8e5191a11f9dedb37bd6f4d883\",\"dweb:/ipfs/QmZUcDXW1a9xEAfQwqUG6NXQ6AwCs5gfv89NkwzTCeDify\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://08e39f23d5b4692f9a40803e53a8156b72b4c1f9902a88cd65ba964db103dab9\",\"dweb:/ipfs/QmPKn6EYDgpga7KtpkA8wV2yJCYGMtc9K4LkJfhKX2RVSV\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/NoncesUpgradeable.sol\":{\"keccak256\":\"0x778f4a1546a1c6c726ecc8e2348a2789690fb8f26e12bd9d89537669167b79a4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://851d3dfe724e918ff0a064b206e1ef46b27ab0df2aa2c8af976973a22ef59827\",\"dweb:/ipfs/Qmd4wb7zX8ueYhMVBy5PJjfsANK3Ra3pKPN7qQkNsdwGHn\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/cryptography/EIP712Upgradeable.sol\":{\"keccak256\":\"0x06d93977f6018359ef432d3b649b7c92efb0326d3ddbbeaf08648105bdcacbbf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c8574fdb7ffb0e8e9841ba6394432d3e31b496a0953baa6f64837062fb29b02e\",\"dweb:/ipfs/QmdjZNdnBUVzzWXMYXsFmHdvh2KL5Lnc1uBfvbuqPNU9X3\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC5267.sol\":{\"keccak256\":\"0x92aa1df62dc3d33f1656d63bede0923e0df0b706ad4137c8b10b0a8fe549fd92\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c5c0f29195ad64cbe556da8e257dac8f05f78c53f90323c0d2accf8e6922d33a\",\"dweb:/ipfs/QmQ61TED8uaCZwcbh8KkgRSsCav7x7HbcGHwHts3U4DmUP\"]},\"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x9cac1f97ecc92043dd19235d6677e40cf6bac382886a94f7a80a957846b24229\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a1e0c924e0edfdfd4abceeb552d99f1cd95c0d387b38ccb1f67c583607e3d155\",\"dweb:/ipfs/QmZAi6qKa66zuS3jyEhsQR9bBNnZe1wSognYqw9nvseyUz\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009\",\"dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x88f7b6f070ad1de2bf899da6978ed74b5038eac78c01b7359b92b60c3d965c28\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c436edb6733a036607c6f17cc590e8ee351363a8cb4c564a98d9a66392c89323\",\"dweb:/ipfs/QmcJvJR2K3EtYcKEXVpQ1WqT6TvAbVem5HR1FirAsqEXFR\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Permit.sol\":{\"keccak256\":\"0xe9d36d0c892aea68546d53f21e02223f7f542295c10110a0764336f9ffeab6d1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://34d4d72a89193f4d5223763e6d871443fb32a22d6024566843f4ee42eed68bdd\",\"dweb:/ipfs/Qmbsc6kJJNhrkNXP7g7KeqzRETQEvzSXg3ZmJmVLhaEahB\"]},\"lib/openzeppelin-contracts/contracts/utils/Panic.sol\":{\"keccak256\":\"0x29074fe5a74bb024c57b3570abf6c74d8bceed3438694d470fd0166a3ecd196a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f4f8435ccbc56e384f4cc9ac9ff491cf30a82f2beac00e33ccc2cf8af3f77cc3\",\"dweb:/ipfs/QmUKJXxTe6nn1qfgnX8xbnboNNAPUuEmJyGqMZCKNiFBgn\"]},\"lib/openzeppelin-contracts/contracts/utils/Strings.sol\":{\"keccak256\":\"0x686a21b9be2594ccfda3a855270dd8ebc4288b8a9ed84ecd4ef1bca2ea3fc46b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7c0bbc37f4d1aaae086d73f13f41b8043a9ad5b07f30a2fd7b8a74ead99b1ef6\",\"dweb:/ipfs/QmZpFyfCCFpbrkNtfHTn18qV7VvptPdoLN82Qu5XtMCci6\"]},\"lib/openzeppelin-contracts/contracts/utils/cryptography/ECDSA.sol\":{\"keccak256\":\"0xa548dd62e9e17616ae80a1e7ac7b1447ae377efc27fb9f7b4f4fbf5c0b0a1dfb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d27e9ae3e67eb229444cd43d49db5be57c586155fd1d363b3b1f9bb1b7bb0087\",\"dweb:/ipfs/QmT2GFnpXsTWBs8bkeVJtQ4VNX7f3igxwB77JBCr4mDXb3\"]},\"lib/openzeppelin-contracts/contracts/utils/cryptography/MessageHashUtils.sol\":{\"keccak256\":\"0x3f1998a2904792ff2a576827876638b4917573186537f878d30b23277a3b8d38\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a8dfb08ed617c9d874de901e44ac8af7af7b13e7c84000a1da3cdaf6004593e8\",\"dweb:/ipfs/QmPX2hZAvCZJCQNSXcWqhxh3xp6UitwESrw3K2u3aYNqiu\"]},\"lib/openzeppelin-contracts/contracts/utils/math/Math.sol\":{\"keccak256\":\"0x2be34e47fc07baed68c4878618a6e13c13243753c3f656ca1b6e05287c5df4ee\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e0bc7f3ae934c76aae959cf061b9764a6dbb2313c4281944dde278cd418599da\",\"dweb:/ipfs/QmYtYLrwC1nPJd86kVrQFQAGeS3XGmhXjCj25LQGfGkugi\"]},\"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0x8cd59334ed58b8884cd1f775afc9400db702e674e5d6a7a438c655b9de788d7e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://99e62c7de7318f413b6352e3f2704ca23e7725ff144e43c8bd574d12dbf29047\",\"dweb:/ipfs/QmSEXG2rBx1VxU2uFTWdiChjDvA4osEY2mesjmoVeVhHko\"]},\"lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol\":{\"keccak256\":\"0x5c8d4114f077f6803bb89b8b07bfa26dfbf8f2001708e4e7fdf1e8d9ddd42f44\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b66c74efa1f994e3ea467b4165da1575857b29d81bec36e94678fe494ce5c615\",\"dweb:/ipfs/QmeXQFdzSJFmN8UdhxMqQwwUh1U2WEha5NoVLbSg3pCJc5\"]},\"src/WrappedVara.sol\":{\"keccak256\":\"0x546b478734d72773f420a95e83f146771966ea29f4448e8ff9c7a739d13bba43\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://e61793dfd06dfc3393a06527a7ca1c51aeb0a273bbfcc5d10f966cfd5f98e0b4\",\"dweb:/ipfs/Qmed9Ksq1uscNucYVuccr3NigGgYgJ5vFqEXvEGLrjTmoJ\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.26+commit.8a97fa7a"},"language":"Solidity","output":{"abi":[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"type":"error","name":"ECDSAInvalidSignature"},{"inputs":[{"internalType":"uint256","name":"length","type":"uint256"}],"type":"error","name":"ECDSAInvalidSignatureLength"},{"inputs":[{"internalType":"bytes32","name":"s","type":"bytes32"}],"type":"error","name":"ECDSAInvalidSignatureS"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"allowance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"type":"error","name":"ERC20InsufficientAllowance"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"type":"error","name":"ERC20InsufficientBalance"},{"inputs":[{"internalType":"address","name":"approver","type":"address"}],"type":"error","name":"ERC20InvalidApprover"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"}],"type":"error","name":"ERC20InvalidReceiver"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"type":"error","name":"ERC20InvalidSender"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"type":"error","name":"ERC20InvalidSpender"},{"inputs":[{"internalType":"uint256","name":"deadline","type":"uint256"}],"type":"error","name":"ERC2612ExpiredSignature"},{"inputs":[{"internalType":"address","name":"signer","type":"address"},{"internalType":"address","name":"owner","type":"address"}],"type":"error","name":"ERC2612InvalidSigner"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"currentNonce","type":"uint256"}],"type":"error","name":"InvalidAccountNonce"},{"inputs":[],"type":"error","name":"InvalidInitialization"},{"inputs":[],"type":"error","name":"NotInitializing"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"type":"error","name":"OwnableInvalidOwner"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"type":"error","name":"OwnableUnauthorizedAccount"},{"inputs":[{"internalType":"address","name":"owner","type":"address","indexed":true},{"internalType":"address","name":"spender","type":"address","indexed":true},{"internalType":"uint256","name":"value","type":"uint256","indexed":false}],"type":"event","name":"Approval","anonymous":false},{"inputs":[],"type":"event","name":"EIP712DomainChanged","anonymous":false},{"inputs":[{"internalType":"uint64","name":"version","type":"uint64","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":"OwnershipTransferred","anonymous":false},{"inputs":[{"internalType":"address","name":"from","type":"address","indexed":true},{"internalType":"address","name":"to","type":"address","indexed":true},{"internalType":"uint256","name":"value","type":"uint256","indexed":false}],"type":"event","name":"Transfer","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"DOMAIN_SEPARATOR","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"stateMutability":"view","type":"function","name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"value","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"burn"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"burnFrom"},{"inputs":[],"stateMutability":"view","type":"function","name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"eip712Domain","outputs":[{"internalType":"bytes1","name":"fields","type":"bytes1"},{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"version","type":"string"},{"internalType":"uint256","name":"chainId","type":"uint256"},{"internalType":"address","name":"verifyingContract","type":"address"},{"internalType":"bytes32","name":"salt","type":"bytes32"},{"internalType":"uint256[]","name":"extensions","type":"uint256[]"}]},{"inputs":[{"internalType":"address","name":"initialOwner","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"initialize"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"mint"},{"inputs":[],"stateMutability":"view","type":"function","name":"name","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"stateMutability":"view","type":"function","name":"nonces","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"permit"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"reinitialize"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"renounceOwnership"},{"inputs":[],"stateMutability":"view","type":"function","name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"transferOwnership"}],"devdoc":{"kind":"dev","methods":{"DOMAIN_SEPARATOR()":{"details":"Returns the domain separator used in the encoding of the signature for {permit}, as defined by {EIP712}."},"allowance(address,address)":{"details":"See {IERC20-allowance}."},"approve(address,uint256)":{"details":"See {IERC20-approve}. NOTE: If `value` is the maximum `uint256`, the allowance is not updated on `transferFrom`. This is semantically equivalent to an infinite approval. Requirements: - `spender` cannot be the zero address."},"balanceOf(address)":{"details":"See {IERC20-balanceOf}."},"burn(uint256)":{"details":"Destroys a `value` amount of tokens from the caller. See {ERC20-_burn}."},"burnFrom(address,uint256)":{"details":"Destroys a `value` amount of tokens from `account`, deducting from the caller's allowance. See {ERC20-_burn} and {ERC20-allowance}. Requirements: - the caller must have allowance for ``accounts``'s tokens of at least `value`."},"constructor":{"custom:oz-upgrades-unsafe-allow":"constructor"},"decimals()":{"details":"Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5.05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the default value returned by this function, unless it's overridden. NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}."},"eip712Domain()":{"details":"See {IERC-5267}."},"name()":{"details":"Returns the name of the token."},"nonces(address)":{"details":"Returns the current nonce for `owner`. This value must be included whenever a signature is generated for {permit}. Every successful call to {permit} increases ``owner``'s nonce by one. This prevents a signature from being used multiple times."},"owner()":{"details":"Returns the address of the current owner."},"permit(address,address,uint256,uint256,uint8,bytes32,bytes32)":{"details":"Sets `value` as the allowance of `spender` over ``owner``'s tokens, given ``owner``'s signed approval. IMPORTANT: The same issues {IERC20-approve} has related to transaction ordering also apply here. Emits an {Approval} event. Requirements: - `spender` cannot be the zero address. - `deadline` must be a timestamp in the future. - `v`, `r` and `s` must be a valid `secp256k1` signature from `owner` over the EIP712-formatted function arguments. - the signature must use ``owner``'s current nonce (see {nonces}). For more information on the signature format, see the https://eips.ethereum.org/EIPS/eip-2612#specification[relevant EIP section]. CAUTION: See Security Considerations above."},"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."},"symbol()":{"details":"Returns the symbol of the token, usually a shorter version of the name."},"totalSupply()":{"details":"See {IERC20-totalSupply}."},"transfer(address,uint256)":{"details":"See {IERC20-transfer}. Requirements: - `to` cannot be the zero address. - the caller must have a balance of at least `value`."},"transferFrom(address,address,uint256)":{"details":"See {IERC20-transferFrom}. Skips emitting an {Approval} event indicating an allowance update. This is not required by the ERC. See {xref-ERC20-_approve-address-address-uint256-bool-}[_approve]. NOTE: Does not update the allowance if the current allowance is the maximum `uint256`. Requirements: - `from` and `to` cannot be the zero address. - `from` must have a balance of at least `value`. - the caller must have allowance for ``from``'s tokens of at least `value`."},"transferOwnership(address)":{"details":"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."}},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/openzeppelin-contracts-upgradeable/lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","halmos-cheatcodes/=lib/openzeppelin-contracts-upgradeable/lib/halmos-cheatcodes/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/","openzeppelin-foundry-upgrades/=lib/openzeppelin-foundry-upgrades/src/","solidity-stringutils/=lib/openzeppelin-foundry-upgrades/lib/solidity-stringutils/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/WrappedVara.sol":"WrappedVara"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol":{"keccak256":"0xc163fcf9bb10138631a9ba5564df1fa25db9adff73bd9ee868a8ae1858fe093a","urls":["bzz-raw://9706d43a0124053d9880f6e31a59f31bc0a6a3dc1acd66ce0a16e1111658c5f6","dweb:/ipfs/QmUFmfowzkRwGtDu36cXV9SPTBHJ3n7dG9xQiK5B28jTf2"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol":{"keccak256":"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b","urls":["bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609","dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/ERC20Upgradeable.sol":{"keccak256":"0x5a5f22721ffb66d3e1ecc568c0d37c91f91223d8663c8a5e78396e780b849c72","urls":["bzz-raw://bdd108133c98ea251513424bf17905090c8a7e0755562a6d12a81b8bccbd6152","dweb:/ipfs/QmahpnB63Up9aVx4jDqxEgry5BRN5itHRvy9rwBvMT2yqL"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/extensions/ERC20BurnableUpgradeable.sol":{"keccak256":"0xe74dd150d031e8ecf9755893a2aae02dec954158140424f11c28ff689a48492f","urls":["bzz-raw://554e0934aecff6725e10d4aeb2e70ff214384b68782b1ba9f9322a0d16105a2f","dweb:/ipfs/QmVvmHc7xPftEkWvJRNAqv7mXihKLEAVXpiebG7RT5rhMW"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/extensions/ERC20PermitUpgradeable.sol":{"keccak256":"0x6ff1ff6f25ebee2f778775b26d81610a04e37993bc06a7f54e0c768330ef1506","urls":["bzz-raw://6f1fa246b88750fe26a30495db812eb2788dba8e5191a11f9dedb37bd6f4d883","dweb:/ipfs/QmZUcDXW1a9xEAfQwqUG6NXQ6AwCs5gfv89NkwzTCeDify"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol":{"keccak256":"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397","urls":["bzz-raw://08e39f23d5b4692f9a40803e53a8156b72b4c1f9902a88cd65ba964db103dab9","dweb:/ipfs/QmPKn6EYDgpga7KtpkA8wV2yJCYGMtc9K4LkJfhKX2RVSV"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/NoncesUpgradeable.sol":{"keccak256":"0x778f4a1546a1c6c726ecc8e2348a2789690fb8f26e12bd9d89537669167b79a4","urls":["bzz-raw://851d3dfe724e918ff0a064b206e1ef46b27ab0df2aa2c8af976973a22ef59827","dweb:/ipfs/Qmd4wb7zX8ueYhMVBy5PJjfsANK3Ra3pKPN7qQkNsdwGHn"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/cryptography/EIP712Upgradeable.sol":{"keccak256":"0x06d93977f6018359ef432d3b649b7c92efb0326d3ddbbeaf08648105bdcacbbf","urls":["bzz-raw://c8574fdb7ffb0e8e9841ba6394432d3e31b496a0953baa6f64837062fb29b02e","dweb:/ipfs/QmdjZNdnBUVzzWXMYXsFmHdvh2KL5Lnc1uBfvbuqPNU9X3"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC5267.sol":{"keccak256":"0x92aa1df62dc3d33f1656d63bede0923e0df0b706ad4137c8b10b0a8fe549fd92","urls":["bzz-raw://c5c0f29195ad64cbe556da8e257dac8f05f78c53f90323c0d2accf8e6922d33a","dweb:/ipfs/QmQ61TED8uaCZwcbh8KkgRSsCav7x7HbcGHwHts3U4DmUP"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol":{"keccak256":"0x9cac1f97ecc92043dd19235d6677e40cf6bac382886a94f7a80a957846b24229","urls":["bzz-raw://a1e0c924e0edfdfd4abceeb552d99f1cd95c0d387b38ccb1f67c583607e3d155","dweb:/ipfs/QmZAi6qKa66zuS3jyEhsQR9bBNnZe1wSognYqw9nvseyUz"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4","urls":["bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009","dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"keccak256":"0x88f7b6f070ad1de2bf899da6978ed74b5038eac78c01b7359b92b60c3d965c28","urls":["bzz-raw://c436edb6733a036607c6f17cc590e8ee351363a8cb4c564a98d9a66392c89323","dweb:/ipfs/QmcJvJR2K3EtYcKEXVpQ1WqT6TvAbVem5HR1FirAsqEXFR"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Permit.sol":{"keccak256":"0xe9d36d0c892aea68546d53f21e02223f7f542295c10110a0764336f9ffeab6d1","urls":["bzz-raw://34d4d72a89193f4d5223763e6d871443fb32a22d6024566843f4ee42eed68bdd","dweb:/ipfs/Qmbsc6kJJNhrkNXP7g7KeqzRETQEvzSXg3ZmJmVLhaEahB"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Panic.sol":{"keccak256":"0x29074fe5a74bb024c57b3570abf6c74d8bceed3438694d470fd0166a3ecd196a","urls":["bzz-raw://f4f8435ccbc56e384f4cc9ac9ff491cf30a82f2beac00e33ccc2cf8af3f77cc3","dweb:/ipfs/QmUKJXxTe6nn1qfgnX8xbnboNNAPUuEmJyGqMZCKNiFBgn"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Strings.sol":{"keccak256":"0x686a21b9be2594ccfda3a855270dd8ebc4288b8a9ed84ecd4ef1bca2ea3fc46b","urls":["bzz-raw://7c0bbc37f4d1aaae086d73f13f41b8043a9ad5b07f30a2fd7b8a74ead99b1ef6","dweb:/ipfs/QmZpFyfCCFpbrkNtfHTn18qV7VvptPdoLN82Qu5XtMCci6"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/cryptography/ECDSA.sol":{"keccak256":"0xa548dd62e9e17616ae80a1e7ac7b1447ae377efc27fb9f7b4f4fbf5c0b0a1dfb","urls":["bzz-raw://d27e9ae3e67eb229444cd43d49db5be57c586155fd1d363b3b1f9bb1b7bb0087","dweb:/ipfs/QmT2GFnpXsTWBs8bkeVJtQ4VNX7f3igxwB77JBCr4mDXb3"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/cryptography/MessageHashUtils.sol":{"keccak256":"0x3f1998a2904792ff2a576827876638b4917573186537f878d30b23277a3b8d38","urls":["bzz-raw://a8dfb08ed617c9d874de901e44ac8af7af7b13e7c84000a1da3cdaf6004593e8","dweb:/ipfs/QmPX2hZAvCZJCQNSXcWqhxh3xp6UitwESrw3K2u3aYNqiu"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/Math.sol":{"keccak256":"0x2be34e47fc07baed68c4878618a6e13c13243753c3f656ca1b6e05287c5df4ee","urls":["bzz-raw://e0bc7f3ae934c76aae959cf061b9764a6dbb2313c4281944dde278cd418599da","dweb:/ipfs/QmYtYLrwC1nPJd86kVrQFQAGeS3XGmhXjCj25LQGfGkugi"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol":{"keccak256":"0x8cd59334ed58b8884cd1f775afc9400db702e674e5d6a7a438c655b9de788d7e","urls":["bzz-raw://99e62c7de7318f413b6352e3f2704ca23e7725ff144e43c8bd574d12dbf29047","dweb:/ipfs/QmSEXG2rBx1VxU2uFTWdiChjDvA4osEY2mesjmoVeVhHko"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol":{"keccak256":"0x5c8d4114f077f6803bb89b8b07bfa26dfbf8f2001708e4e7fdf1e8d9ddd42f44","urls":["bzz-raw://b66c74efa1f994e3ea467b4165da1575857b29d81bec36e94678fe494ce5c615","dweb:/ipfs/QmeXQFdzSJFmN8UdhxMqQwwUh1U2WEha5NoVLbSg3pCJc5"],"license":"MIT"},"src/WrappedVara.sol":{"keccak256":"0x546b478734d72773f420a95e83f146771966ea29f4448e8ff9c7a739d13bba43","urls":["bzz-raw://e61793dfd06dfc3393a06527a7ca1c51aeb0a273bbfcc5d10f966cfd5f98e0b4","dweb:/ipfs/Qmed9Ksq1uscNucYVuccr3NigGgYgJ5vFqEXvEGLrjTmoJ"],"license":"UNLICENSED"}},"version":1},"storageLayout":{"storage":[],"types":{}},"ast":{"absolutePath":"src/WrappedVara.sol","id":56500,"exportedSymbols":{"ERC20BurnableUpgradeable":[39957],"ERC20PermitUpgradeable":[40126],"ERC20Upgradeable":[39895],"Initializable":[39278],"OwnableUpgradeable":[39024],"WrappedVara":[56499]},"nodeType":"SourceUnit","src":"39:1495:83","nodes":[{"id":56403,"nodeType":"PragmaDirective","src":"39:24:83","nodes":[],"literals":["solidity","^","0.8",".26"]},{"id":56405,"nodeType":"ImportDirective","src":"65:96:83","nodes":[],"absolutePath":"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol","file":"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol","nameLocation":"-1:-1:-1","scope":56500,"sourceUnit":39279,"symbolAliases":[{"foreign":{"id":56404,"name":"Initializable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39278,"src":"73:13:83","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":56407,"nodeType":"ImportDirective","src":"162:102:83","nodes":[],"absolutePath":"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/ERC20Upgradeable.sol","file":"@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol","nameLocation":"-1:-1:-1","scope":56500,"sourceUnit":39896,"symbolAliases":[{"foreign":{"id":56406,"name":"ERC20Upgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39895,"src":"170:16:83","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":56409,"nodeType":"ImportDirective","src":"265:133:83","nodes":[],"absolutePath":"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/extensions/ERC20BurnableUpgradeable.sol","file":"@openzeppelin/contracts-upgradeable/token/ERC20/extensions/ERC20BurnableUpgradeable.sol","nameLocation":"-1:-1:-1","scope":56500,"sourceUnit":39958,"symbolAliases":[{"foreign":{"id":56408,"name":"ERC20BurnableUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39957,"src":"273:24:83","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":56411,"nodeType":"ImportDirective","src":"399:101:83","nodes":[],"absolutePath":"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol","file":"@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol","nameLocation":"-1:-1:-1","scope":56500,"sourceUnit":39025,"symbolAliases":[{"foreign":{"id":56410,"name":"OwnableUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39024,"src":"407:18:83","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":56413,"nodeType":"ImportDirective","src":"501:129:83","nodes":[],"absolutePath":"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/extensions/ERC20PermitUpgradeable.sol","file":"@openzeppelin/contracts-upgradeable/token/ERC20/extensions/ERC20PermitUpgradeable.sol","nameLocation":"-1:-1:-1","scope":56500,"sourceUnit":40127,"symbolAliases":[{"foreign":{"id":56412,"name":"ERC20PermitUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":40126,"src":"509:22:83","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":56499,"nodeType":"ContractDefinition","src":"632:901:83","nodes":[{"id":56426,"nodeType":"VariableDeclaration","src":"784:51:83","nodes":[],"constant":true,"mutability":"constant","name":"TOKEN_NAME","nameLocation":"808:10:83","scope":56499,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":56424,"name":"string","nodeType":"ElementaryTypeName","src":"784:6:83","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"hexValue":"577261707065642056617261","id":56425,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"821:14:83","typeDescriptions":{"typeIdentifier":"t_stringliteral_985e2e9885ca23de2896caee5fad5adf116e2558361aa44c502ff8b2c1b2a41b","typeString":"literal_string \"Wrapped Vara\""},"value":"Wrapped Vara"},"visibility":"private"},{"id":56429,"nodeType":"VariableDeclaration","src":"841:46:83","nodes":[],"constant":true,"mutability":"constant","name":"TOKEN_SYMBOL","nameLocation":"865:12:83","scope":56499,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":56427,"name":"string","nodeType":"ElementaryTypeName","src":"841:6:83","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"hexValue":"5756415241","id":56428,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"880:7:83","typeDescriptions":{"typeIdentifier":"t_stringliteral_203a7c23d1b412674989fae6808de72f52c6953d49ac548796ba3c05451693a4","typeString":"literal_string \"WVARA\""},"value":"WVARA"},"visibility":"private"},{"id":56432,"nodeType":"VariableDeclaration","src":"893:57:83","nodes":[],"constant":true,"mutability":"constant","name":"TOKEN_INITIAL_SUPPLY","nameLocation":"918:20:83","scope":56499,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":56430,"name":"uint256","nodeType":"ElementaryTypeName","src":"893:7:83","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"315f3030305f303030","id":56431,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"941:9:83","typeDescriptions":{"typeIdentifier":"t_rational_1000000_by_1","typeString":"int_const 1000000"},"value":"1_000_000"},"visibility":"private"},{"id":56440,"nodeType":"FunctionDefinition","src":"1010:53:83","nodes":[],"body":{"id":56439,"nodeType":"Block","src":"1024:39:83","nodes":[],"statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":56436,"name":"_disableInitializers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39246,"src":"1034:20:83","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":56437,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1034:22:83","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":56438,"nodeType":"ExpressionStatement","src":"1034:22:83"}]},"documentation":{"id":56433,"nodeType":"StructuredDocumentation","src":"957:48:83","text":"@custom:oz-upgrades-unsafe-allow constructor"},"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":56434,"nodeType":"ParameterList","parameters":[],"src":"1021:2:83"},"returnParameters":{"id":56435,"nodeType":"ParameterList","parameters":[],"src":"1024:0:83"},"scope":56499,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":56474,"nodeType":"FunctionDefinition","src":"1069:297:83","nodes":[],"body":{"id":56473,"nodeType":"Block","src":"1130:236:83","nodes":[],"statements":[{"expression":{"arguments":[{"id":56448,"name":"TOKEN_NAME","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56426,"src":"1153:10:83","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":56449,"name":"TOKEN_SYMBOL","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56429,"src":"1165:12:83","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":56447,"name":"__ERC20_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39346,"src":"1140:12:83","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory,string memory)"}},"id":56450,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1140:38:83","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":56451,"nodeType":"ExpressionStatement","src":"1140:38:83"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":56452,"name":"__ERC20Burnable_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39916,"src":"1188:20:83","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":56453,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1188:22:83","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":56454,"nodeType":"ExpressionStatement","src":"1188:22:83"},{"expression":{"arguments":[{"id":56456,"name":"initialOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56442,"src":"1235:12:83","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":56455,"name":"__Ownable_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38884,"src":"1220:14:83","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":56457,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1220:28:83","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":56458,"nodeType":"ExpressionStatement","src":"1220:28:83"},{"expression":{"arguments":[{"id":56460,"name":"TOKEN_NAME","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56426,"src":"1277:10:83","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":56459,"name":"__ERC20Permit_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":40013,"src":"1258:18:83","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory)"}},"id":56461,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1258:30:83","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":56462,"nodeType":"ExpressionStatement","src":"1258:30:83"},{"expression":{"arguments":[{"id":56464,"name":"initialOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56442,"src":"1305:12:83","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":56470,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":56465,"name":"TOKEN_INITIAL_SUPPLY","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56432,"src":"1319:20:83","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":56469,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":56466,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1342:2:83","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":56467,"name":"decimals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39415,"src":"1348:8:83","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint8_$","typeString":"function () view returns (uint8)"}},"id":56468,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1348:10:83","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"1342:16:83","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1319:39:83","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":56463,"name":"_mint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39727,"src":"1299:5:83","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":56471,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1299:60:83","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":56472,"nodeType":"ExpressionStatement","src":"1299:60:83"}]},"functionSelector":"c4d66de8","implemented":true,"kind":"function","modifiers":[{"id":56445,"kind":"modifierInvocation","modifierName":{"id":56444,"name":"initializer","nameLocations":["1118:11:83"],"nodeType":"IdentifierPath","referencedDeclaration":39132,"src":"1118:11:83"},"nodeType":"ModifierInvocation","src":"1118:11:83"}],"name":"initialize","nameLocation":"1078:10:83","parameters":{"id":56443,"nodeType":"ParameterList","parameters":[{"constant":false,"id":56442,"mutability":"mutable","name":"initialOwner","nameLocation":"1097:12:83","nodeType":"VariableDeclaration","scope":56474,"src":"1089:20:83","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":56441,"name":"address","nodeType":"ElementaryTypeName","src":"1089:7:83","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1088:22:83"},"returnParameters":{"id":56446,"nodeType":"ParameterList","parameters":[],"src":"1130:0:83"},"scope":56499,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":56483,"nodeType":"FunctionDefinition","src":"1372:60:83","nodes":[],"body":{"id":56482,"nodeType":"Block","src":"1430:2:83","nodes":[],"statements":[]},"functionSelector":"6c2eb350","implemented":true,"kind":"function","modifiers":[{"id":56477,"kind":"modifierInvocation","modifierName":{"id":56476,"name":"onlyOwner","nameLocations":["1403:9:83"],"nodeType":"IdentifierPath","referencedDeclaration":38919,"src":"1403:9:83"},"nodeType":"ModifierInvocation","src":"1403:9:83"},{"arguments":[{"hexValue":"32","id":56479,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1427:1:83","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"}],"id":56480,"kind":"modifierInvocation","modifierName":{"id":56478,"name":"reinitializer","nameLocations":["1413:13:83"],"nodeType":"IdentifierPath","referencedDeclaration":39179,"src":"1413:13:83"},"nodeType":"ModifierInvocation","src":"1413:16:83"}],"name":"reinitialize","nameLocation":"1381:12:83","parameters":{"id":56475,"nodeType":"ParameterList","parameters":[],"src":"1393:2:83"},"returnParameters":{"id":56481,"nodeType":"ParameterList","parameters":[],"src":"1430:0:83"},"scope":56499,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":56498,"nodeType":"FunctionDefinition","src":"1438:93:83","nodes":[],"body":{"id":56497,"nodeType":"Block","src":"1497:34:83","nodes":[],"statements":[{"expression":{"arguments":[{"id":56493,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56485,"src":"1513:2:83","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":56494,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56487,"src":"1517:6:83","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":56492,"name":"_mint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39727,"src":"1507:5:83","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":56495,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1507:17:83","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":56496,"nodeType":"ExpressionStatement","src":"1507:17:83"}]},"functionSelector":"40c10f19","implemented":true,"kind":"function","modifiers":[{"id":56490,"kind":"modifierInvocation","modifierName":{"id":56489,"name":"onlyOwner","nameLocations":["1487:9:83"],"nodeType":"IdentifierPath","referencedDeclaration":38919,"src":"1487:9:83"},"nodeType":"ModifierInvocation","src":"1487:9:83"}],"name":"mint","nameLocation":"1447:4:83","parameters":{"id":56488,"nodeType":"ParameterList","parameters":[{"constant":false,"id":56485,"mutability":"mutable","name":"to","nameLocation":"1460:2:83","nodeType":"VariableDeclaration","scope":56498,"src":"1452:10:83","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":56484,"name":"address","nodeType":"ElementaryTypeName","src":"1452:7:83","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":56487,"mutability":"mutable","name":"amount","nameLocation":"1472:6:83","nodeType":"VariableDeclaration","scope":56498,"src":"1464:14:83","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":56486,"name":"uint256","nodeType":"ElementaryTypeName","src":"1464:7:83","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1451:28:83"},"returnParameters":{"id":56491,"nodeType":"ParameterList","parameters":[],"src":"1497:0:83"},"scope":56499,"stateMutability":"nonpayable","virtual":false,"visibility":"public"}],"abstract":false,"baseContracts":[{"baseName":{"id":56414,"name":"Initializable","nameLocations":["660:13:83"],"nodeType":"IdentifierPath","referencedDeclaration":39278,"src":"660:13:83"},"id":56415,"nodeType":"InheritanceSpecifier","src":"660:13:83"},{"baseName":{"id":56416,"name":"ERC20Upgradeable","nameLocations":["679:16:83"],"nodeType":"IdentifierPath","referencedDeclaration":39895,"src":"679:16:83"},"id":56417,"nodeType":"InheritanceSpecifier","src":"679:16:83"},{"baseName":{"id":56418,"name":"ERC20BurnableUpgradeable","nameLocations":["701:24:83"],"nodeType":"IdentifierPath","referencedDeclaration":39957,"src":"701:24:83"},"id":56419,"nodeType":"InheritanceSpecifier","src":"701:24:83"},{"baseName":{"id":56420,"name":"OwnableUpgradeable","nameLocations":["731:18:83"],"nodeType":"IdentifierPath","referencedDeclaration":39024,"src":"731:18:83"},"id":56421,"nodeType":"InheritanceSpecifier","src":"731:18:83"},{"baseName":{"id":56422,"name":"ERC20PermitUpgradeable","nameLocations":["755:22:83"],"nodeType":"IdentifierPath","referencedDeclaration":40126,"src":"755:22:83"},"id":56423,"nodeType":"InheritanceSpecifier","src":"755:22:83"}],"canonicalName":"WrappedVara","contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"linearizedBaseContracts":[56499,40126,40283,40627,40821,41968,39024,39957,39895,40863,41932,41906,40172,39278],"name":"WrappedVara","nameLocation":"641:11:83","scope":56500,"usedErrors":[38860,38865,39041,39044,39992,39999,40186,40833,40838,40843,40852,40857,40862,43050,43055,43060],"usedEvents":[38871,39049,40801,41840,41849]}],"license":"UNLICENSED"},"id":83} \ No newline at end of file diff --git a/ethexe/ethereum/src/abi.rs b/ethexe/ethereum/src/abi.rs index f0269010ad4..e569d14c00d 100644 --- a/ethexe/ethereum/src/abi.rs +++ b/ethexe/ethereum/src/abi.rs @@ -93,6 +93,7 @@ impl From for IRouter::StateTransition { router::StateTransition { actor_id, new_state_hash, + inheritor, value_to_receive, value_claims, messages, @@ -101,6 +102,7 @@ impl From for IRouter::StateTransition { Self { actorId: actor_id.to_address_lossy().to_fixed_bytes().into(), newStateHash: new_state_hash.to_fixed_bytes().into(), + inheritor: inheritor.to_address_lossy().to_fixed_bytes().into(), valueToReceive: value_to_receive, valueClaims: value_claims.into_iter().map(Into::into).collect(), messages: messages.into_iter().map(Into::into).collect(), diff --git a/ethexe/processor/src/handling/events.rs b/ethexe/processor/src/handling/events.rs index 78762ae2966..ab366488257 100644 --- a/ethexe/processor/src/handling/events.rs +++ b/ethexe/processor/src/handling/events.rs @@ -121,7 +121,10 @@ impl Processor { self.handle_reply_queueing(state_hash, replied_to, source, payload, value)? { in_block_transitions - .modify_state_with(actor_id, new_state_hash, 0, vec![value_claim], vec![]) + .modify_transition(actor_id, |state_hash, transition| { + *state_hash = new_state_hash; + transition.claims.push(value_claim); + }) .ok_or_else(|| anyhow!("failed to modify state of recognized program"))?; in_block_transitions.remove_task( @@ -135,7 +138,10 @@ impl Processor { self.handle_value_claiming(state_hash, claimed_id, source)? { in_block_transitions - .modify_state_with(actor_id, new_state_hash, 0, vec![value_claim], vec![]) + .modify_transition(actor_id, |state_hash, transition| { + *state_hash = new_state_hash; + transition.claims.push(value_claim); + }) .ok_or_else(|| anyhow!("failed to modify state of recognized program"))?; in_block_transitions.remove_task( diff --git a/ethexe/runtime/common/src/journal.rs b/ethexe/runtime/common/src/journal.rs index 03541a6959c..dd4aa0e9601 100644 --- a/ethexe/runtime/common/src/journal.rs +++ b/ethexe/runtime/common/src/journal.rs @@ -7,7 +7,7 @@ use crate::{ }; use alloc::{collections::BTreeMap, vec, vec::Vec}; use anyhow::{bail, Result}; -use core::num::NonZero; +use core::{mem, num::NonZero}; use core_processor::{ common::{DispatchOutcome, JournalHandler}, configs::BlockInfo, @@ -126,11 +126,31 @@ impl JournalHandler for Handler<'_, S> { } fn exit_dispatch(&mut self, id_exited: ProgramId, value_destination: ProgramId) { - // TODO (breathx): upd contract on exit and send value. + // TODO (breathx): handle rest of value cases; exec balance into value_to_receive. + let mut balance = 0; + self.update_state(id_exited, |state| { state.program = Program::Exited(value_destination); + balance = mem::replace(&mut state.balance, 0); Ok(()) }); + + if self + .in_block_transitions + .state_of(&value_destination) + .is_some() + { + self.update_state(value_destination, |state| { + state.balance += balance; + Ok(()) + }); + } + + self.in_block_transitions + .modify_transition(id_exited, |_state_hash, transition| { + transition.inheritor = value_destination + }) + .expect("infallible"); } fn message_consumed(&mut self, message_id: MessageId) { @@ -218,19 +238,12 @@ impl JournalHandler for Handler<'_, S> { let source = dispatch.source(); let message = dispatch.into_parts().1; - let state_hash = self - .in_block_transitions - .state_of(&source) + self.in_block_transitions + .modify_transition(source, |_state_hash, transition| { + transition.messages.push(OutgoingMessage::from(message)) + }) .expect("must exist"); - self.in_block_transitions.modify_state_with( - source, - state_hash, - 0, - vec![], - vec![OutgoingMessage::from(message)], - ); - return; } @@ -418,14 +431,16 @@ impl JournalHandler for Handler<'_, S> { return; } - let state_hash = self.update_state(to, |state| { + self.update_state(to, |state| { state.balance += value; Ok(()) }); self.in_block_transitions - .modify_state_with(to, state_hash, value, vec![], vec![]) - .expect("queried above; infallible"); + .modify_transition(to, |_state_hash, transition| { + transition.value_to_receive += value + }) + .expect("must exist"); } } diff --git a/ethexe/runtime/common/src/lib.rs b/ethexe/runtime/common/src/lib.rs index 933eb4f6b7a..0f226fce9d0 100644 --- a/ethexe/runtime/common/src/lib.rs +++ b/ethexe/runtime/common/src/lib.rs @@ -150,11 +150,8 @@ pub fn process_next_message>( // TBD about deprecation SyscallName::SignalCode, SyscallName::SignalFrom, - // TODO: refactor asap - SyscallName::GasAvailable, // Temporary forbidden (unimplemented) SyscallName::CreateProgram, - SyscallName::Exit, SyscallName::Random, ] .into(), diff --git a/ethexe/runtime/common/src/schedule.rs b/ethexe/runtime/common/src/schedule.rs index 76867dd762a..4f169b2bb39 100644 --- a/ethexe/runtime/common/src/schedule.rs +++ b/ethexe/runtime/common/src/schedule.rs @@ -43,7 +43,7 @@ impl<'a, S: Storage> TaskHandler for Handler<'a, S> { ) -> u64 { let mut value_claim = None; - let state_hash = self.update_state_with_storage(program_id, |storage, state| { + self.update_state_with_storage(program_id, |storage, state| { let ((claimed_value, expiry), new_mailbox_hash) = storage .modify_mailbox_if_changed(state.mailbox_hash.clone(), |mailbox| { let local_mailbox = mailbox.get_mut(&user_id)?; @@ -81,7 +81,9 @@ impl<'a, S: Storage> TaskHandler for Handler<'a, S> { if let Some(value_claim) = value_claim { self.in_block_transitions - .modify_state_with(program_id, state_hash, 0, vec![value_claim], vec![]) + .modify_transition(program_id, |_state_hash, transition| { + transition.claims.push(value_claim) + }) .expect("can't be None"); } @@ -134,7 +136,7 @@ impl<'a, S: Storage> TaskHandler for Handler<'a, S> { ScheduledTask::RemoveFromMailbox((program_id, user_id), stashed_message_id), ); - let state_hash = self.update_state_with_storage(program_id, |storage, state| { + self.update_state_with_storage(program_id, |storage, state| { state.mailbox_hash = storage.modify_mailbox(state.mailbox_hash.clone(), |mailbox| { let r = mailbox @@ -151,7 +153,9 @@ impl<'a, S: Storage> TaskHandler for Handler<'a, S> { let outgoing_message = dispatch.into_outgoing(self.storage, user_id); self.in_block_transitions - .modify_state_with(program_id, state_hash, 0, vec![], vec![outgoing_message]) + .modify_transition(program_id, |_state_hash, transition| { + transition.messages.push(outgoing_message) + }) .expect("must be") } diff --git a/ethexe/runtime/common/src/transitions.rs b/ethexe/runtime/common/src/transitions.rs index d3d880d72ef..812f5de6d69 100644 --- a/ethexe/runtime/common/src/transitions.rs +++ b/ethexe/runtime/common/src/transitions.rs @@ -110,39 +110,28 @@ impl InBlockTransitions { self.modifications.insert(actor_id, Default::default()); } - pub fn modify_state(&mut self, actor_id: ActorId, new_state_hash: H256) -> Option<()> { - self.modify_state_with( - actor_id, - new_state_hash, - 0, - Default::default(), - Default::default(), - ) - } - - pub fn modify_state_with( + pub fn modify_transition( &mut self, actor_id: ActorId, - new_state_hash: H256, - extra_value_to_receive: u128, - extra_claims: Vec, - extra_messages: Vec, - ) -> Option<()> { - let initial_state = self.states.insert(actor_id, new_state_hash)?; + f: impl FnOnce(&mut H256, &mut NonFinalTransition) -> T, + ) -> Option { + let initial_state = self.states.get_mut(&actor_id)?; let transition = self .modifications .entry(actor_id) .or_insert(NonFinalTransition { - initial_state, + initial_state: *initial_state, ..Default::default() }); - transition.value_to_receive += extra_value_to_receive; - transition.claims.extend(extra_claims); - transition.messages.extend(extra_messages); + Some(f(initial_state, transition)) + } - Some(()) + pub fn modify_state(&mut self, actor_id: ActorId, new_state_hash: H256) -> Option<()> { + self.modify_transition(actor_id, |state_hash, _transition| { + *state_hash = new_state_hash + }) } pub fn finalize(self) -> (Vec, BTreeMap, Schedule) { @@ -165,6 +154,7 @@ impl InBlockTransitions { res.push(StateTransition { actor_id, new_state_hash, + inheritor: ActorId::zero(), value_to_receive: modification.value_to_receive, value_claims: modification.claims, messages: modification.messages, @@ -179,6 +169,7 @@ impl InBlockTransitions { #[derive(Default)] pub struct NonFinalTransition { initial_state: H256, + pub inheritor: ActorId, pub value_to_receive: u128, pub claims: Vec, pub messages: Vec, @@ -191,6 +182,6 @@ impl NonFinalTransition { // check if state hash changed at final (always op) && current_state == self.initial_state // check if with unchanged state needs commitment (op) - && (self.value_to_receive == 0 && self.claims.is_empty() && self.messages.is_empty()) + && (self.inheritor.is_zero() && self.value_to_receive == 0 && self.claims.is_empty() && self.messages.is_empty()) } } diff --git a/ethexe/signer/src/digest.rs b/ethexe/signer/src/digest.rs index 1f34f8ab7cd..9eee8f61053 100644 --- a/ethexe/signer/src/digest.rs +++ b/ethexe/signer/src/digest.rs @@ -19,7 +19,9 @@ //! Keccak256 digest type. Implements AsDigest hashing for ethexe common types. use core::fmt; -use ethexe_common::router::{BlockCommitment, CodeCommitment, OutgoingMessage, StateTransition}; +use ethexe_common::router::{ + BlockCommitment, CodeCommitment, OutgoingMessage, StateTransition, ValueClaim, +}; use parity_scale_codec::{Decode, Encode}; use sha3::Digest as _; @@ -116,31 +118,57 @@ impl ToDigest for CodeCommitment { impl ToDigest for StateTransition { fn update_hasher(&self, hasher: &mut sha3::Keccak256) { - hasher.update(self.actor_id.to_address_lossy().as_bytes()); - hasher.update(self.new_state_hash.as_bytes()); - hasher.update(self.value_to_receive.to_be_bytes().as_slice()); + // To avoid missing incorrect hashing while developing. + let Self { + actor_id, + new_state_hash, + inheritor, + value_to_receive, + value_claims, + messages, + } = self; + + hasher.update(actor_id.to_address_lossy().as_bytes()); + hasher.update(new_state_hash.as_bytes()); + hasher.update(inheritor.to_address_lossy().as_bytes()); + hasher.update(value_to_receive.to_be_bytes().as_slice()); let mut value_hasher = sha3::Keccak256::new(); - for value_claim in &self.value_claims { - value_hasher.update(value_claim.message_id.as_ref()); - value_hasher.update(value_claim.destination.to_address_lossy().as_bytes()); - value_hasher.update(value_claim.value.to_be_bytes().as_slice()); + for value_claim in value_claims { + // To avoid missing incorrect hashing while developing. + let ValueClaim { + message_id, + destination, + value, + } = value_claim; + + value_hasher.update(message_id.as_ref()); + value_hasher.update(destination.to_address_lossy().as_bytes()); + value_hasher.update(value.to_be_bytes().as_slice()); } hasher.update(value_hasher.finalize().as_slice()); - hasher.update(self.messages.to_digest().as_ref()); + hasher.update(messages.to_digest().as_ref()); } } impl ToDigest for OutgoingMessage { fn update_hasher(&self, hasher: &mut sha3::Keccak256) { - let (reply_details_to, reply_details_code) = - self.reply_details.unwrap_or_default().into_parts(); - - hasher.update(self.id.as_ref()); - hasher.update(self.destination.to_address_lossy().as_bytes()); - hasher.update(self.payload.as_slice()); - hasher.update(self.value.to_be_bytes().as_slice()); + // To avoid missing incorrect hashing while developing. + let Self { + id, + destination, + payload, + value, + reply_details, + } = self; + + let (reply_details_to, reply_details_code) = reply_details.unwrap_or_default().into_parts(); + + hasher.update(id.as_ref()); + hasher.update(destination.to_address_lossy().as_bytes()); + hasher.update(payload.as_slice()); + hasher.update(value.to_be_bytes().as_slice()); hasher.update(reply_details_to.as_ref()); hasher.update(reply_details_code.to_bytes().as_slice()); } @@ -148,10 +176,18 @@ impl ToDigest for OutgoingMessage { impl ToDigest for BlockCommitment { fn update_hasher(&self, hasher: &mut sha3::Keccak256) { - hasher.update(self.block_hash.as_bytes()); - hasher.update(self.prev_commitment_hash.as_bytes()); - hasher.update(self.pred_block_hash.as_bytes()); - hasher.update(self.transitions.to_digest().as_ref()); + // To avoid missing incorrect hashing while developing. + let Self { + block_hash, + prev_commitment_hash, + pred_block_hash, + transitions, + } = self; + + hasher.update(block_hash.as_bytes()); + hasher.update(prev_commitment_hash.as_bytes()); + hasher.update(pred_block_hash.as_bytes()); + hasher.update(transitions.to_digest().as_ref()); } } @@ -172,6 +208,7 @@ mod tests { let state_transition = StateTransition { actor_id: ActorId::from(0), new_state_hash: H256::from([1; 32]), + inheritor: ActorId::from(0), value_to_receive: 0, value_claims: vec![], messages: vec![OutgoingMessage { diff --git a/ethexe/validator/src/lib.rs b/ethexe/validator/src/lib.rs index 6ce16b59bf9..9dff3c15565 100644 --- a/ethexe/validator/src/lib.rs +++ b/ethexe/validator/src/lib.rs @@ -250,6 +250,7 @@ mod tests { let transition = StateTransition { actor_id: H256::random().0.into(), new_state_hash: H256::random(), + inheritor: H256::random().0.into(), value_to_receive: 123, value_claims: vec![], messages: vec![], From ee0d92e487faf001243db4525bb0126b889e2efb Mon Sep 17 00:00:00 2001 From: Arsenii Lyashenko Date: Wed, 23 Oct 2024 14:24:52 +0300 Subject: [PATCH 2/4] chore(sandbox): Use wasmer in embedded executor (#4276) --- Cargo.lock | 330 ++++--------- Cargo.toml | 5 +- core-backend/src/env.rs | 18 +- core-backend/src/mock.rs | 154 +++--- core-processor/src/executor.rs | 4 +- core-processor/src/processing.rs | 2 +- core/src/memory.rs | 8 +- .../network/src/custom_connection_limits.rs | 2 +- ethexe/processor/src/host/mod.rs | 2 - ethexe/runtime/common/src/lib.rs | 9 +- gcli/Cargo.toml | 2 +- lazy-pages/Cargo.toml | 1 + lazy-pages/common/src/lib.rs | 2 +- lazy-pages/src/globals.rs | 4 +- lazy-pages/src/lib.rs | 15 +- node/authorship/src/tests.rs | 1 - node/cli/src/main.rs | 1 - runtime-interface/sandbox/src/detail.rs | 6 - runtime-interface/sandbox/src/lib.rs | 3 - runtime-interface/src/lib.rs | 2 +- sandbox/host/Cargo.toml | 10 +- sandbox/host/src/sandbox/wasmer_backend.rs | 49 +- sandbox/sandbox/Cargo.toml | 13 +- sandbox/sandbox/build.rs | 27 ++ sandbox/sandbox/src/embedded_executor.rs | 451 ++++++++++++------ sandbox/sandbox/src/host_executor.rs | 2 +- sandbox/sandbox/src/lib.rs | 27 +- scripts/cargo-xwin.sh | 18 +- utils/calc-stack-height/Cargo.toml | 2 +- utils/crates-io/src/lib.rs | 1 + utils/gear-replay-cli/src/cmd/mod.rs | 2 - utils/gear-wasmer-cache/Cargo.toml | 15 + .../gear-wasmer-cache/src/lib.rs | 53 +- utils/lazy-pages-fuzzer/Cargo.toml | 2 +- utils/wasm-builder/Cargo.toml | 1 + utils/wasm-builder/src/crate_info.rs | 13 + utils/wasm-builder/src/wasm_project.rs | 2 +- utils/wasm-optimizer/Cargo.toml | 2 +- 38 files changed, 705 insertions(+), 556 deletions(-) create mode 100644 sandbox/sandbox/build.rs create mode 100644 utils/gear-wasmer-cache/Cargo.toml rename sandbox/host/src/sandbox/wasmer_backend/cache.rs => utils/gear-wasmer-cache/src/lib.rs (81%) diff --git a/Cargo.lock b/Cargo.lock index 2e6d1f73872..f721de284e4 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1396,7 +1396,7 @@ dependencies = [ "async-lock 2.8.0", "async-task", "concurrent-queue", - "fastrand 2.0.1", + "fastrand 2.1.1", "futures-lite 1.13.0", "slab", ] @@ -1445,7 +1445,7 @@ dependencies = [ "futures-lite 2.3.0", "parking", "polling 3.5.0", - "rustix 0.38.31", + "rustix 0.38.37", "slab", "tracing", "windows-sys 0.52.0", @@ -1497,7 +1497,7 @@ dependencies = [ "cfg-if", "event-listener 5.2.0", "futures-lite 2.3.0", - "rustix 0.38.31", + "rustix 0.38.37", "tracing", "windows-sys 0.52.0", ] @@ -1525,7 +1525,7 @@ dependencies = [ "cfg-if", "futures-core", "futures-io", - "rustix 0.38.31", + "rustix 0.38.37", "signal-hook-registry", "slab", "windows-sys 0.52.0", @@ -2002,7 +2002,7 @@ dependencies = [ "async-channel 1.9.0", "async-lock 2.8.0", "async-task", - "fastrand 2.0.1", + "fastrand 2.1.1", "futures-io", "futures-lite 1.13.0", "piper", @@ -2408,7 +2408,7 @@ dependencies = [ "num-traits", "serde", "wasm-bindgen", - "windows-targets 0.52.0", + "windows-targets 0.52.6", ] [[package]] @@ -2882,43 +2882,13 @@ dependencies = [ "libc", ] -[[package]] -name = "cranelift-bforest" -version = "0.91.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2a2ab4512dfd3a6f4be184403a195f76e81a8a9f9e6c898e19d2dc3ce20e0115" -dependencies = [ - "cranelift-entity 0.91.1", -] - [[package]] name = "cranelift-bforest" version = "0.95.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1277fbfa94bc82c8ec4af2ded3e639d49ca5f7f3c7eeab2c66accd135ece4e70" dependencies = [ - "cranelift-entity 0.95.1", -] - -[[package]] -name = "cranelift-codegen" -version = "0.91.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "98b022ed2a5913a38839dfbafe6cf135342661293b08049843362df4301261dc" -dependencies = [ - "arrayvec 0.7.4", - "bumpalo", - "cranelift-bforest 0.91.1", - "cranelift-codegen-meta 0.91.1", - "cranelift-codegen-shared 0.91.1", - "cranelift-egraph", - "cranelift-entity 0.91.1", - "cranelift-isle 0.91.1", - "gimli 0.26.2", - "log", - "regalloc2 0.5.1", - "smallvec", - "target-lexicon", + "cranelift-entity", ] [[package]] @@ -2928,69 +2898,34 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c6e8c31ad3b2270e9aeec38723888fe1b0ace3bea2b06b3f749ccf46661d3220" dependencies = [ "bumpalo", - "cranelift-bforest 0.95.1", - "cranelift-codegen-meta 0.95.1", - "cranelift-codegen-shared 0.95.1", - "cranelift-entity 0.95.1", - "cranelift-isle 0.95.1", + "cranelift-bforest", + "cranelift-codegen-meta", + "cranelift-codegen-shared", + "cranelift-entity", + "cranelift-isle", "gimli 0.27.3", "hashbrown 0.13.2", "log", - "regalloc2 0.6.1", + "regalloc2", "smallvec", "target-lexicon", ] -[[package]] -name = "cranelift-codegen-meta" -version = "0.91.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "639307b45434ad112a98f8300c0f0ab085cbefcd767efcdef9ef19d4c0756e74" -dependencies = [ - "cranelift-codegen-shared 0.91.1", -] - [[package]] name = "cranelift-codegen-meta" version = "0.95.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c8ac5ac30d62b2d66f12651f6b606dbdfd9c2cfd0908de6b387560a277c5c9da" dependencies = [ - "cranelift-codegen-shared 0.95.1", + "cranelift-codegen-shared", ] -[[package]] -name = "cranelift-codegen-shared" -version = "0.91.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "278e52e29c53fcf32431ef08406c295699a70306d05a0715c5b1bf50e33a9ab7" - [[package]] name = "cranelift-codegen-shared" version = "0.95.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dd82b8b376247834b59ed9bdc0ddeb50f517452827d4a11bccf5937b213748b8" -[[package]] -name = "cranelift-egraph" -version = "0.91.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "624b54323b06e675293939311943ba82d323bb340468ce1889be5da7932c8d73" -dependencies = [ - "cranelift-entity 0.91.1", - "fxhash", - "hashbrown 0.12.3", - "indexmap 1.9.3", - "log", - "smallvec", -] - -[[package]] -name = "cranelift-entity" -version = "0.91.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a59bcbca89c3f1b70b93ab3cbba5e5e0cbf3e63dadb23c7525cb142e21a9d4c" - [[package]] name = "cranelift-entity" version = "0.95.1" @@ -3000,36 +2935,18 @@ dependencies = [ "serde", ] -[[package]] -name = "cranelift-frontend" -version = "0.91.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0d70abacb8cfef3dc8ff7e8836e9c1d70f7967dfdac824a4cd5e30223415aca6" -dependencies = [ - "cranelift-codegen 0.91.1", - "log", - "smallvec", - "target-lexicon", -] - [[package]] name = "cranelift-frontend" version = "0.95.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "64a25d9d0a0ae3079c463c34115ec59507b4707175454f0eee0891e83e30e82d" dependencies = [ - "cranelift-codegen 0.95.1", + "cranelift-codegen", "log", "smallvec", "target-lexicon", ] -[[package]] -name = "cranelift-isle" -version = "0.91.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "393bc73c451830ff8dbb3a07f61843d6cb41a084f9996319917c0b291ed785bb" - [[package]] name = "cranelift-isle" version = "0.95.1" @@ -3042,7 +2959,7 @@ version = "0.95.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bb6b03e0e03801c4b3fd8ce0758a94750c07a44e7944cc0ffbf0d3f2e7c79b00" dependencies = [ - "cranelift-codegen 0.95.1", + "cranelift-codegen", "libc", "target-lexicon", ] @@ -3053,9 +2970,9 @@ version = "0.95.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ff3220489a3d928ad91e59dd7aeaa8b3de18afb554a6211213673a71c90737ac" dependencies = [ - "cranelift-codegen 0.95.1", - "cranelift-entity 0.95.1", - "cranelift-frontend 0.95.1", + "cranelift-codegen", + "cranelift-entity", + "cranelift-frontend", "itertools 0.10.5", "log", "smallvec", @@ -5504,9 +5421,9 @@ dependencies = [ [[package]] name = "fastrand" -version = "2.0.1" +version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "25cbce373ec4653f1a01a31e8a5e5ec0c622dc27ff9c4e6606eefef5cbbed4a5" +checksum = "e8c02a5121d4ea3eb16a80748c74f5549a5665e4c21333c6098f283870fbdea6" [[package]] name = "fastrlp" @@ -6151,7 +6068,7 @@ version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "52527eb5074e35e9339c6b4e8d12600c7128b68fb25dcb9fa9dec18f7c25f3a5" dependencies = [ - "fastrand 2.0.1", + "fastrand 2.1.1", "futures-core", "futures-io", "parking", @@ -6662,6 +6579,7 @@ dependencies = [ "proptest", "region", "sp-wasm-interface-common", + "wasmer-vm", "winapi", ] @@ -6878,12 +6796,16 @@ dependencies = [ "assert_matches", "gear-sandbox-env", "gear-sandbox-interface", + "gear-wasmer-cache", "log", "parity-scale-codec", "sp-core", "sp-std 8.0.0", "sp-wasm-interface-common", - "wasmi 0.30.0", + "wasmer", + "wasmer-compiler", + "wasmer-types", + "wasmer-vm", "wat", ] @@ -6904,15 +6826,14 @@ dependencies = [ "defer", "environmental", "gear-sandbox-env", + "gear-wasmer-cache", "log", "parity-scale-codec", "sp-allocator", "sp-wasm-interface-common", "tempfile", "thiserror", - "uluru", "wasmer", - "wasmer-cache", "wasmer-types", "wasmi 0.13.2", ] @@ -7068,6 +6989,7 @@ version = "1.6.2" dependencies = [ "anyhow", "cargo_metadata 0.18.1", + "cargo_toml", "chrono", "gear-core", "gear-pwasm-utils", @@ -7141,6 +7063,16 @@ dependencies = [ "which", ] +[[package]] +name = "gear-wasmer-cache" +version = "1.6.2" +dependencies = [ + "log", + "uluru", + "wasmer", + "wasmer-cache", +] + [[package]] name = "gear-weight-diff" version = "1.0.0" @@ -8344,12 +8276,6 @@ dependencies = [ "num-traits", ] -[[package]] -name = "intx" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f6f38a50a899dc47a6d0ed5508e7f601a2e34c3a85303514b5d137f3c10a0c75" - [[package]] name = "io-lifetimes" version = "1.0.11" @@ -8392,7 +8318,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cb0889898416213fab133e1d33a0e5858a48177452750691bde3666d0fdbaf8b" dependencies = [ "hermit-abi 0.3.2", - "rustix 0.38.31", + "rustix 0.38.37", "windows-sys 0.48.0", ] @@ -10103,9 +10029,9 @@ checksum = "ef53942eb7bf7ff43a617b3e2c1c4a5ecf5944a7c1bc12d7ee39bbb15e5c1519" [[package]] name = "linux-raw-sys" -version = "0.4.13" +version = "0.4.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "01cda141df6706de531b6c46c3a33ecca755538219bd484262fa09410c13539c" +checksum = "78b3ae25bc7c8c38cec158d1f2757ee79e9b3740fbc7ccf0e59e4b08d793fa89" [[package]] name = "lioness" @@ -12782,7 +12708,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "668d31b1c4eba19242f2088b2bf3316b82ca31082a8335764db4e083db7485d4" dependencies = [ "atomic-waker", - "fastrand 2.0.1", + "fastrand 2.1.1", "futures-io", ] @@ -12864,7 +12790,7 @@ dependencies = [ "cfg-if", "concurrent-queue", "pin-project-lite 0.2.13", - "rustix 0.38.31", + "rustix 0.38.37", "tracing", "windows-sys 0.52.0", ] @@ -13636,18 +13562,6 @@ dependencies = [ "syn 2.0.71", ] -[[package]] -name = "regalloc2" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "300d4fbfb40c1c66a78ba3ddd41c1110247cf52f97b87d0f2fc9209bd49b030c" -dependencies = [ - "fxhash", - "log", - "slice-group-by", - "smallvec", -] - [[package]] name = "regalloc2" version = "0.6.1" @@ -14167,14 +14081,14 @@ dependencies = [ [[package]] name = "rustix" -version = "0.38.31" +version = "0.38.37" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ea3e1a662af26cd7a3ba09c0297a31af215563ecf42817c98df621387f4e949" +checksum = "8acb788b847c24f28525660c4d7758620a7210875711f79e7f663cc152726811" dependencies = [ "bitflags 2.5.0", "errno", "libc", - "linux-raw-sys 0.4.13", + "linux-raw-sys 0.4.14", "windows-sys 0.52.0", ] @@ -17927,14 +17841,15 @@ checksum = "e1fc403891a21bcfb7c37834ba66a547a8f402146eba7265b5a6d88059c9ff2f" [[package]] name = "tempfile" -version = "3.10.1" +version = "3.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85b77fafb263dd9d05cbeac119526425676db3784113aa9295c88498cbf8bff1" +checksum = "f0f2c9fc62d0beef6951ccffd757e241266a2c833136efbe35af6cd2567dca5b" dependencies = [ "cfg-if", - "fastrand 2.0.1", - "rustix 0.38.31", - "windows-sys 0.52.0", + "fastrand 2.1.1", + "once_cell", + "rustix 0.38.37", + "windows-sys 0.59.0", ] [[package]] @@ -17963,7 +17878,7 @@ version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "21bebf2b7c9e0a515f6e0f8c51dc0f8e4696391e6f1ff30379559f8365fb0df7" dependencies = [ - "rustix 0.38.31", + "rustix 0.38.37", "windows-sys 0.48.0", ] @@ -19363,12 +19278,10 @@ dependencies = [ "tracing", "wasm-bindgen", "wasmer-compiler", - "wasmer-compiler-cranelift", "wasmer-compiler-singlepass", "wasmer-derive", "wasmer-types", "wasmer-vm", - "wat", "winapi", ] @@ -19413,25 +19326,6 @@ dependencies = [ "xxhash-rust", ] -[[package]] -name = "wasmer-compiler-cranelift" -version = "4.3.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f3352014573750327646a690d32774312b0e8b7920e7e8ba00c0449eac18390" -dependencies = [ - "cranelift-codegen 0.91.1", - "cranelift-entity 0.91.1", - "cranelift-frontend 0.91.1", - "gimli 0.26.2", - "more-asserts", - "rayon", - "smallvec", - "target-lexicon", - "tracing", - "wasmer-compiler", - "wasmer-types", -] - [[package]] name = "wasmer-compiler-singlepass" version = "4.3.5" @@ -19544,19 +19438,6 @@ dependencies = [ "wasmi_core 0.2.1", ] -[[package]] -name = "wasmi" -version = "0.30.0" -source = "git+https://github.com/gear-tech/wasmi?branch=gear-v0.30.0#c8b0be9c2012e0478959a59074fd953a942782bc" -dependencies = [ - "intx", - "smallvec", - "spin 0.9.8", - "wasmi_arena 0.4.0", - "wasmi_core 0.12.0", - "wasmparser-nostd", -] - [[package]] name = "wasmi" version = "0.31.2" @@ -19565,7 +19446,7 @@ checksum = "77a8281d1d660cdf54c76a3efa9ddd0c270cada1383a995db3ccb43d166456c7" dependencies = [ "smallvec", "spin 0.9.8", - "wasmi_arena 0.4.1", + "wasmi_arena", "wasmi_core 0.13.0", "wasmparser-nostd", ] @@ -19578,11 +19459,6 @@ dependencies = [ "parity-wasm", ] -[[package]] -name = "wasmi_arena" -version = "0.4.0" -source = "git+https://github.com/gear-tech/wasmi?branch=gear-v0.30.0#c8b0be9c2012e0478959a59074fd953a942782bc" - [[package]] name = "wasmi_arena" version = "0.4.1" @@ -19602,18 +19478,6 @@ dependencies = [ "region", ] -[[package]] -name = "wasmi_core" -version = "0.12.0" -source = "git+https://github.com/gear-tech/wasmi?branch=gear-v0.30.0#c8b0be9c2012e0478959a59074fd953a942782bc" -dependencies = [ - "downcast-rs", - "libm", - "num-traits", - "paste", - "region", -] - [[package]] name = "wasmi_core" version = "0.13.0" @@ -19774,9 +19638,9 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b1cefde0cce8cb700b1b21b6298a3837dba46521affd7b8c38a9ee2c869eee04" dependencies = [ "anyhow", - "cranelift-codegen 0.95.1", - "cranelift-entity 0.95.1", - "cranelift-frontend 0.95.1", + "cranelift-codegen", + "cranelift-entity", + "cranelift-frontend", "cranelift-native", "cranelift-wasm", "gimli 0.27.3", @@ -19796,7 +19660,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cd041e382ef5aea1b9fc78442394f1a4f6d676ce457e7076ca4cb3f397882f8b" dependencies = [ "anyhow", - "cranelift-codegen 0.95.1", + "cranelift-codegen", "cranelift-native", "gimli 0.27.3", "object 0.30.4", @@ -19811,7 +19675,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a990198cee4197423045235bf89d3359e69bd2ea031005f4c2d901125955c949" dependencies = [ "anyhow", - "cranelift-entity 0.95.1", + "cranelift-entity", "gimli 0.27.3", "indexmap 1.9.3", "log", @@ -19914,7 +19778,7 @@ version = "8.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a4f6fffd2a1011887d57f07654dd112791e872e3ff4a2e626aee8059ee17f06f" dependencies = [ - "cranelift-entity 0.95.1", + "cranelift-entity", "serde", "thiserror", "wasmparser 0.102.0", @@ -20053,7 +19917,7 @@ dependencies = [ "either", "home", "once_cell", - "rustix 0.38.31", + "rustix 0.38.37", ] [[package]] @@ -20179,7 +20043,16 @@ version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" dependencies = [ - "windows-targets 0.52.0", + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-sys" +version = "0.59.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b" +dependencies = [ + "windows-targets 0.52.6", ] [[package]] @@ -20214,17 +20087,18 @@ dependencies = [ [[package]] name = "windows-targets" -version = "0.52.0" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a18201040b24831fbb9e4eb208f8892e1f50a37feb53cc7ff887feb8f50e7cd" +checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" dependencies = [ - "windows_aarch64_gnullvm 0.52.0", - "windows_aarch64_msvc 0.52.0", - "windows_i686_gnu 0.52.0", - "windows_i686_msvc 0.52.0", - "windows_x86_64_gnu 0.52.0", - "windows_x86_64_gnullvm 0.52.0", - "windows_x86_64_msvc 0.52.0", + "windows_aarch64_gnullvm 0.52.6", + "windows_aarch64_msvc 0.52.6", + "windows_i686_gnu 0.52.6", + "windows_i686_gnullvm", + "windows_i686_msvc 0.52.6", + "windows_x86_64_gnu 0.52.6", + "windows_x86_64_gnullvm 0.52.6", + "windows_x86_64_msvc 0.52.6", ] [[package]] @@ -20241,9 +20115,9 @@ checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" [[package]] name = "windows_aarch64_gnullvm" -version = "0.52.0" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb7764e35d4db8a7921e09562a0304bf2f93e0a51bfccee0bd0bb0b666b015ea" +checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" [[package]] name = "windows_aarch64_msvc" @@ -20265,9 +20139,9 @@ checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" [[package]] name = "windows_aarch64_msvc" -version = "0.52.0" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bbaa0368d4f1d2aaefc55b6fcfee13f41544ddf36801e793edbbfd7d7df075ef" +checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" [[package]] name = "windows_i686_gnu" @@ -20289,9 +20163,15 @@ checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" [[package]] name = "windows_i686_gnu" -version = "0.52.0" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" + +[[package]] +name = "windows_i686_gnullvm" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a28637cb1fa3560a16915793afb20081aba2c92ee8af57b4d5f28e4b3e7df313" +checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" [[package]] name = "windows_i686_msvc" @@ -20313,9 +20193,9 @@ checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" [[package]] name = "windows_i686_msvc" -version = "0.52.0" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ffe5e8e31046ce6230cc7215707b816e339ff4d4d67c65dffa206fd0f7aa7b9a" +checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" [[package]] name = "windows_x86_64_gnu" @@ -20337,9 +20217,9 @@ checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" [[package]] name = "windows_x86_64_gnu" -version = "0.52.0" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d6fa32db2bc4a2f5abeacf2b69f7992cd09dca97498da74a151a3132c26befd" +checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" [[package]] name = "windows_x86_64_gnullvm" @@ -20355,9 +20235,9 @@ checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" [[package]] name = "windows_x86_64_gnullvm" -version = "0.52.0" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a657e1e9d3f514745a572a6846d3c7aa7dbe1658c056ed9c3344c4109a6949e" +checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" [[package]] name = "windows_x86_64_msvc" @@ -20379,9 +20259,9 @@ checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" [[package]] name = "windows_x86_64_msvc" -version = "0.52.0" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dff9641d1cd4be8d1a070daf9e3773c5f67e78b4d9d42263020c057706765c04" +checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" [[package]] name = "winnow" @@ -20529,8 +20409,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8da84f1a25939b27f6820d92aed108f83ff920fdf11a7b19366c27c4cda81d4f" dependencies = [ "libc", - "linux-raw-sys 0.4.13", - "rustix 0.38.31", + "linux-raw-sys 0.4.14", + "rustix 0.38.37", ] [[package]] diff --git a/Cargo.toml b/Cargo.toml index 1fa1b5efec3..da0cb93b1f8 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -178,9 +178,12 @@ url = "2.5.2" # wasmer 4.3.4 for some reason have wat's version "=1.0.71" nailed down, so we have to do the same wat = "1.0.71" wabt = "0.10.0" -wasmer = "4.3.4" +wasmer = { version = "4.3.4", default-features = false, features = ["singlepass"] } wasmer-cache = "4.3.4" wasmer-types = "4.3.4" +wasmer-vm = "4.3.4" +wasmer-compiler = "4.3.4" +gear-wasmer-cache = { path = "utils/gear-wasmer-cache" } wasmtime = "8.0.1" wasmparser = { package = "wasmparser-nostd", version = "0.100.1", default-features = false } which = "4.4.2" diff --git a/core-backend/src/env.rs b/core-backend/src/env.rs index b9520b8c5c6..72cc7342fe7 100644 --- a/core-backend/src/env.rs +++ b/core-backend/src/env.rs @@ -29,7 +29,7 @@ use crate::{ BackendExternalities, }; use alloc::{collections::BTreeSet, format, string::String}; -use core::{any::Any, fmt::Debug}; +use core::{any::Any, fmt::Debug, marker::Send}; use gear_core::{ env::Externalities, gas::GasAmount, @@ -60,7 +60,7 @@ macro_rules! wrap_syscall { }; } -fn store_host_state_mut( +fn store_host_state_mut( store: &mut Store>>, ) -> &mut State> { store.data_mut().as_mut().unwrap_or_else(|| { @@ -123,7 +123,7 @@ struct EnvBuilder { impl EnvBuilder where - Ext: BackendExternalities + 'static, + Ext: BackendExternalities + Send + 'static, Ext::UnrecoverableError: BackendSyscallError, RunFallibleError: From, Ext::AllocError: BackendAllocSyscallError, @@ -159,7 +159,7 @@ impl From> impl Environment where - Ext: BackendExternalities + 'static, + Ext: BackendExternalities + Send + 'static, Ext::UnrecoverableError: BackendSyscallError, RunFallibleError: From, Ext::AllocError: BackendAllocSyscallError, @@ -232,9 +232,9 @@ struct GlobalsAccessProvider { store: Option>>>, } -impl GlobalsAccessor for GlobalsAccessProvider { - fn get_i64(&self, name: &LimitedStr) -> Result { - let store = self.store.as_ref().ok_or(GlobalsAccessError)?; +impl GlobalsAccessor for GlobalsAccessProvider { + fn get_i64(&mut self, name: &LimitedStr) -> Result { + let store = self.store.as_mut().ok_or(GlobalsAccessError)?; self.instance .get_global_val(store, name.as_str()) .and_then(i64::try_from_value) @@ -255,7 +255,7 @@ impl GlobalsAccessor for GlobalsAccessProvider Environment where - EnvExt: BackendExternalities + 'static, + EnvExt: BackendExternalities + Send + 'static, EnvExt::UnrecoverableError: BackendSyscallError, RunFallibleError: From, EnvExt::AllocError: BackendAllocSyscallError, @@ -440,7 +440,7 @@ where // Fetching global value. let gas = instance - .get_global_val(&store, GLOBAL_NAME_GAS) + .get_global_val(&mut store, GLOBAL_NAME_GAS) .and_then(i64::try_from_value) .ok_or(System(WrongInjectedGas))? as u64; diff --git a/core-backend/src/mock.rs b/core-backend/src/mock.rs index c443dd1b19e..efd6b401e7c 100644 --- a/core-backend/src/mock.rs +++ b/core-backend/src/mock.rs @@ -22,18 +22,18 @@ use crate::{ }, BackendExternalities, }; -use alloc::{collections::BTreeSet, rc::Rc, vec, vec::Vec}; +use alloc::{collections::BTreeSet, vec::Vec}; use codec::{Decode, Encode}; -use core::{cell::RefCell, fmt, fmt::Debug, mem}; +use core::{fmt, fmt::Debug, mem}; use gear_core::{ costs::CostToken, env::{Externalities, PayloadSliceLock, UnlockPayloadBound}, env_vars::{EnvVars, EnvVarsV1}, gas::{ChargeError, CounterType, CountersOwner, GasAmount, GasCounter, GasLeft}, ids::{MessageId, ProgramId, ReservationId}, - memory::{HostPointer, Memory, MemoryError, MemoryInterval}, + memory::{Memory, MemoryInterval}, message::{HandlePacket, InitPacket, ReplyPacket}, - pages::{WasmPage, WasmPagesAmount}, + pages::WasmPage, }; use gear_core_errors::{ReplyCode, SignalCode}; use gear_lazy_pages_common::ProcessAccessError; @@ -310,97 +310,113 @@ impl BackendExternalities for MockExt { } } -#[derive(Debug)] -struct InnerMockMemory { - pages: Vec, - read_attempt_count: u32, - write_attempt_count: u32, -} +#[cfg(feature = "std")] +pub use with_std_feature::*; -impl InnerMockMemory { - fn grow(&mut self, pages: WasmPagesAmount) -> u32 { - let size = self.pages.len() as u32; - let new_size = size + pages.offset() as u32; - self.pages.resize(new_size as usize, 0); +#[cfg(feature = "std")] +mod with_std_feature { + use gear_core::{ + memory::{HostPointer, Memory, MemoryError}, + pages::{WasmPage, WasmPagesAmount}, + }; + use std::sync::{Arc, Mutex, MutexGuard}; - size / WasmPage::SIZE + #[derive(Debug)] + struct InnerMockMemory { + pages: Vec, + read_attempt_count: u32, + write_attempt_count: u32, } - fn write(&mut self, offset: u32, buffer: &[u8]) -> Result<(), MemoryError> { - self.write_attempt_count += 1; + impl InnerMockMemory { + fn grow(&mut self, pages: WasmPagesAmount) -> u32 { + let size = self.pages.len() as u32; + let new_size = size + pages.offset() as u32; + self.pages.resize(new_size as usize, 0); - let offset = offset as usize; - if offset + buffer.len() > self.pages.len() { - return Err(MemoryError::AccessOutOfBounds); + size / WasmPage::SIZE } - self.pages[offset..offset + buffer.len()].copy_from_slice(buffer); + fn write(&mut self, offset: u32, buffer: &[u8]) -> Result<(), MemoryError> { + self.write_attempt_count += 1; - Ok(()) - } + let offset = offset as usize; + if offset + buffer.len() > self.pages.len() { + return Err(MemoryError::AccessOutOfBounds); + } - fn read(&mut self, offset: u32, buffer: &mut [u8]) -> Result<(), MemoryError> { - self.read_attempt_count += 1; + self.pages[offset..offset + buffer.len()].copy_from_slice(buffer); - let offset = offset as usize; - if offset + buffer.len() > self.pages.len() { - return Err(MemoryError::AccessOutOfBounds); + Ok(()) } - buffer.copy_from_slice(&self.pages[offset..(offset + buffer.len())]); + fn read(&mut self, offset: u32, buffer: &mut [u8]) -> Result<(), MemoryError> { + self.read_attempt_count += 1; - Ok(()) - } + let offset = offset as usize; + if offset + buffer.len() > self.pages.len() { + return Err(MemoryError::AccessOutOfBounds); + } + + buffer.copy_from_slice(&self.pages[offset..(offset + buffer.len())]); + + Ok(()) + } - fn size(&self) -> WasmPagesAmount { - WasmPage::from_offset(self.pages.len() as u32).into() + fn size(&self) -> WasmPagesAmount { + WasmPage::from_offset(self.pages.len() as u32).into() + } } -} -#[derive(Debug, Clone)] -pub struct MockMemory(Rc>); + #[derive(Debug, Clone)] + pub struct MockMemory(Arc>); -impl MockMemory { - pub fn new(initial_pages: u32) -> Self { - let pages = vec![0; initial_pages as usize * WasmPage::SIZE as usize]; + impl MockMemory { + pub fn new(initial_pages: u32) -> Self { + let pages = vec![0; initial_pages as usize * WasmPage::SIZE as usize]; - Self(Rc::new(RefCell::new(InnerMockMemory { - pages, - read_attempt_count: 0, - write_attempt_count: 0, - }))) - } + Self(Arc::new(Mutex::new(InnerMockMemory { + pages, + read_attempt_count: 0, + write_attempt_count: 0, + }))) + } - pub fn read_attempt_count(&self) -> u32 { - self.0.borrow().read_attempt_count - } + fn lock(&self) -> MutexGuard<'_, InnerMockMemory> { + self.0.lock().unwrap() + } - pub fn write_attempt_count(&self) -> u32 { - self.0.borrow().write_attempt_count + pub fn read_attempt_count(&self) -> u32 { + self.lock().read_attempt_count + } + + pub fn write_attempt_count(&self) -> u32 { + self.lock().write_attempt_count + } } -} -impl Memory for MockMemory { - type GrowError = &'static str; + impl Memory for MockMemory { + type GrowError = &'static str; - fn grow(&self, _ctx: &mut Context, pages: WasmPagesAmount) -> Result<(), Self::GrowError> { - let _ = self.0.borrow_mut().grow(pages); - Ok(()) - } + fn grow(&self, _ctx: &mut Context, pages: WasmPagesAmount) -> Result<(), Self::GrowError> { + let _ = self.lock().grow(pages); + Ok(()) + } - fn size(&self, _ctx: &Context) -> WasmPagesAmount { - self.0.borrow_mut().size() - } + fn size(&self, _ctx: &Context) -> WasmPagesAmount { + self.lock().size() + } - fn write(&self, _ctx: &mut Context, offset: u32, buffer: &[u8]) -> Result<(), MemoryError> { - self.0.borrow_mut().write(offset, buffer) - } + fn write(&self, _ctx: &mut Context, offset: u32, buffer: &[u8]) -> Result<(), MemoryError> { + self.lock().write(offset, buffer) + } - fn read(&self, _ctx: &Context, offset: u32, buffer: &mut [u8]) -> Result<(), MemoryError> { - self.0.borrow_mut().read(offset, buffer) - } + fn read(&self, _ctx: &Context, offset: u32, buffer: &mut [u8]) -> Result<(), MemoryError> { + self.lock().read(offset, buffer) + } - unsafe fn get_buffer_host_addr_unsafe(&self, _ctx: &Context) -> HostPointer { - unimplemented!() + unsafe fn get_buffer_host_addr_unsafe(&self, _ctx: &Context) -> HostPointer { + unimplemented!() + } } } diff --git a/core-processor/src/executor.rs b/core-processor/src/executor.rs index 3d548321087..4b0e6e0ba72 100644 --- a/core-processor/src/executor.rs +++ b/core-processor/src/executor.rs @@ -57,7 +57,7 @@ pub(crate) fn execute_wasm( msg_ctx_settings: ContextSettings, ) -> Result where - Ext: ProcessorExternalities + BackendExternalities + 'static, + Ext: ProcessorExternalities + BackendExternalities + Send + 'static, ::AllocError: BackendAllocSyscallError, RunFallibleError: From, @@ -266,7 +266,7 @@ pub fn execute_for_reply( block_info: BlockInfo, ) -> Result, String> where - Ext: ProcessorExternalities + BackendExternalities + 'static, + Ext: ProcessorExternalities + BackendExternalities + Send + 'static, ::AllocError: BackendAllocSyscallError, RunFallibleError: From, diff --git a/core-processor/src/processing.rs b/core-processor/src/processing.rs index 9e91990bbdd..7011082f2d6 100644 --- a/core-processor/src/processing.rs +++ b/core-processor/src/processing.rs @@ -51,7 +51,7 @@ pub fn process( random_data: (Vec, u32), ) -> Result, SystemExecutionError> where - Ext: ProcessorExternalities + BackendExternalities + 'static, + Ext: ProcessorExternalities + BackendExternalities + Send + 'static, ::AllocError: BackendAllocSyscallError, RunFallibleError: From, diff --git a/core/src/memory.rs b/core/src/memory.rs index c057bbf7b58..bfa191a9c80 100644 --- a/core/src/memory.rs +++ b/core/src/memory.rs @@ -91,10 +91,10 @@ impl From for (u32, u32) { impl Debug for MemoryInterval { fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { - f.write_str(&format!( - "[offset: {:#x}, size: {:#x}]", - self.offset, self.size - )) + f.debug_struct("MemoryInterval") + .field("offset", &format_args!("{:#x}", self.offset)) + .field("size", &format_args!("{:#x}", self.size)) + .finish() } } diff --git a/ethexe/network/src/custom_connection_limits.rs b/ethexe/network/src/custom_connection_limits.rs index 60d45545247..041b31308f7 100644 --- a/ethexe/network/src/custom_connection_limits.rs +++ b/ethexe/network/src/custom_connection_limits.rs @@ -323,7 +323,7 @@ mod tests { assert_eq!( map.inner.into_keys().collect::>(), - Default::default() + HashSet::default() ); } diff --git a/ethexe/processor/src/host/mod.rs b/ethexe/processor/src/host/mod.rs index d28d28820c6..822b7b9498e 100644 --- a/ethexe/processor/src/host/mod.rs +++ b/ethexe/processor/src/host/mod.rs @@ -54,8 +54,6 @@ pub(crate) struct InstanceCreator { impl InstanceCreator { pub fn new(runtime: Vec) -> Result { - gear_runtime_interface::sandbox_init(); - let engine = wasmtime::Engine::default(); let module = wasmtime::Module::new(&engine, runtime)?; diff --git a/ethexe/runtime/common/src/lib.rs b/ethexe/runtime/common/src/lib.rs index 0f226fce9d0..085f8f8351e 100644 --- a/ethexe/runtime/common/src/lib.rs +++ b/ethexe/runtime/common/src/lib.rs @@ -105,13 +105,18 @@ pub(crate) fn update_state_with_storage( new_state_hash } -pub fn process_next_message>( +pub fn process_next_message( program_id: ProgramId, program_state: ProgramState, instrumented_code: Option, code_id: CodeId, ri: &RI, -) -> Vec { +) -> Vec +where + S: Storage, + RI: RuntimeInterface, + >::LazyPages: Send, +{ let block_info = ri.block_info(); log::trace!("Processing next message for program {program_id}"); diff --git a/gcli/Cargo.toml b/gcli/Cargo.toml index 5c37586644f..fed73c7699e 100644 --- a/gcli/Cargo.toml +++ b/gcli/Cargo.toml @@ -40,7 +40,7 @@ etc.workspace = true runtime-primitives.workspace = true url = { workspace = true, features = ["serde"] } toml.workspace = true -wasmer = { workspace = true, features = ["std"] } +wasmer.workspace = true wasmer-types.workspace = true [dev-dependencies] diff --git a/lazy-pages/Cargo.toml b/lazy-pages/Cargo.toml index d0bb3f5f295..24e04286ff5 100644 --- a/lazy-pages/Cargo.toml +++ b/lazy-pages/Cargo.toml @@ -17,6 +17,7 @@ cfg-if.workspace = true region.workspace = true derive_more.workspace = true numerated.workspace = true +wasmer-vm.workspace = true gear-sandbox-host.workspace = true gear-core.workspace = true diff --git a/lazy-pages/common/src/lib.rs b/lazy-pages/common/src/lib.rs index 7ac1eecdfd6..da57f7d1783 100644 --- a/lazy-pages/common/src/lib.rs +++ b/lazy-pages/common/src/lib.rs @@ -74,7 +74,7 @@ pub struct GlobalsAccessError; /// Globals access trait. pub trait GlobalsAccessor { /// Returns global `name` value, if `name` is I64 global export. - fn get_i64(&self, name: &LimitedStr) -> Result; + fn get_i64(&mut self, name: &LimitedStr) -> Result; /// Set global `name` == `value`, if `name` is I64 global export. fn set_i64(&mut self, name: &LimitedStr, value: i64) -> Result<(), GlobalsAccessError>; diff --git a/lazy-pages/src/globals.rs b/lazy-pages/src/globals.rs index 8e56342bd22..89dd33b617d 100644 --- a/lazy-pages/src/globals.rs +++ b/lazy-pages/src/globals.rs @@ -45,7 +45,7 @@ struct GlobalsAccessWasmRuntime<'a> { } impl<'a> GlobalsAccessor for GlobalsAccessWasmRuntime<'a> { - fn get_i64(&self, name: &LimitedStr) -> Result { + fn get_i64(&mut self, name: &LimitedStr) -> Result { // SAFETY: this is safe because this method is called only from signal handler context unsafe { self.instance @@ -81,7 +81,7 @@ struct GlobalsAccessNativeRuntime<'a, 'b> { } impl<'a, 'b> GlobalsAccessor for GlobalsAccessNativeRuntime<'a, 'b> { - fn get_i64(&self, name: &LimitedStr) -> Result { + fn get_i64(&mut self, name: &LimitedStr) -> Result { self.inner_access_provider.get_i64(name) } diff --git a/lazy-pages/src/lib.rs b/lazy-pages/src/lib.rs index 1bef69b7db9..6a724c6cc6a 100644 --- a/lazy-pages/src/lib.rs +++ b/lazy-pages/src/lib.rs @@ -43,7 +43,10 @@ mod sys; #[cfg(test)] mod tests; -pub use crate::common::LazyPagesStorage; +pub use common::{Error as LazyPagesError, LazyPagesStorage, LazyPagesVersion}; +pub use host_func::pre_process_memory_accesses; +pub use signal::{ExceptionInfo, UserSignalHandler}; + use crate::{ common::{ContextError, CostNo, Costs, LazyPagesContext, PagePrefix, PageSizes}, globals::{GlobalNo, GlobalsContext}, @@ -52,16 +55,13 @@ use crate::{ GearPagesAmount, GearSizeNo, PagesAmountTrait, SizeNumber, WasmPage, WasmPagesAmount, WasmSizeNo, SIZES_AMOUNT, }, + signal::DefaultUserSignalHandler, }; -pub use common::{Error as LazyPagesError, LazyPagesVersion}; use common::{LazyPagesExecutionContext, LazyPagesRuntimeContext}; use gear_lazy_pages_common::{GlobalsAccessConfig, LazyPagesInitContext, Status}; -pub use host_func::pre_process_memory_accesses; use mprotect::MprotectError; use numerated::iterators::IntervalIterator; use pages::GearPage; -use signal::DefaultUserSignalHandler; -pub use signal::{ExceptionInfo, UserSignalHandler}; use std::{cell::RefCell, convert::TryInto, num::NonZero}; /// Initialize lazy-pages once for process. @@ -442,6 +442,11 @@ pub fn init_with_handler( }) }); + // TODO: remove after usage of `wasmer::Store::set_trap_handler` for lazy-pages + // we capture executor signal handler first to call it later + // if our handler is not effective + wasmer_vm::init_traps(); + unsafe { init_for_process::()? } unsafe { sys::init_for_thread().map_err(InitForThread)? } diff --git a/node/authorship/src/tests.rs b/node/authorship/src/tests.rs index dd1b69705bb..6f785110f61 100644 --- a/node/authorship/src/tests.rs +++ b/node/authorship/src/tests.rs @@ -329,7 +329,6 @@ type TestCase = Box; #[test] fn run_all_tests() { init_logger(); - gear_runtime_interface::sandbox_init(); use basic_tests::*; diff --git a/node/cli/src/main.rs b/node/cli/src/main.rs index 7830fb5cfbb..93e1c2326e3 100644 --- a/node/cli/src/main.rs +++ b/node/cli/src/main.rs @@ -17,6 +17,5 @@ // along with this program. If not, see . fn main() -> gear_cli::Result<()> { - gear_runtime_interface::sandbox_init(); gear_cli::run() } diff --git a/runtime-interface/sandbox/src/detail.rs b/runtime-interface/sandbox/src/detail.rs index c4f401d7f6b..68ca0fd5792 100644 --- a/runtime-interface/sandbox/src/detail.rs +++ b/runtime-interface/sandbox/src/detail.rs @@ -65,12 +65,6 @@ thread_local! { static SANDBOXES: RefCell = RefCell::new(Sandboxes::new()); } -pub fn init() { - SANDBOXES.with(|sandboxes| { - let _store = sandboxes.borrow_mut().get(0); - }) -} - struct SupervisorContext<'a, 'b> { caller: &'a mut Caller<'b, StoreData>, dispatch_thunk: Func, diff --git a/runtime-interface/sandbox/src/lib.rs b/runtime-interface/sandbox/src/lib.rs index 7d15ef14fcd..cac05370ae2 100644 --- a/runtime-interface/sandbox/src/lib.rs +++ b/runtime-interface/sandbox/src/lib.rs @@ -28,9 +28,6 @@ use sp_wasm_interface::HostPointer; #[cfg(feature = "std")] pub mod detail; -#[cfg(feature = "std")] -pub use detail::init; - /// Wasm-only interface that provides functions for interacting with the sandbox. #[runtime_interface(wasm_only)] pub trait Sandbox { diff --git a/runtime-interface/src/lib.rs b/runtime-interface/src/lib.rs index 4c099d6f685..5ce2809ca84 100644 --- a/runtime-interface/src/lib.rs +++ b/runtime-interface/src/lib.rs @@ -50,7 +50,7 @@ use { pub use gear_sandbox_interface::sandbox; #[cfg(feature = "std")] -pub use gear_sandbox_interface::{detail as sandbox_detail, init as sandbox_init, Instantiate}; +pub use gear_sandbox_interface::{detail as sandbox_detail, Instantiate}; const _: () = assert!(size_of::() >= size_of::()); diff --git a/sandbox/host/Cargo.toml b/sandbox/host/Cargo.toml index 842303c3704..df634883545 100644 --- a/sandbox/host/Cargo.toml +++ b/sandbox/host/Cargo.toml @@ -20,15 +20,15 @@ defer.workspace = true environmental.workspace = true thiserror.workspace = true log = { workspace = true, features = ["std"] } -wasmer = { workspace = true, features = ["singlepass"] } +wasmer.workspace = true wasmer-types.workspace = true sandbox-wasmi.workspace = true sp-allocator = { workspace = true, features = ["std"] } sp-wasm-interface-common = { workspace = true, features = ["std"] } gear-sandbox-env = { workspace = true, features = ["std"] } -wasmer-cache = { workspace = true, optional = true } -tempfile.workspace = true -uluru = { workspace = true, optional = true } +gear-wasmer-cache = { workspace = true, optional = true } +tempfile = { workspace = true, optional = true } [features] -default = ["wasmer-cache", "uluru"] +default = ["wasmer-cache"] +wasmer-cache = ["gear-wasmer-cache", "tempfile"] diff --git a/sandbox/host/src/sandbox/wasmer_backend.rs b/sandbox/host/src/sandbox/wasmer_backend.rs index a4431947832..d94a0c6f0ed 100644 --- a/sandbox/host/src/sandbox/wasmer_backend.rs +++ b/sandbox/host/src/sandbox/wasmer_backend.rs @@ -18,12 +18,11 @@ //! Wasmer specific impls for sandbox -use std::{cell::RefCell, rc::Rc}; - use codec::{Decode, Encode}; use gear_sandbox_env::{HostError, Instantiate, WasmReturnValue, GLOBAL_NAME_GAS}; use sp_wasm_interface_common::{util, Pointer, ReturnValue, Value, WordSize}; -use wasmer::{AsStoreMut, Module, RuntimeError, Store}; +use std::{cell::RefCell, path::PathBuf, rc::Rc}; +use wasmer::{AsStoreMut, RuntimeError, Store}; use wasmer_types::TrapCode; use crate::{ @@ -38,10 +37,8 @@ use crate::{ pub use store_refcell::StoreRefCell; mod store_refcell; -#[cfg(feature = "wasmer-cache")] -mod cache; -#[cfg(feature = "wasmer-cache")] -use cache::*; +#[cfg(feature = "gear-wasmer-cache")] +use gear_wasmer_cache::*; environmental::environmental!(SupervisorContextStore: trait SupervisorContext); @@ -158,6 +155,20 @@ pub fn invoke( } } +#[cfg(feature = "gear-wasmer-cache")] +fn fs_cache() -> PathBuf { + use std::sync::OnceLock; + use tempfile::TempDir; + + static CACHE_DIR: OnceLock = OnceLock::new(); + CACHE_DIR + .get_or_init(|| { + tempfile::tempdir().expect("Cannot create temporary directory for wasmer caches") + }) + .path() + .into() +} + /// Instantiate a module within a sandbox context pub fn instantiate( version: Instantiate, @@ -166,27 +177,11 @@ pub fn instantiate( guest_env: GuestEnvironment, supervisor_context: &mut dyn SupervisorContext, ) -> std::result::Result { - #[cfg(feature = "wasmer-cache")] - let module = match get_cached_module(wasm, &context.store().borrow()) { - Ok(module) => { - log::trace!("Found cached module for current program"); - module - } - Err(CacheMissErr { - fs_cache, - code_hash, - }) => { - log::trace!("Cache for program has not been found, so compile it now"); - let module = Module::new(&context.store().borrow(), wasm) - .map_err(|_| InstantiationError::ModuleDecoding)?; - - try_to_store_module_in_cache(fs_cache, code_hash, wasm, &module); - - module - } - }; + #[cfg(feature = "gear-wasmer-cache")] + let module = get_or_compile_with_cache(wasm, context.store().borrow().engine(), fs_cache) + .map_err(|_| InstantiationError::ModuleDecoding)?; - #[cfg(not(feature = "wasmer-cache"))] + #[cfg(not(feature = "gear-wasmer-cache"))] let module = Module::new(&context.store().borrow(), wasm) .map_err(|_| InstantiationError::ModuleDecoding)?; diff --git a/sandbox/sandbox/Cargo.toml b/sandbox/sandbox/Cargo.toml index 90b345d6fa2..57f5fa61b36 100644 --- a/sandbox/sandbox/Cargo.toml +++ b/sandbox/sandbox/Cargo.toml @@ -17,7 +17,11 @@ targets = ["x86_64-unknown-linux-gnu"] [dependencies] codec.workspace = true log.workspace = true -wasmi = { git = "https://github.com/gear-tech/wasmi", branch = "gear-v0.30.0", default-features = false } +wasmer = { workspace = true, optional = true } +wasmer-types = { workspace = true, optional = true } +wasmer-vm = { workspace = true, optional = true } +wasmer-compiler = { workspace = true, optional = true } +gear-wasmer-cache = { workspace = true, optional = true } sp-core.workspace = true sp-std.workspace = true sp-wasm-interface-common.workspace = true @@ -38,7 +42,10 @@ std = [ "sp-wasm-interface-common/std", "gear-sandbox-interface/std", "gear-sandbox-env/std", - "wasmi/std", - "wasmi/virtual_memory", + "wasmer", + "wasmer-types", + "wasmer-vm", + "wasmer-compiler", + "gear-wasmer-cache", ] strict = [] diff --git a/sandbox/sandbox/build.rs b/sandbox/sandbox/build.rs new file mode 100644 index 00000000000..2ebc39a2c86 --- /dev/null +++ b/sandbox/sandbox/build.rs @@ -0,0 +1,27 @@ +// This file is part of Gear. +// +// Copyright (C) 2024 Gear Technologies Inc. +// SPDX-License-Identifier: GPL-3.0-or-later WITH Classpath-exception-2.0 +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program. If not, see . + +use std::{env, fs, path::PathBuf}; + +fn main() { + let out_dir = env::var("OUT_DIR").unwrap(); + let out_dir = PathBuf::from(out_dir); + // create placeholder in `OUT_DIR` + // so `env!("OUT_DIR")` can be used in embedded executor module caching + fs::write(out_dir.join("placeholder"), "placeholder file").unwrap(); +} diff --git a/sandbox/sandbox/src/embedded_executor.rs b/sandbox/sandbox/src/embedded_executor.rs index 3ec28a62066..6a3b08f387a 100644 --- a/sandbox/sandbox/src/embedded_executor.rs +++ b/sandbox/sandbox/src/embedded_executor.rs @@ -16,7 +16,7 @@ // You should have received a copy of the GNU General Public License // along with this program. If not, see . -//! An embedded WASM executor utilizing `wasmi`. +//! An embedded WASM executor utilizing `wasmer`. use crate::{ AsContextExt, Error, GlobalsSetError, HostError, HostFuncType, ReturnValue, SandboxStore, @@ -24,98 +24,247 @@ use crate::{ }; use alloc::string::String; use gear_sandbox_env::GLOBAL_NAME_GAS; -use sp_core::RuntimeDebug; -use sp_std::{collections::btree_map::BTreeMap, marker::PhantomData, prelude::*}; +use gear_wasmer_cache::get_or_compile_with_cache; use sp_wasm_interface_common::HostPointer; -use wasmi::{ - core::{Pages, Trap, UntypedValue}, - Config, Engine, ExternType, Linker, MemoryType, Module, StackLimits, StoreContext, - StoreContextMut, Value as RuntimeValue, +use std::{collections::btree_map::BTreeMap, fs, marker::PhantomData, path::PathBuf, ptr::NonNull}; +use wasmer::{ + sys::{BaseTunables, VMConfig}, + vm::{ + LinearMemory, MemoryStyle, TableStyle, VMGlobal, VMMemory, VMMemoryDefinition, VMTable, + VMTableDefinition, + }, + Engine, FunctionEnv, Global, GlobalType, Imports, MemoryError, MemoryType, NativeEngineExt, + RuntimeError, StoreMut, StoreObjects, StoreRef, TableType, Tunables, Value as RuntimeValue, }; +use wasmer_types::{ExternType, Target}; + +fn fs_cache() -> PathBuf { + let out_dir = PathBuf::from(env!("OUT_DIR")); + let cache = out_dir.join("wasmer-cache"); + if !cache.exists() { + fs::create_dir(&cache).unwrap(); + } + cache +} + +struct CustomTunables { + inner: BaseTunables, + vmconfig: VMConfig, +} + +impl CustomTunables { + fn for_target(target: &Target) -> Self { + Self { + inner: BaseTunables::for_target(target), + vmconfig: VMConfig { + wasm_stack_size: None, + }, + } + } + + fn with_wasm_stack_size(mut self, wasm_stack_size: impl Into>) -> Self { + self.vmconfig.wasm_stack_size = wasm_stack_size.into(); + self + } +} + +impl Tunables for CustomTunables { + fn memory_style(&self, memory: &MemoryType) -> MemoryStyle { + self.inner.memory_style(memory) + } + + fn table_style(&self, table: &TableType) -> TableStyle { + self.inner.table_style(table) + } + + fn create_host_memory( + &self, + ty: &MemoryType, + style: &MemoryStyle, + ) -> Result { + self.inner.create_host_memory(ty, style) + } + + unsafe fn create_vm_memory( + &self, + ty: &MemoryType, + style: &MemoryStyle, + vm_definition_location: NonNull, + ) -> Result { + self.inner + .create_vm_memory(ty, style, vm_definition_location) + } + + fn create_host_table(&self, ty: &TableType, style: &TableStyle) -> Result { + self.inner.create_host_table(ty, style) + } + + unsafe fn create_vm_table( + &self, + ty: &TableType, + style: &TableStyle, + vm_definition_location: NonNull, + ) -> Result { + self.inner + .create_vm_table(ty, style, vm_definition_location) + } + + fn create_global(&self, ty: GlobalType) -> Result { + self.inner.create_global(ty) + } + + unsafe fn create_memories( + &self, + context: &mut StoreObjects, + module: &wasmer_types::ModuleInfo, + memory_styles: &wasmer_types::entity::PrimaryMap, + memory_definition_locations: &[NonNull], + ) -> Result< + wasmer_types::entity::PrimaryMap< + wasmer_types::LocalMemoryIndex, + wasmer_vm::InternalStoreHandle, + >, + wasmer_compiler::LinkError, + > { + self.inner + .create_memories(context, module, memory_styles, memory_definition_locations) + } + + unsafe fn create_tables( + &self, + context: &mut StoreObjects, + module: &wasmer_types::ModuleInfo, + table_styles: &wasmer_types::entity::PrimaryMap, + table_definition_locations: &[NonNull], + ) -> Result< + wasmer_types::entity::PrimaryMap< + wasmer_types::LocalTableIndex, + wasmer_vm::InternalStoreHandle, + >, + wasmer_compiler::LinkError, + > { + self.inner + .create_tables(context, module, table_styles, table_definition_locations) + } + + fn create_globals( + &self, + context: &mut StoreObjects, + module: &wasmer_types::ModuleInfo, + ) -> Result< + wasmer_types::entity::PrimaryMap< + wasmer_types::LocalGlobalIndex, + wasmer_vm::InternalStoreHandle, + >, + wasmer_compiler::LinkError, + > { + self.inner.create_globals(context, module) + } + + fn vmconfig(&self) -> &VMConfig { + &self.vmconfig + } +} /// [`AsContextExt`] extension. -pub trait AsContext: wasmi::AsContext + wasmi::AsContextMut {} +pub trait AsContext: wasmer::AsStoreRef + wasmer::AsStoreMut {} -/// wasmi store wrapper. -#[derive(RuntimeDebug)] -pub struct Store(wasmi::Store); +#[derive(Debug)] +struct InnerState { + inner: T, + gas_global: Option, +} + +impl InnerState { + fn new(inner: T) -> Self { + Self { + inner, + gas_global: None, + } + } +} + +/// wasmer store wrapper. +#[derive(Debug)] +pub struct Store { + inner: wasmer::Store, + state: FunctionEnv>, +} impl Store { fn engine(&self) -> &Engine { - self.0.engine() + self.inner.engine() } } -impl SandboxStore for Store { +impl SandboxStore for Store { fn new(state: T) -> Self { - let register_len = size_of::(); - - const DEFAULT_MIN_VALUE_STACK_HEIGHT: usize = 1024; - const DEFAULT_MAX_VALUE_STACK_HEIGHT: usize = 1024 * DEFAULT_MIN_VALUE_STACK_HEIGHT; - const DEFAULT_MAX_RECURSION_DEPTH: usize = 16384; - - let mut config = Config::default(); - config.set_stack_limits( - StackLimits::new( - DEFAULT_MIN_VALUE_STACK_HEIGHT / register_len, - DEFAULT_MAX_VALUE_STACK_HEIGHT / register_len, - DEFAULT_MAX_RECURSION_DEPTH, - ) - .expect("infallible"), - ); + let mut engine = Engine::from(wasmer::Singlepass::new()); + let tunables = CustomTunables::for_target(engine.target()) + // make stack size bigger for fuzzer + .with_wasm_stack_size(16 * 1024 * 1024); + engine.set_tunables(tunables); + let mut store = wasmer::Store::new(engine); - let engine = Engine::new(&config); - let store = wasmi::Store::new(&engine, state); - Self(store) + let state = FunctionEnv::new(&mut store, InnerState::new(state)); + + Self { + inner: store, + state, + } } } -impl wasmi::AsContext for Store { - type UserState = T; - - fn as_context(&self) -> StoreContext { - self.0.as_context() +impl wasmer::AsStoreRef for Store { + fn as_store_ref(&self) -> StoreRef<'_> { + self.inner.as_store_ref() } } -impl wasmi::AsContextMut for Store { - fn as_context_mut(&mut self) -> StoreContextMut { - self.0.as_context_mut() +impl wasmer::AsStoreMut for Store { + fn as_store_mut(&mut self) -> StoreMut<'_> { + self.inner.as_store_mut() + } + + fn objects_mut(&mut self) -> &mut StoreObjects { + self.inner.objects_mut() } } -impl AsContextExt for Store { +impl AsContextExt for Store { type State = T; fn data_mut(&mut self) -> &mut Self::State { - self.0.data_mut() + &mut self.state.as_mut(&mut self.inner).inner } } impl AsContext for Store {} -/// wasmi caller wrapper. -pub struct Caller<'a, T>(wasmi::Caller<'a, T>); +/// wasmer function env wrapper. +pub struct Caller<'a, T>(wasmer::FunctionEnvMut<'a, InnerState>); -impl wasmi::AsContext for Caller<'_, T> { - type UserState = T; - - fn as_context(&self) -> StoreContext { - self.0.as_context() +impl wasmer::AsStoreRef for Caller<'_, T> { + fn as_store_ref(&self) -> StoreRef<'_> { + self.0.as_store_ref() } } -impl wasmi::AsContextMut for Caller<'_, T> { - fn as_context_mut(&mut self) -> StoreContextMut { - self.0.as_context_mut() +impl wasmer::AsStoreMut for Caller<'_, T> { + fn as_store_mut(&mut self) -> StoreMut<'_> { + self.0.as_store_mut() + } + + fn objects_mut(&mut self) -> &mut StoreObjects { + self.0.objects_mut() } } -impl AsContextExt for Caller<'_, T> { +impl AsContextExt for Caller<'_, T> { type State = T; fn data_mut(&mut self) -> &mut Self::State { - self.0.data_mut() + &mut self.0.data_mut().inner } } @@ -124,26 +273,33 @@ impl AsContext for Caller<'_, T> {} /// The linear memory used by the sandbox. #[derive(Clone)] pub struct Memory { - memref: wasmi::Memory, + memref: wasmer::Memory, + base: usize, } impl super::SandboxMemory for Memory { fn new(store: &mut Store, initial: u32, maximum: Option) -> Result { - let ty = MemoryType::new(initial, maximum).map_err(|_| Error::Module)?; - let memref = wasmi::Memory::new(store, ty).map_err(|_| Error::Module)?; - Ok(Memory { memref }) + let ty = MemoryType::new(initial, maximum, false); + let memory_style = store.engine().tunables().memory_style(&ty); + let memref = VMMemory::new(&ty, &memory_style).map_err(|e| { + log::trace!("Failed to create memory: {e}"); + Error::Module + })?; + // SAFETY: `vmmemory()` returns `NonNull` so pointer is valid + let memory_definition = unsafe { memref.vmmemory().as_ref() }; + let base = memory_definition.base as usize; + let memref = wasmer::Memory::new_from_existing(store, memref); + Ok(Memory { memref, base }) } fn read(&self, ctx: &Context, ptr: u32, buf: &mut [u8]) -> Result<(), Error> where Context: AsContextExt, { - let data = self - .memref - .data(ctx) - .get((ptr as usize)..(ptr as usize + buf.len())) - .ok_or(Error::OutOfBounds)?; - buf[..].copy_from_slice(data); + self.memref + .view(ctx) + .read(ptr as u64, buf) + .map_err(|_| Error::OutOfBounds)?; Ok(()) } @@ -151,12 +307,10 @@ impl super::SandboxMemory for Memory { where Context: AsContextExt, { - let data = self - .memref - .data_mut(ctx) - .get_mut((ptr as usize)..(ptr as usize + value.len())) - .ok_or(Error::OutOfBounds)?; - data[..].copy_from_slice(value); + self.memref + .view(ctx) + .write(ptr as u64, value) + .map_err(|_| Error::OutOfBounds)?; Ok(()) } @@ -164,10 +318,9 @@ impl super::SandboxMemory for Memory { where Context: AsContextExt, { - let pages = Pages::new(pages).ok_or(Error::MemoryGrow)?; self.memref .grow(ctx, pages) - .map(Into::into) + .map(|pages| pages.0) .map_err(|_| Error::MemoryGrow) } @@ -175,14 +328,14 @@ impl super::SandboxMemory for Memory { where Context: AsContextExt, { - self.memref.current_pages(ctx).into() + self.memref.view(ctx).size().0 } - unsafe fn get_buff(&self, ctx: &Context) -> u64 + unsafe fn get_buff(&self, _ctx: &Context) -> u64 where Context: AsContextExt, { - self.memref.data(ctx).as_ptr() as usize as u64 + self.base as u64 } } @@ -249,33 +402,33 @@ impl super::SandboxEnvironmentBuilder for EnvironmentDefinitionBui /// Sandboxed instance of a WASM module. pub struct Instance { - instance: wasmi::Instance, + instance: wasmer::Instance, _marker: PhantomData, } impl Clone for Instance { fn clone(&self) -> Self { Self { - instance: self.instance, + instance: self.instance.clone(), _marker: PhantomData, } } } -impl super::SandboxInstance for Instance { +impl super::SandboxInstance for Instance { type Memory = Memory; type EnvironmentBuilder = EnvironmentDefinitionBuilder; fn new( - mut store: &mut Store, + store: &mut Store, code: &[u8], env_def_builder: &Self::EnvironmentBuilder, ) -> Result, Error> { - let module = Module::new(store.engine(), code).map_err(|e| { + let module = get_or_compile_with_cache(code, store.engine(), fs_cache).map_err(|e| { log::trace!(target: TARGET, "Failed to create module: {e}"); Error::Module })?; - let mut linker = Linker::new(store.engine()); + let mut imports = Imports::new(); for import in module.imports() { let module = import.module().to_string(); @@ -290,61 +443,69 @@ impl super::SandboxInstance for Instance { .get(&key) .cloned() .and_then(|val| val.memory()) - .ok_or(Error::Module)? + .ok_or_else(|| { + log::trace!("Memory import for `{module}::{name}` not found"); + Error::Module + })? .memref; - - let mem = wasmi::Extern::Memory(mem); - linker - .define(&module, &name, mem) - .map_err(|_| Error::Module)?; + imports.define(&module, &name, mem); } - ExternType::Func(func_ty) => { + ExternType::Function(func_ty) => { let func_ptr = env_def_builder .map .get(&key) .cloned() .and_then(|val| val.host_func()) - .ok_or(Error::Module)?; + .ok_or_else(|| { + log::trace!("Function import for `{module}::{name}` not found"); + Error::Module + })?; - let func = wasmi::Func::new( - &mut store, + let func_ty = func_ty.clone(); + + let func = wasmer::Function::new_with_env( + &mut store.inner, + &store.state, func_ty.clone(), - move |caller, params, results| { - let gas = caller - .get_export(GLOBAL_NAME_GAS) - .ok_or_else(|| { - Trap::new(format!("failed to find `{GLOBAL_NAME_GAS}` export")) - })? - .into_global() - .ok_or_else(|| { - Trap::new(format!("{GLOBAL_NAME_GAS} is not global")) - })?; + move |mut env, params| { + let (inner_state, mut store) = env.data_and_store_mut(); + let gas = inner_state + .gas_global + .as_ref() + .unwrap_or_else(|| { + unreachable!( + "`{GLOBAL_NAME_GAS}` global should be set to `Some(...)`" + ) + }) + .clone(); - let params: Vec<_> = Some(gas.get(&caller)) + let params: Vec<_> = Some(gas.get(&mut store)) .into_iter() .chain(params.iter().cloned()) .map(to_interface) .map(|val| { - val.ok_or(Trap::new( - "`externref` or `funcref` are not supported", - )) + val.ok_or_else(|| { + RuntimeError::new( + "`externref` or `funcref` are not supported", + ) + }) }) .collect::>()?; - let mut caller = Caller(caller); + let mut caller = Caller(env); let val = (func_ptr)(&mut caller, ¶ms) - .map_err(|HostError| Trap::new("function error"))?; + .map_err(|HostError| RuntimeError::new("function error"))?; - match (val.inner, results) { - (ReturnValue::Unit, []) => {} + let return_val = match (val.inner, func_ty.results()) { + (ReturnValue::Unit, []) => None, (ReturnValue::Value(val), [ret]) => { - let val = to_wasmi(val); + let val = to_wasmer(val); - if val.ty() != ret.ty() { - return Err(Trap::new("mismatching return types")); + if val.ty() != *ret { + return Err(RuntimeError::new("mismatching return types")); } - *ret = val; + Some(val) } _results => { let err_msg = format!( @@ -355,34 +516,34 @@ impl super::SandboxInstance for Instance { log::error!("{err_msg}"); unreachable!("{err_msg}") } - } + }; gas.set(&mut caller.0, RuntimeValue::I64(val.gas)) .map_err(|e| { - Trap::new(format!( + RuntimeError::new(format!( "failed to set `{GLOBAL_NAME_GAS}` global: {e}" )) })?; - Ok(()) + Ok(Vec::from_iter(return_val)) }, ); - let func = wasmi::Extern::Func(func); - linker - .define(&module, &name, func) - .map_err(|_| Error::Module)?; + imports.define(&module, &name, func); } } } - let instance_pre = linker.instantiate(&mut store, &module).map_err(|e| { + let instance = wasmer::Instance::new(store, &module, &imports).map_err(|e| { log::trace!(target: TARGET, "Error instantiating module: {:?}", e); Error::Module })?; - let instance = instance_pre.start(&mut store).map_err(|e| { - log::trace!(target: TARGET, "Error starting module: {:?}", e); - Error::Module - })?; + + store.state.as_mut(&mut store.inner).gas_global = instance + .exports + .get_global(GLOBAL_NAME_GAS) + // gas global is optional during some benchmarks + .ok() + .cloned(); Ok(Instance { instance, @@ -396,23 +557,20 @@ impl super::SandboxInstance for Instance { name: &str, args: &[Value], ) -> Result { - let args = args.iter().cloned().map(to_wasmi).collect::>(); + let args = args.iter().cloned().map(to_wasmer).collect::>(); let func = self .instance - .get_func(&store, name) - .ok_or(Error::Execution)?; - - let func_ty = func.ty(&store); - let mut results = - vec![RuntimeValue::ExternRef(wasmi::ExternRef::null()); func_ty.results().len()]; + .exports + .get_function(name) + .map_err(|_| Error::Execution)?; - func.call(&mut store, &args, &mut results).map_err(|e| { + let results = func.call(&mut store, &args).map_err(|e| { log::trace!(target: TARGET, "invocation error: {e}"); Error::Execution })?; - match results.as_slice() { + match results.as_ref() { [] => Ok(ReturnValue::Unit), [val] => { let val = to_interface(val.clone()).ok_or(Error::Execution)?; @@ -430,8 +588,8 @@ impl super::SandboxInstance for Instance { } } - fn get_global_val(&self, store: &Store, name: &str) -> Option { - let global = self.instance.get_global(store, name)?; + fn get_global_val(&self, store: &mut Store, name: &str) -> Option { + let global = self.instance.exports.get_global(name).ok()?; let global = global.get(store); to_interface(global) } @@ -444,10 +602,11 @@ impl super::SandboxInstance for Instance { ) -> Result<(), GlobalsSetError> { let global = self .instance - .get_global(&store, name) - .ok_or(GlobalsSetError::NotFound)?; + .exports + .get_global(name) + .map_err(|_| GlobalsSetError::NotFound)?; global - .set(&mut store, to_wasmi(value)) + .set(&mut store, to_wasmer(value)) .map_err(|_| GlobalsSetError::Other)?; Ok(()) } @@ -460,24 +619,24 @@ impl super::SandboxInstance for Instance { } } -/// Convert the substrate value type to the wasmi value type. -fn to_wasmi(value: Value) -> RuntimeValue { +/// Convert the substrate value type to the wasmer value type. +fn to_wasmer(value: Value) -> RuntimeValue { match value { Value::I32(val) => RuntimeValue::I32(val), Value::I64(val) => RuntimeValue::I64(val), - Value::F32(val) => RuntimeValue::F32(val.into()), - Value::F64(val) => RuntimeValue::F64(val.into()), + Value::F32(val) => RuntimeValue::F32(f32::from_bits(val)), + Value::F64(val) => RuntimeValue::F64(f64::from_bits(val)), } } -/// Convert the wasmi value type to the substrate value type. +/// Convert the wasmer value type to the substrate value type. fn to_interface(value: RuntimeValue) -> Option { match value { RuntimeValue::I32(val) => Some(Value::I32(val)), RuntimeValue::I64(val) => Some(Value::I64(val)), - RuntimeValue::F32(val) => Some(Value::F32(val.into())), - RuntimeValue::F64(val) => Some(Value::F64(val.into())), - RuntimeValue::FuncRef(_) | RuntimeValue::ExternRef(_) => None, + RuntimeValue::F32(val) => Some(Value::F32(val.to_bits())), + RuntimeValue::F64(val) => Some(Value::F64(val.to_bits())), + RuntimeValue::V128(_) | RuntimeValue::FuncRef(_) | RuntimeValue::ExternRef(_) => None, } } diff --git a/sandbox/sandbox/src/host_executor.rs b/sandbox/sandbox/src/host_executor.rs index 2e8ef4e8826..a05be46ca7a 100644 --- a/sandbox/sandbox/src/host_executor.rs +++ b/sandbox/sandbox/src/host_executor.rs @@ -380,7 +380,7 @@ impl super::SandboxInstance for Instance { } } - fn get_global_val(&self, _store: &Store, name: &str) -> Option { + fn get_global_val(&self, _store: &mut Store, name: &str) -> Option { sandbox::get_global_val(*self.instance_idx, name) } diff --git a/sandbox/sandbox/src/lib.rs b/sandbox/sandbox/src/lib.rs index 5ae1106b580..886b039c445 100644 --- a/sandbox/sandbox/src/lib.rs +++ b/sandbox/sandbox/src/lib.rs @@ -44,23 +44,26 @@ extern crate alloc; #[cfg(feature = "std")] pub mod embedded_executor; -pub use gear_sandbox_env as env; +#[cfg(feature = "std")] +pub use self::embedded_executor as default_executor; + #[cfg(not(feature = "std"))] +#[cfg(target_arch = "wasm32")] pub mod host_executor; +#[cfg(not(feature = "std"))] +#[cfg(target_arch = "wasm32")] +pub use self::host_executor as default_executor; + +pub use gear_sandbox_env as env; +pub use gear_sandbox_env::HostError; + +pub use sp_wasm_interface_common::{IntoValue, ReturnValue, TryFromValue, Value}; use alloc::string::String; use sp_core::RuntimeDebug; use sp_std::prelude::*; use sp_wasm_interface_common::HostPointer; -pub use sp_wasm_interface_common::{IntoValue, ReturnValue, TryFromValue, Value}; - -#[cfg(feature = "std")] -pub use self::embedded_executor as default_executor; -pub use self::env::HostError; -#[cfg(not(feature = "std"))] -pub use self::host_executor as default_executor; - /// The target used for logging. const TARGET: &str = "runtime::sandbox"; @@ -249,7 +252,11 @@ pub trait SandboxInstance: Sized { /// Get the value from a global with the given `name`. /// /// Returns `Some(_)` if the global could be found. - fn get_global_val(&self, store: &default_executor::Store, name: &str) -> Option; + fn get_global_val( + &self, + store: &mut default_executor::Store, + name: &str, + ) -> Option; /// Set the value of a global with the given `name`. fn set_global_val( diff --git a/scripts/cargo-xwin.sh b/scripts/cargo-xwin.sh index 5e7fe7dbf23..416ef52347c 100755 --- a/scripts/cargo-xwin.sh +++ b/scripts/cargo-xwin.sh @@ -1,3 +1,19 @@ #!/usr/bin/env bash -XWIN_ARCH="x86_64" CARGO_BUILD_TARGET=x86_64-pc-windows-msvc CARGO_TARGET_DIR="target-xwin" cargo xwin $@ +export CARGO_BUILD_TARGET="x86_64-pc-windows-msvc" +export XWIN_ARCH="x86_64" +export CARGO_TARGET_DIR="target-xwin" + +if [ "$1" = "--gdb" ]; then + export CARGO_TARGET_X86_64_PC_WINDOWS_MSVC_RUNNER="winedbg --gdb --no-start" + shift +fi + +if [ "$1" = "--lldb" ]; then + export CARGO_TARGET_X86_64_PC_WINDOWS_MSVC_RUNNER="/opt/homebrew/opt/llvm/bin/lldb-server g :1234 -- wine" + shift +fi + +cargo xwin $@ + +wineserver -k diff --git a/utils/calc-stack-height/Cargo.toml b/utils/calc-stack-height/Cargo.toml index 31faf729ae3..15a97459277 100644 --- a/utils/calc-stack-height/Cargo.toml +++ b/utils/calc-stack-height/Cargo.toml @@ -11,7 +11,7 @@ repository.workspace = true gear-core.workspace = true gear-wasm-instrument.workspace = true vara-runtime = { workspace = true, features = ["std", "dev"] } -wasmer = { workspace = true, features = ["singlepass"] } +wasmer.workspace = true wasmer-types.workspace = true log.workspace = true env_logger.workspace = true diff --git a/utils/crates-io/src/lib.rs b/utils/crates-io/src/lib.rs index c7fb991429d..e0b4f4fb71e 100644 --- a/utils/crates-io/src/lib.rs +++ b/utils/crates-io/src/lib.rs @@ -64,6 +64,7 @@ pub const STACKED_DEPENDENCIES: &[&str] = &[ "gear-core", "gear-utils", "gear-common", + "gear-wasmer-cache", "gear-sandbox-host", "gear-lazy-pages-common", "gear-lazy-pages", diff --git a/utils/gear-replay-cli/src/cmd/mod.rs b/utils/gear-replay-cli/src/cmd/mod.rs index ffc93f217f0..0557362be4c 100644 --- a/utils/gear-replay-cli/src/cmd/mod.rs +++ b/utils/gear-replay-cli/src/cmd/mod.rs @@ -63,8 +63,6 @@ pub enum Command { impl Command { pub async fn run(&self, shared: &SharedParams) -> sc_cli::Result<()> { - gear_runtime_interface::sandbox_init(); - match &self { Command::ReplayBlock(cmd) => { replay_block::run::(shared.clone(), cmd.clone()).await diff --git a/utils/gear-wasmer-cache/Cargo.toml b/utils/gear-wasmer-cache/Cargo.toml new file mode 100644 index 00000000000..772f2b8f842 --- /dev/null +++ b/utils/gear-wasmer-cache/Cargo.toml @@ -0,0 +1,15 @@ +[package] +name = "gear-wasmer-cache" +version.workspace = true +authors.workspace = true +edition.workspace = true +license.workspace = true +homepage.workspace = true +repository.workspace = true +rust-version.workspace = true + +[dependencies] +wasmer.workspace = true +wasmer-cache.workspace = true +log.workspace = true +uluru.workspace = true diff --git a/sandbox/host/src/sandbox/wasmer_backend/cache.rs b/utils/gear-wasmer-cache/src/lib.rs similarity index 81% rename from sandbox/host/src/sandbox/wasmer_backend/cache.rs rename to utils/gear-wasmer-cache/src/lib.rs index e7089cfb151..ff48e592f84 100644 --- a/sandbox/host/src/sandbox/wasmer_backend/cache.rs +++ b/utils/gear-wasmer-cache/src/lib.rs @@ -25,9 +25,8 @@ use std::{ sync::{Mutex, OnceLock}, }; -use tempfile::TempDir; use uluru::LRUCache; -use wasmer::Module; +use wasmer::{CompileError, Engine, Module}; use wasmer_cache::Hash; pub struct CacheMissErr { @@ -51,21 +50,11 @@ fn lru_cache() -> &'static CachedModules { CACHED_MODULES.get_or_init(|| Mutex::new(LRUCache::default())) } -fn fs_cache() -> FileSystemCache { - static CACHE_DIR: OnceLock = OnceLock::new(); - - // Try to load from tempfile cache - let cache_path = CACHE_DIR - .get_or_init(|| { - tempfile::tempdir().expect("Cannot create temporary directory for wasmer caches") - }) - .path(); - log::trace!("Wasmer sandbox cache dir is: {cache_path:?}"); - - FileSystemCache::new(cache_path) -} - -pub fn get_cached_module(wasm: &[u8], store: &wasmer::Store) -> Result { +pub fn get_cached_module( + wasm: &[u8], + engine: &Engine, + fs_cache: impl FnOnce() -> PathBuf, +) -> Result { let mut lru_lock = lru_cache().lock().expect("CACHED_MODULES lock fail"); let maybe_module = lru_lock.find(|x| x.wasm == wasm); @@ -77,14 +66,14 @@ pub fn get_cached_module(wasm: &[u8], store: &wasmer::Store) -> Result Result PathBuf, +) -> Result { + match get_cached_module(wasm, engine, fs_cache) { + Ok(module) => { + log::trace!("Found cached module for current program"); + Ok(module) + } + Err(CacheMissErr { + fs_cache, + code_hash, + }) => { + log::trace!("Cache for program has not been found, so compile it now"); + let module = Module::new(engine, wasm)?; + + try_to_store_module_in_cache(fs_cache, code_hash, wasm, &module); + + Ok(module) + } + } +} + /// Altered copy of the `FileSystemCache` struct from `wasmer_cache` crate. #[derive(Debug, Clone)] pub struct FileSystemCache { diff --git a/utils/lazy-pages-fuzzer/Cargo.toml b/utils/lazy-pages-fuzzer/Cargo.toml index ced04890460..ae84c472580 100644 --- a/utils/lazy-pages-fuzzer/Cargo.toml +++ b/utils/lazy-pages-fuzzer/Cargo.toml @@ -14,7 +14,7 @@ gear-lazy-pages.workspace = true gear-lazy-pages-common.workspace = true log.workspace = true region.workspace = true -wasmer = { workspace = true, features = ["singlepass"] } +wasmer.workspace = true sandbox-wasmi.workspace = true wasmprinter.workspace = true wat.workspace = true diff --git a/utils/wasm-builder/Cargo.toml b/utils/wasm-builder/Cargo.toml index d11bb245d3d..0a342ce01c5 100644 --- a/utils/wasm-builder/Cargo.toml +++ b/utils/wasm-builder/Cargo.toml @@ -13,6 +13,7 @@ readme = "README.md" [dependencies] anyhow.workspace = true cargo_metadata.workspace = true +cargo_toml.workspace = true chrono = "0.4" thiserror.workspace = true regex.workspace = true diff --git a/utils/wasm-builder/src/crate_info.rs b/utils/wasm-builder/src/crate_info.rs index 59fff9b5c07..a915d1bb493 100644 --- a/utils/wasm-builder/src/crate_info.rs +++ b/utils/wasm-builder/src/crate_info.rs @@ -32,6 +32,8 @@ pub struct CrateInfo { pub version: String, /// Crate features. pub features: BTreeMap>, + /// Crate custom profiles + pub profiles: BTreeMap, } impl CrateInfo { @@ -52,6 +54,16 @@ impl CrateInfo { .ok_or_else(|| BuilderError::RootPackageNotFound.into()) .and_then(Self::check)?; + let manifest = cargo_toml::Manifest::from_path(metadata.workspace_root.join("Cargo.toml")) + .context("manifest parsing failed")?; + let profiles = manifest + .profile + .custom + .into_iter() + .map(|(k, v)| Ok((k, toml::Value::try_from(v)?))) + .collect::>() + .context("failed to convert profile to `toml::Value`")?; + multiple_crate_versions::check(&metadata, &root_package.id)?; let name = root_package.name.clone(); @@ -64,6 +76,7 @@ impl CrateInfo { snake_case_name, version, features, + profiles, }) } diff --git a/utils/wasm-builder/src/wasm_project.rs b/utils/wasm-builder/src/wasm_project.rs index aecd3c7e0b4..ec9b8b1ce50 100644 --- a/utils/wasm-builder/src/wasm_project.rs +++ b/utils/wasm-builder/src/wasm_project.rs @@ -200,7 +200,7 @@ impl WasmProject { let mut production_profile = Table::new(); production_profile.insert("inherits".into(), "release".into()); - let mut profile = Table::new(); + let mut profile = crate_info.profiles; profile.insert("dev".into(), dev_profile.clone().into()); profile.insert("release".into(), release_profile.into()); profile.insert("production".into(), production_profile.into()); diff --git a/utils/wasm-optimizer/Cargo.toml b/utils/wasm-optimizer/Cargo.toml index 0501a8c94dd..9d85e01fcf5 100644 --- a/utils/wasm-optimizer/Cargo.toml +++ b/utils/wasm-optimizer/Cargo.toml @@ -23,5 +23,5 @@ which.workspace = true colored.workspace = true [dev-dependencies] -wasmer = { workspace = true, features = ["std"] } +wasmer.workspace = true wabt.workspace = true From 6d8f5d40f20506d91c27ae46f9f679140aca1500 Mon Sep 17 00:00:00 2001 From: StackOverflowExcept1on <109800286+StackOverflowExcept1on@users.noreply.github.com> Date: Wed, 23 Oct 2024 16:50:43 +0300 Subject: [PATCH 3/4] feat(crates-io): publish gbuiltins (#4306) --- Cargo.lock | 2 +- gbuiltins/staking/Cargo.toml | 4 ++-- gbuiltins/staking/src/lib.rs | 4 +--- utils/crates-io/src/lib.rs | 3 +++ 4 files changed, 7 insertions(+), 6 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index f721de284e4..bd513d4afba 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -6217,8 +6217,8 @@ dependencies = [ name = "gbuiltin-staking" version = "1.6.2" dependencies = [ - "derive_more 0.99.18", "gprimitives", + "parity-scale-codec", "scale-info", ] diff --git a/gbuiltins/staking/Cargo.toml b/gbuiltins/staking/Cargo.toml index b3e6404913c..71860b4b882 100644 --- a/gbuiltins/staking/Cargo.toml +++ b/gbuiltins/staking/Cargo.toml @@ -9,6 +9,6 @@ homepage.workspace = true repository.workspace = true [dependencies] -gprimitives.workspace = true -derive_more.workspace = true +parity-scale-codec = { workspace = true, features = ["derive"] } scale-info = { workspace = true, features = ["derive"] } +gprimitives = { workspace = true, features = ["codec"] } diff --git a/gbuiltins/staking/src/lib.rs b/gbuiltins/staking/src/lib.rs index ae3912404d7..ae71c44efc8 100644 --- a/gbuiltins/staking/src/lib.rs +++ b/gbuiltins/staking/src/lib.rs @@ -60,14 +60,13 @@ extern crate alloc; use alloc::vec::Vec; use gprimitives::ActorId; -use scale_info::scale::{self, Decode, Encode}; +use parity_scale_codec::{Decode, Encode}; /// Type that should be used to create a message to the staking built-in actor. /// /// A [partial] mirror of the staking pallet interface. Not all extrinsics /// are supported, more can be added as needed for real-world use cases. #[derive(Encode, Decode, Clone, PartialEq, Eq, Debug)] -#[codec(crate = scale)] pub enum Request { /// Bond up to the `value` from the sender to self as the controller. Bond { value: u128, payee: RewardAccount }, @@ -93,7 +92,6 @@ pub enum Request { /// /// A "mirror" of the staking pallet's `RewardDestination` enum. #[derive(Encode, Decode, Clone, Copy, PartialEq, Eq, Debug)] -#[codec(crate = scale)] pub enum RewardAccount { /// Pay rewards to the sender's account and increase the amount at stake. Staked, diff --git a/utils/crates-io/src/lib.rs b/utils/crates-io/src/lib.rs index e0b4f4fb71e..ea24b531bee 100644 --- a/utils/crates-io/src/lib.rs +++ b/utils/crates-io/src/lib.rs @@ -49,6 +49,7 @@ pub const SAFE_DEPENDENCIES: &[&str] = &[ "gsdk-codegen", "gsys", "numerated", + "gbuiltin-bls381", ]; /// Required packages with local dependencies. @@ -58,6 +59,8 @@ pub const SAFE_DEPENDENCIES: &[&str] = &[ /// the order. pub const STACKED_DEPENDENCIES: &[&str] = &[ "gprimitives", + "gbuiltin-eth-bridge", + "gbuiltin-staking", "gstd-codegen", "gcore", "gmeta", From 40ae438cf24e19a79766740509dd1d2ebaf03803 Mon Sep 17 00:00:00 2001 From: playX18 <158266309+playX18@users.noreply.github.com> Date: Thu, 24 Oct 2024 00:03:01 +0700 Subject: [PATCH 4/4] refactor(gstd,utils,runtime-interface): get rid of uncecessary clippy lints (#4305) Co-authored-by: StackOverflowExcept1on <109800286+StackOverflowExcept1on@users.noreply.github.com> --- gstd/src/prelude.rs | 2 +- runtime-interface/sandbox/src/detail.rs | 6 ++---- utils/gring/src/keyring.rs | 1 - utils/gring/src/keystore.rs | 1 - 4 files changed, 3 insertions(+), 7 deletions(-) diff --git a/gstd/src/prelude.rs b/gstd/src/prelude.rs index ee7a1ee6a76..6b45123eb5a 100644 --- a/gstd/src/prelude.rs +++ b/gstd/src/prelude.rs @@ -61,7 +61,7 @@ pub mod collections { /// /// [`alloc::ffi`]: ::alloc::ffi pub mod ffi { - pub use ::alloc::ffi::*; + pub use ::alloc::ffi::{CString, FromVecWithNulError, IntoStringError, NulError}; pub use core::ffi::*; } diff --git a/runtime-interface/sandbox/src/detail.rs b/runtime-interface/sandbox/src/detail.rs index 68ca0fd5792..647b0b76d1e 100644 --- a/runtime-interface/sandbox/src/detail.rs +++ b/runtime-interface/sandbox/src/detail.rs @@ -73,7 +73,6 @@ struct SupervisorContext<'a, 'b> { } impl<'a, 'b> sandbox_env::SupervisorContext for SupervisorContext<'a, 'b> { - #[allow(clippy::needless_borrows_for_generic_args)] fn invoke( &mut self, invoke_args_ptr: Pointer, @@ -82,7 +81,7 @@ impl<'a, 'b> sandbox_env::SupervisorContext for SupervisorContext<'a, 'b> { ) -> gear_sandbox_host::error::Result { let mut ret_vals = [Val::null()]; let result = self.dispatch_thunk.call( - &mut self.caller, + &mut *self.caller, &[ Val::I32(u32::from(invoke_args_ptr) as i32), Val::I32(invoke_args_len as i32), @@ -479,7 +478,6 @@ pub fn memory_new(context: &mut dyn FunctionContext, initial: u32, maximum: u32) method_result } -#[allow(clippy::needless_borrows_for_generic_args)] pub fn memory_set( context: &mut dyn FunctionContext, memory_idx: u32, @@ -494,7 +492,7 @@ pub fn memory_set( sp_wasm_interface::with_caller_mut(context, |caller| { trace("memory_set", caller); - let Ok(buffer) = read_memory(&caller, val_ptr, val_len) else { + let Ok(buffer) = read_memory(&mut *caller, val_ptr, val_len) else { method_result = sandbox_env::env::ERR_OUT_OF_BOUNDS; return; }; diff --git a/utils/gring/src/keyring.rs b/utils/gring/src/keyring.rs index ab1caaa0fd9..822bb7e55b2 100644 --- a/utils/gring/src/keyring.rs +++ b/utils/gring/src/keyring.rs @@ -76,7 +76,6 @@ impl Keyring { } /// Update and get the primary key. - #[allow(clippy::assigning_clones)] pub fn primary(&mut self) -> Result { if self.ring.is_empty() { return Err(anyhow!( diff --git a/utils/gring/src/keystore.rs b/utils/gring/src/keystore.rs index 36a3c7bbdd1..a9a499a43b8 100644 --- a/utils/gring/src/keystore.rs +++ b/utils/gring/src/keystore.rs @@ -137,7 +137,6 @@ impl Keystore { } /// Returns self with the given name in meta. - #[allow(clippy::assigning_clones)] pub fn with_name(mut self, name: &str) -> Self { self.meta.name = name.to_owned(); self